oxfordcontrol/Clarabel.jl

Clarabel.jl: Interior-point solver for convex conic optimisation problems in Julia.

Julia

285

870 commits

updated Apr 29, 2026

See the code

README

Clarabel.jl logo

Interior Point Conic Optimization for Julia

FeaturesInstallationLicenseDocumentation

Clarabel.jl is a Julia implementation of an interior point numerical solver for convex optimization problems using a novel homogeneous embedding. Clarabel.jl solves the following problem:

$$ \begin{array}{r} \text{minimize} & \frac{1}{2}x^T P x + q^T x\\[2ex] \text{subject to} & Ax + s = b \\[1ex] & s \in \mathcal{K} \end{array} $$

with decision variables $x \in \mathbb{R}^n$, $s \in \mathbb{R}^m$ and data matrices $P=P^\top \succeq 0$, $q \in \mathbb{R}^n$, $A \in \mathbb{R}^{m \times n}$, and $b \in \mathbb{R}^m$. The convex set $\mathcal{K}$ is a composition of convex cones.

For more information see the Clarabel Documentation (stable | dev).

Clarabel is also available in a Rust implementation with additional language interfaces. See here.

Features

  • Versatile: Clarabel.jl solves linear programs (LPs), quadratic programs (QPs), second-order cone programs (SOCPs) and semidefinite programs (SDPs). It also solves problems with exponential, power cone and generalized power cone constraints.
  • Quadratic objectives: Unlike interior point solvers based on the standard homogeneous self-dual embedding (HSDE), Clarabel.jl handles quadratic objectives without requiring any epigraphical reformulation of the objective. It can therefore be significantly faster than other HSDE-based solvers for problems with quadratic objective functions.
  • Infeasibility detection: Infeasible problems are detected using a homogeneous embedding technique.
  • JuMP / Convex.jl support: We provide an interface to MathOptInterface (MOI), which allows you to describe your problem in JuMP and Convex.jl.
  • Arbitrary precision types: You can solve problems with any floating point precision, for example, Float32 or Julia's BigFloat type, using either the native interface, or via MathOptInterface / Convex.jl.
  • Open Source: Our code is available on GitHub and distributed under the Apache 2.0 License

Installation

  • Clarabel.jl can be added via the Julia package manager (type ]): pkg> add Clarabel

Citing

@misc{Clarabel_2024,
      title={Clarabel: An interior-point solver for conic programs with quadratic objectives}, 
      author={Paul J. Goulart and Yuwen Chen},
      year={2024},
      eprint={2405.12762},
      archivePrefix={arXiv},
      primaryClass={math.OC}
}

License 🔍

This project is licensed under the Apache License 2.0 - see the LICENSE.md file for details.

conic-optimization
conic-programs
convex-optimization
interior-point-method
julia-language
linear-programming
optimization
optimization-algorithms
quadratic-programming
semidefinite-programming

Contributors

goulart-paul

720 commits

yuwenchen95

138 commits

blegat

4 commits

odow

2 commits

oxfordcontrol/Clarabel.jl

Clarabel.jl: Interior-point solver for convex conic optimisation problems in Julia.

Julia

285

870 commits

updated Apr 29, 2026

See the code

README

Clarabel.jl logo

Interior Point Conic Optimization for Julia

FeaturesInstallationLicenseDocumentation

Clarabel.jl is a Julia implementation of an interior point numerical solver for convex optimization problems using a novel homogeneous embedding. Clarabel.jl solves the following problem:

$$ \begin{array}{r} \text{minimize} & \frac{1}{2}x^T P x + q^T x\\[2ex] \text{subject to} & Ax + s = b \\[1ex] & s \in \mathcal{K} \end{array} $$

with decision variables $x \in \mathbb{R}^n$, $s \in \mathbb{R}^m$ and data matrices $P=P^\top \succeq 0$, $q \in \mathbb{R}^n$, $A \in \mathbb{R}^{m \times n}$, and $b \in \mathbb{R}^m$. The convex set $\mathcal{K}$ is a composition of convex cones.

For more information see the Clarabel Documentation (stable | dev).

Clarabel is also available in a Rust implementation with additional language interfaces. See here.

Features

  • Versatile: Clarabel.jl solves linear programs (LPs), quadratic programs (QPs), second-order cone programs (SOCPs) and semidefinite programs (SDPs). It also solves problems with exponential, power cone and generalized power cone constraints.
  • Quadratic objectives: Unlike interior point solvers based on the standard homogeneous self-dual embedding (HSDE), Clarabel.jl handles quadratic objectives without requiring any epigraphical reformulation of the objective. It can therefore be significantly faster than other HSDE-based solvers for problems with quadratic objective functions.
  • Infeasibility detection: Infeasible problems are detected using a homogeneous embedding technique.
  • JuMP / Convex.jl support: We provide an interface to MathOptInterface (MOI), which allows you to describe your problem in JuMP and Convex.jl.
  • Arbitrary precision types: You can solve problems with any floating point precision, for example, Float32 or Julia's BigFloat type, using either the native interface, or via MathOptInterface / Convex.jl.
  • Open Source: Our code is available on GitHub and distributed under the Apache 2.0 License

Installation

  • Clarabel.jl can be added via the Julia package manager (type ]): pkg> add Clarabel

Citing

@misc{Clarabel_2024,
      title={Clarabel: An interior-point solver for conic programs with quadratic objectives}, 
      author={Paul J. Goulart and Yuwen Chen},
      year={2024},
      eprint={2405.12762},
      archivePrefix={arXiv},
      primaryClass={math.OC}
}

License 🔍

This project is licensed under the Apache License 2.0 - see the LICENSE.md file for details.

conic-optimization
conic-programs
convex-optimization
interior-point-method
julia-language
linear-programming
optimization
optimization-algorithms
quadratic-programming
semidefinite-programming

Contributors

goulart-paul

720 commits

yuwenchen95

138 commits

blegat

4 commits

odow

2 commits

Languages

Julia

100.0%