silicon omni

We keep the conversation.
The three of them take turns.

We drive Claude Code, Codex and Antigravity through one session — from Python, Rust, or a terminal — on the subscriptions you already have. Say the work is worth more and the same chat finishes on another company's model, knowing everything said before it.

documentation
$1cost per task →intelligence →109764310

Artificial Analysis Intelligence Index v4.322 scored on it · 8 where nothing is both better and cheaper

28settings we can run — 13 models at the efforts each takes
6words that answer for you, chosen by hand
3command lines, one session
0Python runtime dependencies
1file holds the conversation, whoever answers it
01the break of gaugeof 8

Each of the three keeps its own memory.

Pick a good one and you have picked its models, its rate limits and its bad afternoons with it. Leaving later costs you the integration and the conversation you were in the middle of. The second one is the expensive part, and it is the one nobody quotes you for.

We keep the conversation in a file of our own. The three become engines, and you can change an engine while it runs.

Porters transferring freight between broad-gauge and standard-gauge trains at Gloucester, 1846
The Break of Gauge at Gloucester, wood engraving, Illustrated London News, 6 June 1846. Wikimedia Commons. Seven foot and a quarter inch on one side of the shed, four foot eight and a half on the other, and a hundred men in between moving every crate across by hand. Brunel had assured the Bristol company that shifting a whole load from one company's waggon to the other's would need only a very simple arrangement. The engraving is the arrangement.
claude-code-clione long-lived process. a turn is one JSON line on stdin
claude -p --output-format stream-json --input-format stream-json

Model and effort go down the same stdin control channel the turns do, so the process stays up while the dial moves.

codex-app-serverJSON-RPC over newline-delimited JSON. turn/start, or turn/steer into a turn already running
codex app-server --stdio

CODEX_HOME is pointed at a jail. Inside it: a symlink to your real auth.json, and one near-empty config. That is the whole of what it loads.

antigravity-clithe empty --print goes last, because it takes a value
agy --output-format stream-json --input-format stream-json --print ""

agy resumes its own conversation by id, so consecutive turns cost nothing extra. Only what it missed while another provider answered rides in the front of the next message.

chat.send("what changed in this repo today?")

Three grammars, drawn here at three gauges. One takes flags and JSON lines on stdin. One takes JSON-RPC over a socket. One takes its history inside the front of the next message. Once one is active, we keep its process and native conversation open across consecutive turns. A switch may cost an activation; the arriving provider gets the same story in the dialect it accepts.

Engraving: masons laying a wall on the sea floor, air hoses running up through the waterline to a crew working in the open above
Fig. 428 — Constructions sous-marines, Louis Figuier, Les Merveilles de la Science, 1870. Wikimedia Commons. Every man down there breathes through his own line. The wall goes up all the same.
02what you writeof 8

One session, and the logins already on your machine.

We offer the providers whose command line is installed and signed in. That is the list you get.

Python, Rust and terminal clients attach to the same daemon. send from any client, intelligence to change what answers, detach to leave it warm, and stop to end the shared session.

python
from omni import Inference, Event

chat = Inference.load_or_create_session("triage")
chat.intelligence(7)

@chat.on_event
def handle(event):
    if event.type == Event.TEXT:
        print(event.text)

chat.start()
chat.send("what changed in this repo today?")
A diagram naming every part of a single piece of metal type
The parts of one piece of type, Francisco Bauer, Conocimientos fundamentales para el aprendiz cajista, Barcelona, 1921. Wikimedia Commons. Ojo, cuerpo, cran, línea: an apprentice was expected to know every part by name before he was allowed to set a word. Everything ever printed is this object, a few thousand times over, in an order somebody chose.
03one integerof 8

Every line gets a number, and the number only goes up.

The session is a log we append to. Every line carries a number, and the number runs on through every provider the conversation has passed through. A second, smaller file holds how far up that log each one has read.

Two files, and the rest follows. A provider arriving hears what it missed. A provider coming back resumes its own session and hears the rest.

~/.omni/sessions/nightly.jsonl
codex-app-serverread to 18claude-code-cliread to 12
  1. 00configlaunch · level 10
  2. 01startWhich test in this repo is slowest?
  3. 02thinkingthe model is reasoning. we record that it did.
  4. 03tool.call[Bash: pytest --durations=3]
  5. 04tool.result[Bash result: 3 slowest durations]
  6. 05texttest_conversation_survives_a_switch — 41.2s.
  7. 06endturn complete
  8. 07configintelligence(4)
  9. 08switchthe conversation moves to claude-code-clihanded 0–7 · 8 events, each one once
  10. 09startWhy is that one slow?
  11. 10thinkingthe model is reasoning. we record that it did.
  12. 11textIt starts two CLIs and waits out both cold starts before the first token.
  13. 12endturn complete
  14. 13configintelligence(10)
  15. 14switchback to codex-app-serverhanded 7–13 · resumes its own session, already holds 0–6
  16. 15startFix it. Start them in parallel.
  17. 16tool.call[Edit: tests/conftest.py]
  18. 17textBoth runners start together now. 41.2s → 18.9s.
  19. 18endturn complete
seq 18 of 18

Watch the second column fill. On the way out, the arriving provider is handed eight lines. Coming back, the first one is handed seven of the fourteen the file now holds, because the first six are already inside its own session and it is resuming that.

Benedict gave the kitchen a week at a time, and gave the changeover to both men at once: the server going off washes up and returns the utensils to the cellarer, who hands them to the server coming on, in order that he may know what he gives out and what he receives back. The second file is the cellarer's list.

A Hollerith punched card from 1895, its columns printed with the digits nought to nine
Hollerith punched card, 1895. Library of Congress, via Wikimedia Commons. Each column is printed nought to nine, and the hole says which. A number you can drop on the floor and still put back in order.
A page from the log of HMS Amphitrite for 13 August 1914, hours ruled down the margin
Log of HMS Amphitrite, Thursday 13 August 1914, 1914. Royal Navy, digitised by the Old Weather project. The hours are ruled down the margin before the day happens. An hour with a blank against it still counts as an hour.
04the relayof 8

We tell the next one what it missed.

A real run, transcribed. One fact each to three companies' models, then the question put back to the first. Each of them heard its own line once.

claude-code-cliclaude-sonnet-5

Remember: fact one is RUBY-1.

OK

codex-app-servergpt-5.4-miniswitched

Remember: fact two is JADE-2.

OK

antigravity-cligemini-3.5-flash-lowswitched

Remember: fact three is ONYX-3.

OK

claudeclaude-sonnet-5switched back

List all three facts.

RUBY-1,JADE-2,ONYX-3

one of those three was told to this model. the other two were told to somebody else's.

Operators at a Bell System international switchboard, patching calls by hand
Women working at a Bell System international switchboard, c. 1935–45. U.S. National Archives, via Wikimedia Commons. LONDON. PARIS. BERMUDA. BUENOS AIRES. SHIP-TO-SHORE. For eighty years the network between two exchanges was a woman holding both ends of it, and she is the part the diagrams leave out.

A tool that belongs to somebody else arrives as text that reads as what happened — [GoogleSearch: "kite festivals"]. The structured original stays in the log, so going back to Gemini resumes Gemini's own session, which holds it.

When a bob is called, the bells in fourth and fifth place ring on as if no calling had been made. Coming back, so does the provider.

A 1176 charter of Philip of Alsace with his wax seal hanging from a parchment tag
Charter of Philip of Alsace, Count of Flanders, with his pendant seal, 1176. The Metropolitan Museum of Art. The words copy. The seal stays where it was pressed. Reasoning is the seal, which is why we record that the model thought and keep the thought out of the file.
05the askof 8

Say what the work is. We say what runs it.

One word for the kind of work, and the answer comes back — a shortlist somebody chose, best first, and the first vendor on it you are signed into wins.

If you would rather say a number, say a number. If you already know the model, name it and we will pass it through untouched.

write and change code
codex-app-servergpt-6-astrahigh
codex app-server --stdio · turn/start { model: "gpt-6-astra", effort: "high" }

in order: codex-app-server › claude-code-cli › antigravity-cli

We tried to work this out arithmetically first — score, cost and time, normalised and weighted, one number out the other end. It kept producing answers that were defensible and wrong: three models within one percent of each other and a hundred Elo apart, and a winner that moved when a constant did. Ranking is not judgement, so the judgement is written down instead.

Ask for code and today you get gpt-6-astra high on codex-app-server. Sign out of codex-app-server and it walks one place down the list, which is the whole cost of losing a vendor, said plainly.

Two of the three run hot on request. Codex takes service_tier; Claude Code has a fast mode on its largest models. Antigravity has no such thing, so asking for it there is ignored rather than refused.

The number still works, and it is still the left edge of a board: a model earns a rung when nothing else is both better and cheaper. There are 10 of them on GDPval-AA v2 today. See the whole board and turn a provider off.

