Why
A result you cannot run is a claim
Publishing the paper and publishing the code are the same act as far as we are concerned. One says what we found; the other lets you check it and build on it without asking us first.
The same code we run ourselves
The methods that survive contact with a real problem end up as tools, and we release every one of them in the open, free to read, use and build on. These are the tools running behind our own products, not a cut-down version of them.
Flama
The framework everything else we build is served through: REST APIs, predictive model serving and generative inference behind one type-driven, async-first programming model, rather than three architectures running next to each other.
One programming model
Handler parameters resolve from their type annotations at startup, so the same architecture covers a REST endpoint, a served model and an inference call.
Portable models
A single .flm file packages a scikit-learn, TensorFlow, PyTorch or Transformers model with its metadata, and serves it with no handler to write.
Multi-backend LLMs
vLLM on Linux with CUDA, MLX on Apple Silicon, behind OpenAI, Anthropic, Ollama and a native streaming protocol through one shared codec.
CRUD from a schema
A SQLAlchemy table and a schema class become REST endpoints, backed by the Repository and Unit of Work patterns.
Rust-accelerated core
Routing, JSON encoding, compression and parsing compiled through Maturin, under an otherwise ordinary Python application.
MCP built in
Any application becomes a Model Context Protocol server over JSON-RPC 2.0, without a second process to run.