A typed language for ML policiesearly access
ML policies you can read as graphs.
Seabiscuit is a small, typed language for models that mix code you can write down with numbers you have to learn. It already runs in production, and it's coming to the public soon.
policy(scan: Cloud) -> (rise: Gaussian[Angle], ok: Bool)optimiser cma_es(sigma0: 0.3) bias = tensor(0°, lower: -2°, upper: 2°) # the phone's tilt error deck = scan |> largest_plane(threshold: 1 cm)side = slice(deck, plane(origin: (0 m, 0 m, 0 m), normal: right), thickness: 5 cm)line = lowess(side, span: 0.5)u0, u1 = line.domaindz = line(u1) - line(u0)rise = atan2(dz, u1 - u0) - bias + noise(0.3°)ok = rise.mean <= 4.76° # a 1:12 rampbias is the only tensor. Every other number is a frozen constant.
Write it like this
Short programs, typed all the way down.
A policy is a typed function. Lengths and angles carry their units, so inches and millimetres mix freely and a missing unit is a compile error.
policy(post: Point, gate: Point, hinge: Length = 3 mm) -> (gap: Length, fits: Bool) gap = horizontal_distance(post, gate) - 2 * hingefits = gap > 36 in # inches and millimetres mix freelyWhy Seabiscuit
Structure you write is structure you don't have to learn.
Often most of an algorithm is something you can already write down: a cross-section, a known noise level, a rule of thumb with units. Seabiscuit lets you write that part as code and spend your data only on what's left.
Glass box
Every node is a pure function with typed inputs and outputs, and every trained number has a name. When an output looks wrong, you can see which step made it.
Small models
With the geometry and the noise written as code, what’s left to learn is a few named numbers, not a network, so it trains on the data you actually have.
Honest numbers
Metrics come from held-out folds, grouped so repeat measurements of one subject never straddle train and validation.
Seabiscuit Cloud
The language is the core. Seabiscuit Cloud runs it for you.
Tooling, training, hosting and integration around Seabiscuit, from the first line to a policy your app calls in production. Available now through early access.
- 01 · WRITE
Write with a live graph
The editor recompiles as you type. The graph redraws beside your code and diagnostics appear inline.
- 02 · TRAIN
Train on your data
Point a run at a folder or a tag. Every run keeps its metrics, plots and the trained values it produced.
- 03 · DEPLOY
Deploy and roll back
Policies live in git. Move the deployment marker to any commit; rolling back restores code and trained values together.
- 04 · CALL
Call it from anywhere
Run deployed policies over the API, or ship the capture app template to collect scans in the field.
IN PRODUCTION
Already a workhorse.
Seabiscuit grew up on a real problem. Equimorphic builds saddle-fitting algorithms for horses from phone scans, and they write and run them in Seabiscuit today. Here's what a member of their development team had to say. Equimorphic has close ties to Seabiscuit, as our founder is now their CTO; see the about page for the story.

“Neigh! The tools provided by Seabiscuit (the tech company, not my fellow horse) have been invaluable during the development of our saddle fitting algorithms. The tools for gathering and managing our 3D point cloud data combined with the blazingly fast iteration speed on policies has allowed us to race our product into early testing faster than we initially thought possible. When we expand into other types of saddles, the new algorithms are looking like they will take days and not weeks to develop.”
— Gerald the Inflatable Horse; R&D Mascot and Saddle Model at Equimorphic; equimorphic.com
Open source
The language will be open source.
We plan to open-source the Seabiscuit language. Join the list and you'll hear first when it's out.
Early access
Want to build on it now?
Seabiscuit Cloud is open to a small group of teams while we get it ready for everyone. Tell us what you're building and we'll get back to you.
