Skip to content
You must be logged in to sponsor SolverForge

Become a sponsor to SolverForge

SolverForge

Constraint programming has a developer experience problem. The solvers are fast but the APIs are hostile. You shouldn't need a PhD to express "employees can't work overlapping shifts."

SolverForge is a constraint solver written in Rust. The goal: write constraints like you write code.

From Zero to Solving in One Command

$ solverforge new --basic/employee-scheduling my-app
$ cd my-app
$ solverforge server

That's it. A scaffolded project with domain model, constraints, sample data, and a dev server — running a release-optimized solver out of the box. Vehicle routing, employee scheduling, maintenance planning: pick a template, start modeling.

Rails proved that a framework's job is to make the first five minutes magical and the next five years productive. SolverForge makes the same bet for constraint programming. Define your domain with derive macros. Express constraints with a fluent stream API. Let the compiler turn it into the fastest thing it knows how to build.

Already in Production

Dr. Fawaz Halwani, pathologist at The Ottawa Hospital, built staff scheduling on SolverForge's Rust core: "I have incorporated SolverForge in my new Rust application for staff scheduling and it's working like a charm, A+."

A constraint solver that a doctor can pick up, build a real scheduling system with, and ship — that's the developer experience we're after.

The Engine

Under the hood, SolverForge is fully monomorphized. No Box<dyn Trait> in hot paths. No vtable lookups during move evaluation. No garbage collector. When you define a constraint, the Rust compiler generates specialized code for your exact domain model — direct function calls all the way down.

At the core is SERIO (Scoring Engine for Real-time Incremental Optimization). Change one variable, SERIO recalculates only the affected constraints. Stack-allocated moves. Arena allocation with O(1) cleanup. Cache-friendly data layouts. The inner loop evaluates hundreds of thousands of candidate moves per second because that's what it takes to find good solutions.

The solver internals require zero-cost abstractions. The user-facing API doesn't have to expose them.

What's Here Now

  • SolverForge — the Rust solver: constraint streams, construction heuristics, local search, benchmarking
  • Quickstarts — employee scheduling, vehicle routing, maintenance planning, order picking, meeting scheduling; will be replaced by SolverForge CLI/Templates
  • SolverForge Maps — routing infrastructure for VRP solvers

What's Next

  • SolverForge CLI — solverforge new, solverforge server, project scaffolding with templates
  • A constraints! macro DSL that reads like a specification and compiles to the same zero-erasure code. Python bindings where lambdas are analyzed at definition time via AST, converted to native expression trees, and never touch the interpreter during solving. Two interfaces, one solver core, no compromises.
  • Full Python bindings via PyO3

Why Sponsor

This is one person building a framework. Every dollar goes to infrastructure (demo hosting, CI/CD) and development time on the core, the bindings and the CLI.

Sponsors buy velocity on a project that already works.

⭐ Star the repos
💬 Share the project
💰 Sponsor the next release

Meet the team

Select a tier

$ a month

Choose a custom amount.