Other people's measurements decide the number. If a board mismeasures a model, or stops publishing, or scores it on work unlike yours, we are wrong in exactly that way and we carry on. They are named, with their methods and their error bars linked.

A bee hunter gets his straight line out of the eighth or tenth flight. The first few point somewhere else.

06the seamof 8

We wait for the turn to end.

Intelligence, providers, prompts and session swaps are written down the moment you ask for them, and applied at the next turn boundary, once the running tool has finished.

A message is the exception, and on purpose. Sent while a turn is running, it goes into that turn.

If, at any time, the officer in charge of the navigational watch is to be relieved when a manoeuvre or other action to avoid any hazard is taking place, the relief of that officer shall be deferred until such action has been completed.

STCW Code, Section A-VIII/2, Part 4-1, paragraph 23 · the Manila amendments, 2010 · International Maritime Organization

A ship under pilotage separates two things that software usually confuses. The pilot has the conduct of the vessel; the master stays in command. The provider has conduct of the turn — it decides what to say and which tool to reach for. We have command: the log, the counter, and the moment at which anything is allowed to change.

turn 4
thinkingBash: pytesttext
boundary
arrives

chat.send("also check the fixtures") injected. It lands where you sent it, inside the turn already running. send returns after the daemon has durably accepted it, without waiting for model output, and is safe from any thread, including from inside an event handler.

arrives

chat.intelligence(9) held. Written down the moment you ask, applied at the seam once the running tool has finished. Providers, prompts and session swaps wait in the same queue.

Joseph Pennell's 1912 lithograph of the guard gate at Gatun Lock, standing closed in a dry chamber
The Guard Gate, Gatun, crayon lithograph, Joseph Pennell, 1912. Boston Public Library, via Wikimedia Commons. Drawn while the chamber was still dry, so the gate can be seen at rest. A ship waits between two shut gates while the water finds its new level. Everyone who has tried it another way has stopped.
07the refusalsof 8

Five things we refuse.

Five, with the mechanism for each.

Carry reasoning across a switch.

A vendor signs its reasoning, so it replays only where it was made. We record that the model thought, and drop the thought — out of your logs as well.

Define tools.

We watch what the command line already exposes.

Silence a project's own rules.

agy reads a GEMINI.md or an AGENTS.md out of the directory it runs in and offers no way to stop it. We say so on the turn rather than call the chat quiet.

Guess a benchmark number.

A model a board has measured is a candidate on that board. One it has yet to measure stays on the list and out of the answer.

Ship a model list.

A list inside a release goes stale. With the registry unreachable and the cache empty, we raise.

An 1878 quarantine notice from the Cape Girardeau Board of Health, forbidding any vessel to land
Quarantine notice, Cape Girardeau, 8 October 1878. Missouri History Museum. Ordered by the Board of Health: no steamboat to land freight or passengers within five miles of the town. A notice is useful in exact proportion to how precisely it names what it refuses.
08the databaseof 8

The list is one text file.

It matters whose file it is. The shipowners kept one register of ships and the underwriters kept another: the Red Book and the Green Book, 1800 to 1833, grading the same hulls, each believed only by the party that had printed it. Both came to the verge of bankruptcy. Merged 1834, into one body neither of them owned. That is the arrangement that survived. A routing table maintained by any one of these three vendors would be the Red Book.

We ask this site for a finished map from level to model, and hand two strings to a command line. Every model name on your machine arrived over the wire this morning.

The map comes out of one JSON file in a public repository. Editing it and committing is the publish. Git does what a table would have done: history, blame, review, rollback.

Which also means somebody's commit is your routing table. That is the trade. What you get for it is a diff you can read, a name against every change, and OMNI_REGISTRY if you would rather point at your own.

  1. models.jsonone file in a public repo. edit it, commit it
  2. raw.githubusercontentread at request time, held for a minute
  3. /choose.jsona word, a number, or a model you name
  4. ~/.omni/cachekept an hour. a stale answer still runs offline
  5. claude -p --model … --effort maxtwo strings, handed over as they are
The Price Act broadside of 1777, fixing the price of every commodity in the town of Ipswich
The Price Act, or, The List of the Prices now in Force in the Town of Ipswich, printed 10 February 1777. Digital Commonwealth / Phillips Library. Every commodity in the town, priced by ordinance and set in display caps. It was wrong by March, and any model list baked into a release is this broadside.
A dense band of red-winged blackbirds along the horizon, its upper edge rolling
Nobody drew the top edge of that flock, and it is the sharpest line in the photograph. Every frontier on this site is made the same way.

One pip install, and one number.