Import your model
Load an NL, LP, or MPS file and solve it in the browser.
Loaded model
Load a file to inspect dimensions before solving.
- Model
- Waiting for a file
Solution variables
| Name | Value |
|---|
Constraints
| Name | Value | Bounds |
|---|
Editor solution
Build the editor model to see variables/constraints.
- Model
- Waiting for build
Variables
| Name | Value |
|---|
Constraints
| Name | Value | Bounds |
|---|
Solver log
Pounce output captured in Worker. Use Pounce options to control detail.
The solver log will appear here.
About
Everything here runs as wasm32-wasip1 in a dedicated Worker. site/static/js/wasi.js exposes only clock, crypto.getRandomValues and stdout; there is no filesystem or network. site/static/oximo-wasm.wasm (optimized with wasm-opt -Oz) is streamed via WebAssembly.instantiateStreaming.
File imports (.nl + .col/.row, .lp, .mps) are parsed by oximo-io::{read_nl,read_lp,read_mps} in the browser and never uploaded. The oximo editor parses variable!/constraint!/objective! (bounds, Bin/Int, 0 <= x <= 10, + - * / ^ pow sin cos exp log abs sqrt) into a Model via crates/oximo-wasm/src/editor.rs.
Solver & autodiff: All models are solved by Pounce. Built with pounce-enzyme on nightly-2026-07-26 (-Zautodiff=Enable, fat-LTO), derivatives are exact via oximo-autodiff. The runtime expression tape is compiled with Tape::compile and differentiated once as eval_tape. Native uses reverse for grad / forward-over-reverse for HVP; on wasm32 this build uses forward-over-forward (autodiff_forward) to avoid a reverse-loop ABI issue (rust#161110), so imported and editor models also get exact Jacobians/Hessian-vector products.