Open source planning software in Rust

Describe your problem → a running solver, today.

Tell your coding agent what has to be decided, what makes a plan invalid, and what makes it good. The solverforge-modeling skill turns that description into a SolverForge app with its domain model, hard and soft constraints, demo data, and an API, web, CLI, or MCP shell, and solves it before handing it back. The model stays in ordinary Rust you can read and change.

Apache-2.0, no account or licence key Scalar and list planning variables Eight worked planning apps

Write constraints like you write code

Readable rules, explicit tradeoffs, real application shapes.

Model shifts, routes, tasks, workers, vehicles, and inventories as ordinary application code. SolverForge keeps rule definitions, score analysis, and solver control close to the domain types your team already understands.

constraints.rs
let required_skill = ConstraintFactory::<Plan, HardSoftDecimalScore>::new()
    .shifts()
    .filter(|shift: &Shift| shift.employee_idx.is_some())
    .join((
        Plan::employees_slice,
        equal_bi(
            |shift: &Shift| shift.employee_idx,
            |employee: &Employee| Some(employee.index),
        ),
    ))
    .filter(|shift: &Shift, employee: &Employee| {
        !employee.skills.contains(&shift.required_skill)
    })
    .penalize(HardSoftDecimalScore::of_hard_scaled(1_000_000))
    .named("Required skill");

Open source implementation

Solver core, app scaffolding, UI controls, and routing helpers you can inspect.

Use cases

Eight planning surfaces you can watch, inspect, and run.

Machine scheduling, warehouse picking, crew rotas, asset readiness, hospital coverage, school timetabling, delivery routing, and field service routing. Each case carries its data shape, its constraints, a narrated walkthrough of the running app, and annotated screenshots of the same retained solve.

Evaluate SolverForge

Everything you need to decide is public.

In practice

"Working like a charm, A+"
Dr. Fawaz Halwani, Pathologist, The Ottawa Hospital