Login
What trunk did, and how ocx2 does it on protocol v1
Login

Trunk here is the ocx release people and agents still use, read at its tip (a46d73f5bf) for slices-parity.md on 2026-10-06. ocx2 is to reach what it did, with protocol v1 underneath (protocol-v1.md), then retire it. On v1 most of what trunk did as code is a run's data: a pattern, by convention the wiki page run/NAME, holds how an agent or a check runs, and the protocol starts it, feeds it and ends it. So each row says whether ocx2 needs a tool, a protocol piece, or only a pattern.

Status: works (a spec shows it), pattern (works once someone writes the data; nothing to build), missing (what to build is named), or not copied (with why).

People and agents at work

Trunk On ocx2 Status
An agent answers each post on a thread or ticket, one turn at a time (task --write, --wait) a session run that hears the thread; each post reaches the agent's standard input. A turn-per-post agent, such as claude -p or codex exec, has each delivery start a process of its own: deliveries: start, after a process for the run itself works
An agent in one long session a person can watch and steer (remote control) a session run whose command turns on remote control; a person joining it at the host needs terminal and attach, refused today missing: terminal, attach
How Claude or Codex is run: program, arguments, sign-in, environment (src/ocx/runners/) the patterns run/claude and run/codex, in the layered format pattern: run/claude written, not yet tried
A local model, such as Gemma through Ollama, doing a task: OCX's native agent, a bounded tool loop that tolerates lower reasoning (trunk's Ollama loop passed 5 of 8 trials) OCX's own program, named as a run's command: the loop of PLAN.md, "Work-unit and tool contract" (inspect, read, patch, verify, finish), each exchange with the model posted where the run is before the next missing: the native agent
A bounded subtask handed to a local model under its own login (ocx.delegate) a run of the native agent, sent for the delegating agent missing: after the native agent
An agent posts its answer (task --write) ocx2 post from the run's clone, as its run user works
What waits on an agent, and where a record stands (task --status, the console's Needs you) a session is given each post as it arrives; a run's started and ended are on its thread works for sessions; no list of runs (below)
Only verified work committed, with Intent, Expression and Demonstrates the agent's own check-in from its clone, as its run user; what counts is its verdicts pattern: the agent's instructions

Review and CI

Trunk On ocx2 Status
An audited verdict on a check-in (audit) ocx2 audit CHECK-IN pass\|fail NOTE AGAINST works
The review queue: check-ins nobody but their author has judged (reviewer, the console's Audits) a reviewer session given each new check-in on its branches (checkins); check-ins from before it started are not given missing: the check-ins still unjudged, as a read tool
CI on each check-in of a branch, tagged green or red (command sessions) a session whose checkins names the branch, its command the check (HISTORY.md decision 41) missing: a way for the check to write its ci verdict; audit writes only audited
A job: run a user's job at a ref, its log's end posted (Run: LOGIN at REF) a run whose checkout step names the ref, its command the job; the end of what it printed is kept and posted works

The node and the host

Trunk On ocx2 Status
The hook that wakes sessions (wake) ocx2 hook --node USER installs the node; it acts on what arrives works
The daemon keeping sessions running (ocxd) each run's watcher; at the node's start, hook --node answers lost runs and hands on waiting ones works
Stop a session (console) ocx2 stop RUN works
Restart a stopped session (console) send the run again, or a new run from its pattern pattern
Workspaces listed and removed (workspace gc, the console's terminate) workspaces stay on the node after ended missing: removing a finished run's workspace
Sessions and workspaces listed for supervision (the console) each run is a post; nothing lists runs and where each stands missing: a list of runs and their state
A remote host running work ocx2 node on the host's clone works
Releases: deploy, accept, roll back stage, accept, rollback, status works
The hook installed from the console hook, unhook works

Repositories

Trunk On ocx2 Status
The git export served for mirrors the program served as git works
The export kept current the hook on each check-in, and export works
Import a git repository import works

Not copied

Trunk Why
Password files and logins provisioned from the console a run user's password is set when its workspace is made (HISTORY.md decision 29)
Running unconfined when bubblewrap is missing a run without a sandbox runs only where the host allows it (ROOT/node/unconfined)
Runner code per hosted agent (claude, codex) OCX's code knows no hosted agent (HISTORY.md decision 40): how each runs is a pattern. OCX's native agent for local models is OCX's own program, not knowledge of another's
The console's views as an HTML page of their own the page is Markdown in Fossil's skin (HISTORY.md decision 33)
A note when nobody hears a post nothing uses it on v1; added back when a scenario needs it

Order to build

Each is one check-in, in the order the scenarios need them (SCENARIOS.md); where the native agent and the MCP work come in this order is the maintainer's to set:

  1. deliveries: start: a turn per post, so Claude or Codex answers on a thread or ticket. Built.
  2. The patterns run/claude and run/codex in the layered format, tried on a thread.
  3. terminal and attach: a long session a person joins at the host.
  4. ci verdicts from a check's session.
  5. The check-ins still unjudged, as a read tool.
  6. A list of runs and their state.
  7. Removing a finished run's workspace.
  8. The native agent for local models, and delegating to it.