-
v0.2.0 — `send`: one entry, the path chooses itself, headless when the app is closed
StableAll checks were successfulci / check (push) Successful in 43sreleased this
2026-10-27 22:12:24 +00:00 | 9 commits to main since this releaseA line reaches a Codex thread with and without the ChatGPT desktop app — the way ZCode sessions are reached without the ZCode app (the owner's order of 2026-10-27).
oo-appserver send <thread> "<line>": observes the station once and takes one path — app closed → headless through the shared server (thread/resumewithexcludeTurnsand a timeout scaled to the rollout size, bounded loading wait, thenturn/start, orturn/steerinto a still-running headless turn); app attached →turn/starton an idle thread,turn/steerinto a running one; app running its own stdio app-server or not attached → refused asheld-by-appwithout any network contact (never a second writer).- Heal when safe: a stale (version drift) or closed door is restarted/started before a headless send only while the app is closed, no client holds a connection (re-checked right before the restart) and no loaded thread runs a turn; a hung unit is restarted, a failed one reset first; every heal decision is its own receipt row.
oo-appserver healruns the same decision alone; a disabled unit is honoured. - Receipt classes, verb first:
delivered-headless,delivered-app-start,delivered-app-steer,held-by-app,heal-skipped, plusrefused(incl.reason: unloaded-sub-agent),loading,timeout,door-closed,no-active-turn,dropped. Exit 0 only when delivered (1 refused · 2 usage · 3 held-by-app / no-active-turn · 4 door-closed · 5 timeout · 6 dropped · 7 loading).--jsonprints exactly one receipt line with a fixed key set — the transport contract for the oo-dispatchappserverbackend. - Measured defaults (rig with copies of the station's rollouts): the first load of a thread the history does not know costs about 0.02 s/MB (7.6 s warm / 14.1 s cold for 719 MB), later loads under 0.3 s; resume timeout
max(10 s, MB × 0.05)capped at 120 s, then up to 60 s of waiting for the thread to appear loaded, thenloading— not an error: retry later, never resend, no throttle consumed. - Flags
--from/--tag,--fyi(the fleet's FYI template),--mode auto|start|steer,--wait,--min-interval(advisory per-thread throttle, marked right after the ack),--no-heal,--dry-run;doctortreats "ChatGPT not running" as the headless path. - Shared read-only station observation and a stdlib WebSocket client behind the helper and the sender; 62 offline legs against a fake app-server in CI; README with the decision table, heal rules, resume/
loading, receipts, backend contract, known gaps and the Claude-session parity target flag.
Live-verified twice headless on the station (2026-10-27 22:28 with a heal 0.164 → 0.165, 23:03 over the slim resume), two independent read-only reviews folded (#2), CI green on every commit.
Install from the tag:
git clone https://oss-oo.io/OSS-OO/oo-appserver.git && cd oo-appserver && git checkout v0.2.0 ./install.sh --target ~/tools/oo-appserver && oo-appserver doctorDownloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads