onto — a living compiler of ontologies
A program is stored not as code, but as a genome: entities, rules with executable bodies, contracts, invariants. Code is the phenotype: printed into dialects (Go, Python), proven by the court (SMT), living under a warden, and regrown from scratch. A change in behavior without confirmation is a question with an executable counterexample, not a silent merge.
uv tool install ontogen # -> global `onto`
onto validate genomes/hotel.yaml # typecheck the genome
onto court genomes/hotel.yaml # SMT court: contracts proven, mutants distinguished
onto serve genomes/hotel.yaml --port 8090 --data ./data [--store sqlite]
onto warden genomes/hotel.yaml ... # daemon: watch -> gates -> molt -> monitors
onto materialize genomes/hotel.yaml --dialect go-stdlib # print the phenotype
onto mcp genomes/hotel.yaml # a mouth for the LLM (propose = the only write)
Models: bring your own (any OpenAI-compatible provider)
Configure providers and per-task model ladders in .onto/config.toml —
OpenRouter, OpenAI, Groq, Together, DeepSeek, a local Ollama/vLLM, anything
OpenAI-compatible. Name a known provider and give only a key (base_url is a
preset); reference models as provider:model or bare. Keys come from
${ENV} or @keyfile, never hardcoded. onto models shows the registry.
[default]
provider = "openrouter"
[provider.openrouter]
api_key = "${OPENROUTER_API_KEY}"
[provider.local]
base_url = "http://localhost:11434/v1" # Ollama
api_key = "ollama"
[ladders]
skills = ["qwen/qwen3-coder", "qwen/qwen3-coder-plus"]
nl = ["anthropic/claude-sonnet-4.5", "local:qwen2.5-coder"]
Quickstart (zero machine)
curl -LsSf https://astral.sh/uv/install.sh | sh # 1. uv (brings its own Python)
uv tool install ontogen # 2. the engine, isolated
onto init # 3. couple this project + harness
# -> .onto/ + genome/ + MCP registration + edit-guard hook + skill
onto court genome/genome.yaml # prove (ALL PROVED)
onto serve genome/genome.yaml --data .onto/data # live organism from second zero
The harness (Claude Code) sees the MCP server immediately; it changes
behavior only through propose (checkers + SMT court + semantic diff), and
a hook blocks any direct edit of the genome or the printed phenotype.
Dialect toolchains (e.g. Go/JVM) are pulled lazily, only at materialize.
Status: 1.3.0 — the U1-U8 constitution is closed, IR v1.0 is frozen (D72)
End-to-end scenario (IDEAL, works)
A natural-language product description -> nlfront builds a genome+acceptance -> the COURT proves
-> the organism lives (warden timers, /admin, /list, /q?params, webhooks)
-> any language is grown by the model (growdialect). Exams: exams/fnl.py,
exams/fideal.py, exams/fgrow.py.
Where to look
| you need | read |
|---|---|
| HOW any software is developed under this model | docs/design/MODEL.md — the method's constitution |
| to run an organism (features, operation) | docs/OPERATOR.md + onto explain <root> <entity> |
| engine development | CLAUDE.md -> docs/log/PLAN.md -> docs/log/JOURNAL.md |
| architecture and decisions | docs/design/SPEC.md, docs/log/DECISIONS.md (D1–D87) |
| what we don't do and why | docs/design/NOT.md, docs/design/SCARS.md (v0 scars), docs/design/UNEXPRESSIBLE.md |
| visual diagram | docs/anatomy.html |
What the exams have proven (exams/, all green)
the organism lives via an interpreter without code generation; one judge is green on
interpreter+Go+Python; contracts are proven (COURT), 21/21 mutants
distinguished, an equivalent mutant recognized; gene composition (payments in three
domains byte-for-byte); metabolism by measured heat with failure-with-arithmetic;
warden: molt in 0.3s, migration of 30k live events by functor, REVOKE of rights;
live CEGIS with an SLM (~$0.001/skill); a membrane for others' organisms (drift ->
trust revocation); 25k ev/s ingest, p99 1.8ms, kill -9 -> start from snapshot
0.01s; jsonl|sqlite store with a byte-identical fold. Running the whole battery:
tools/check.sh.
Status: the engine is built and delivered exam by exam (see docs/log/PLAN.md); open —
calendar operation and the external operator (F7).
Metadata
Release files for ontogen 1.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ontogen-1.6.0.tar.gz | 524.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ontogen-1.6.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 739.0 kB
Release files / ontogen-1.6.0.tar.gz
| Download URL | ontogen-1.6.0.tar.gz |
|---|---|
| Size | 524.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
350efc251d85010ef9fd0a2c806c84488f1ff425faa513b7da46557b07674ea9
|
|
BLAKE2b-256 checksum How to use checksums |
8e452f637d256b4a467eae9826642b5f75f4825a7348d544c6c7764606a5da4d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / ontogen-1.6.0-py3-none-any.whl
| Download URL | ontogen-1.6.0-py3-none-any.whl |
|---|---|
| Size | 214.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d6846724aa8de139fc81f1b67081b1aa64ef80045f19a457e01246dc57c1d350
|
|
BLAKE2b-256 checksum How to use checksums |
a0d5bd45341f31c454fbf92b9b954e7f91163c4390c668f82b1ba7e93807e331
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.3 {"installer":{"name":"uv","version":"0.12.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|