From mathematical model to decision-ready evidence.

Doruk is a self-hosted mathematical optimization studio for building, validating, versioning, running, monitoring, comparing and reporting optimization models — without turning your workflow into a pile of scripts.

Reproducible by design Private by default Open solver ecosystem
production-plan / v17 LIVE
ProblemNLP
SolverIPOPT
Version8a3f…d91c
OBJECTIVE
min   Σp,t cp,txp,t + Σt htIt
Convergence00:12.84
Validated Versioned Traceable
kg ↔ N ↔ m/s²
SHA-256
01One workspace from model to report
02Immutable runs
03Self-hosted for sensitive models
04Validation before solver time
Complete workflow

Optimization is more than calling a solver.

Doruk connects model authoring, structural validation, exact versioning, background execution, live telemetry and deterministic reporting in one traceable workflow.

01
ƒ(x)

Build

Define variables, parameters, objectives, constraints, units and dimensions through guided forms or structured JSON.

02

Validate

Catch shape, indexing, bounds, units, expression and solver compatibility errors before execution.

03
#

Version

Publish immutable, SHA-256 content-addressed model versions so every run has an exact provenance trail.

04

Run

Queue long-running optimization jobs asynchronously, cancel them safely and retry without losing history.

05

Monitor

Inspect objective traces, solver metrics, constraint violations, elapsed time, logs and stream health.

06
Δ

Compare & report

Compare runs side by side and export decision-ready JSON, CSV, HTML and printable reports.

Inside the studio

The whole workflow, on screen.

Author a model, validate it, watch it converge and read the generated report — captured from a real Doruk instance running the Rosenbrock and Himmelblau models.

Animated walkthrough of Doruk: authoring a model, validating it, watching the run converge, and reading the report.
End-to-end walkthroughTask Builder → validation → Live Monitor → Solution Notebook, in one pass.
Model basicsName the model and pick its problem class before anything else.
Variables & parametersDeclare shapes, bounds, domains and units in one table.
ObjectiveDirection plus a restricted expression — no arbitrary code.
ValidationShapes, units, expressions and solver compatibility, before solver time.
JSON editorSwitch between the guided form and the raw specification at any point.
Import dataLoad parameters from CSV or JSON, with a preview of additions and skips.
Bulk valuesPaste or load whole vectors instead of filling cells one by one.
MultistartSample several starting points with a fixed seed for reproducibility.
Mixed-integer controlsSolver options appear contextually once the model needs them.
Live MonitorIterations stream in over a WebSocket, with per-iteration inspection.
Log-scale convergenceSwitch scales to read the tail of a converging objective.
Finished runsEvery completed run stays addressable, grouped by folder and task.
Solution NotebookA report derived from the run's stored evidence — exportable as HTML, CSV, JSON.
Compare pickerChoose any other finished run as the baseline.
Run comparisonObjectives, solutions and solver metrics diffed side by side.
Correctness before compute

A model can be mathematically valid and still be physically wrong.

Doruk validates dimensions and units across expressions, converts compatible quantities to canonical solver values and preserves display units for reporting.

force = mass * accelerationN
×distance = speed + timeunit mismatch
Safe mathematical authoring

Expressive models without arbitrary code execution.

The restricted expression language supports arithmetic, indexing, slicing, matrix operations, common functions and aggregations while rejecting imports, attributes and unknown calls.

ExpressionRendered
sum(cost[i] * x[i], i) + penalty * slack
Σ cᵢxᵢ + λs
Solver ecosystem

Use the right solver for the problem class.

Doruk exposes solver controls contextually, so the options you see match the problem class the model actually declares.

Problem classPrimary solver
NLPIPOPT
SQPSQP
QPqpOASES
MINLP / MIQPBonmin
Benchmark problems that look like real work

Start from a serious optimization problem, not a toy function.

Alongside the standard test functions, Doruk ships models converted from the GAMS model library — reusable, business-facing benchmarks you can run on a fresh install.

QP

Portfolio optimization

Risk-return allocation with bounds, covariance and investment constraints.

LP / MILP

Production planning

Capacity, inventory, demand, setup and product-mix decisions.

MILP

Facility location

Choose sites and assign demand while balancing fixed and transport costs.

LP

Transportation

Move goods from supply nodes to demand nodes at minimum feasible cost.

LP / NLP

Economic dispatch

Allocate generation across units subject to demand and operating limits.

NLP

Heat exchanger networks

Simultaneous synthesis of stream matches, areas and utility loads.

Private infrastructure

Keep models, parameters and results inside your environment.

Doruk is designed for self-hosting, making it suitable for research, engineering and regulated environments where optimization models and operational data should not leave organizational boundaries.

DORUK
Web UI
API
Workers
Solvers
Artifacts
Database
Optimization, operationalized

Build the model. Preserve the evidence.

Doruk turns optimization from isolated scripts and solver logs into a validated, reproducible and inspectable computational workflow.

Back to the summit