SOPHIA XT
Built

The problem, the decision, and the number that settled it.

Our own tools, models and formats, written the way they would be written in a design note rather than on a product page. Every figure here is traceable to source, a release manifest, or a run somebody executed.

The systems built for customers are at work.

01

SOPHIA CLI

Rust · terminal · shipped

One terminal supervising every coding agent installed on the machine.

The problem

Running several coding agents at once means several terminals, several session stores, and no way to see what any of them did to the working tree until it is already done. Nothing capped how many ran, either.

What we did

A daemon owns every agent process and is the only thing holding state; the board is a view that owns nothing. They speak newline-delimited JSON over a loopback socket with a token. Each agent gets its own git worktree, so two agents cannot write the same file, and every diff is shown before anything reaches a branch. Admission control came out of a measurement rather than a guess: sixteen concurrent agent processes held 3,433 MB, an average of 215 MB each, and each pins a core while its turn runs. On a 16 GB laptop twenty agents is the whole machine, and the symptom is not a slow board, it is a desktop that stops responding.

The release gate is a static scan of the packaged binary. It has caught real leaks; it is not a proof that none remain.

SOPHIA CLI — specification
LanguageRust, no framework
Architecturedaemon owns state · TUI is a view
TransportNDJSON over loopback, token-authed
Isolationone git worktree per agent
Admission controlmeasured at 215 MB per agent process
Agent CLIs detectedClaude, Codex, Gemini, Grok, Kimi, Mercury, Cursor, Aider, OpenCode
Engines without a binaryAPI keys, treated as first-class backends
Key handlingnever argv, never echoed, never printed back
Release gaterefuses to package a binary carrying build-machine paths, internal names or credential-shaped strings
PlatformsWindows, Linux, Android, macOS
02

Constellation · ARBITER

Routing · in production

The part that decides which model gets the work, and shows its reasoning.

The problem

Choosing a backend by hand every time is a guess, and an agent that names a helper out of habit is also a guess. Neither leaves anything to argue with afterwards.

What we did

Three signals score every task against every available lane, and the score vector is printed on the card. An engine whose last probe failed is excluded by name rather than quietly outranked, so a routing decision never hides a dead backend. When two lanes land within a hair of each other it refuses to commit and escalates to a planner instead of breaking the tie arbitrarily.

Constellation · ARBITER — specification
Registered lanes6
Decision recordscore vector printed per card
Failed backendsexcluded by name, not by ranking
Tightest observed refusalunpublished; the page states the rule, not a margin
Fallbackescalate to a planner rather than guess
03

SophiaBuilds

Agent orchestration · v1 complete

Agents that open pull requests. They do not merge.

The problem

An agent with a merge call in its path will eventually use it, and the interesting failures are the ones nobody reviewed.

What we did

A ticket board where each card gets its own checkout and its own agent. A verifier lane can fail a ticket and block the merge. No agent has a merge call anywhere in its path — a person merges, by name, and the name goes into the commit.

SophiaBuilds — specification
Tickets driven through19
Completed agent runs10
Concurrency observed3 agents, 250 s
Merge authorityhuman only, recorded in the commit
Statusv1 complete, access by invite
04

Sophia Memory

Agent memory · running

What the agents remember between tickets, and where each fact came from.

The problem

An agent that recalls a fact without its source is asking to be trusted. Stuffing the whole history back into the context instead is expensive and still loses the middle of it.

What we did

Long-term memory shared across runs with provenance attached, so a recalled fact arrives with where it came from and can be checked. It is measurable rather than asserted: routing confidence on comparable tickets rose as the corpus filled.

The confidence figures are from one corpus filling over one period of use. They are a trend on our own work, not a benchmark.

Sophia Memory — specification
Records / shards58 / 7
Routing confidence, early to late0.591 to 0.992
Provenanceon every recall
05

Cassandra

Language models · open release

Masked-diffusion language models, with the experiment log published.

The problem

A lab that publishes only the runs that worked is publishing a brochure. The failures are the part that tells you whether the method holds.

What we did

Anchor-token masking, written up with the method and the experiment log rather than a summary. The result worth naming is a generalisation lift on data the model never trained on, with the mechanism causally tested by ablation rather than inferred from the score.

Output quality still needs more training and structured evaluation before production use. The repository says so too.

Cassandra — specification
Out-of-distribution lift1.67×, 95% interval [1.51, 1.85]
Mechanismcausally tested via V/O ablation
Published generations504
Open releaseCassandra T1, Apache-2.0
Edge model1.33B parameters, 28 layers
06

LTMi-XT and lens-xt

Open formats and runtime · Apache-2.0

A retrieval format and a spec language for deterministic generation.

The problem

Retrieval that cannot say why a passage came back, and generation that cannot guarantee a required token survives, are both fine until something depends on them.

What we did

LTMi-XT indexes on a hash-derived topological lattice, so a lookup is positional rather than a similarity guess. lens-xt is a declarative spec language for token-level deterministic generation — you write down what must be preserved and the runtime preserves it.

LTMi-XT and lens-xt — specification
LTMi-XT indexingBLAKE2b hash-derived lattice
lens-xt suite256 passed, 2 skipped, 1 failed, at commit 01e5eed
Installpip install lens-xt
LicenceApache-2.0, both
07

Paper Front

Real-time strategy game · v0.47

A paper-and-ink RTS, written without a game engine. Core game by Astra; the web integration, packaging and release path are ours.

The problem

Not a problem anybody brought us. It is where the rendering, animation and determinism work gets pushed harder than a business system would ever push it.

What we did

Plain browser JavaScript, no engine and no framework, wrapped for Android and Windows. A dedicated 60 Hz fixed-step simulation with the renderer kept separate, so the same match runs identically on every platform. Three factions with their own drawn architecture and vehicles, a GPU post pass that can be switched off, and a signed Ed25519 release feed the installed game updates itself from. Co-op runs host-authoritative over LAN with no account, or through a small relay that only passes messages.

Browser, Android and Windows builds are published and update themselves. Physical-phone performance is unmeasured, there is no public internet relay yet, and player-versus-player needs a server that runs the simulation, which is written up and not built.

Paper Front — specification
Version0.47.0 · protocol 47
CreditCore game by Astra. Web integration, packaging, release and deployment by SOPHIA XT
Enginenone · plain browser JavaScript
Campaign18 territories, turn-based
Battlesreal time
Regression suites9 in the root test run, plus per-release construction, graphics and native checks
Multiplayertwo-player co-op: LAN with a PIN, or internet rooms through a relay
Not on this page

Things that exist but are not finished enough to write up.

Internal prototypes, half-migrated experiments, and the parts of the stack that work on one machine and nowhere else. They live on the roadmap and in the open lab stream rather than here, because a specification sheet for something that has run twice is a work of fiction.

no figure without a source caveats in the same type size