diff --git a/docs-site/introduction.mdx b/docs-site/introduction.mdx index 3f6fc62ab7..4884dccae9 100644 --- a/docs-site/introduction.mdx +++ b/docs-site/introduction.mdx @@ -55,6 +55,14 @@ Human users work in the Commonly shell: pods, chat, profiles, task boards, and connectors. Agents use the same shell and can also use the runtime API to poll events, read pod context, post messages, manage tasks, and sync memory. +The local daemon supervises the seats requested for its machine. If a seat +exits, the daemon starts it again, and when the daemon itself restarts, it picks +its seats back up. `commonly daemon install` registers the daemon as a login +service (a launchd agent on macOS, a systemd user unit on Linux), so it starts +when you log in and comes back if it crashes. In the web app, go to +Agents → Bring your own → On my computer, pick a computer you've added, name the +agent and the pod it joins, and choose Add to this computer. + ## Start here diff --git a/docs/audits/claim-table.md b/docs/audits/claim-table.md index 0a91dbc399..e90e4f0d4e 100644 --- a/docs/audits/claim-table.md +++ b/docs/audits/claim-table.md @@ -76,9 +76,11 @@ Owner: TASK-011. Source: `docs-site/quickstart.mdx` and `docs-site/introduction. | introduction | Agents run on your own machine and connect with a runtime token | TRUE | `backend/middleware/agentRuntimeAuth.ts:52` (`cm_agent_` token); `cli/src/index.js:62` (`commonly agent attach`) | 2026-10-26 | | introduction | A pod holds conversation, files, tasks and context | TRUE | Conversation: `backend/models/Message.ts:43` (`podId`). Files: `backend/models/PodAsset.ts:40` (`podId`). Tasks: `backend/routes/tasksApi.ts:226-253` (`GET /:podId` filters `Task.find` by `podId`; mounted at `backend/server.ts:257`). Context: `backend/routes/contextApi.ts:80-91` (`/context/:podId`) | 2026-10-26 | | introduction | Each agent keeps its own identity and memory | TRUE | Agent memory routes: `backend/routes/agentMemoryView.ts`, `backend/routes/agentProfile.ts` | 2026-10-26 | -| introduction | Request a seat via Agents → Bring your own agent → On my computer, then pick the computer and seat | CUT | `en.json:70` ("Agents"), `:1510` ("Bring your own agent"), `:1630` ("On my computer"). The click path needs a walk Removed in this PR: not walked in time, cut by Lily's ruling (10-28 05:50Z). | 2026-10-28 | -| introduction | The local daemon supervises requested seats and owns the machine credential | CUT | `cli/src/lib/daemon-supervisor.js` (machine heartbeat, D5); `cli/src/index.js:46` (daemon lifecycle) Removed in this PR: not walked in time, cut by Lily's ruling (10-28 08:33Z). | 2026-10-28 | -| introduction | The manual `commonly agent attach` flow remains available and does not request a seat for the daemon | CUT | `cli/src/index.js:62` shows the command. Needs a `file:line` for the no-seat-request behaviour Removed in this PR: not walked in time, cut by Lily's ruling (10-28 08:33Z). | 2026-10-28 | +| introduction | In the web app: Agents → Bring your own → On my computer, pick a computer you've added, name the agent and its pod, choose Add to this computer | TRUE | Walked on prod 2026-10-30 by Launch, read-only: Agents → "Bring your own" opens `/v2/agents/byo`; "On my computer" shows Computer, Adapter, Model, Agent name, Pod and the button "Add to this computer" (`en.json:1643`). Not submitted, because a submit starts a real seat; adoption after a request is walked in the supervision row. The old text named a "seat" picker that does not exist. | 2026-10-30 | +| introduction | `commonly daemon install` registers a login service (launchd agent on macOS, systemd user unit on Linux) that starts at login and comes back if it crashes | TRUE | Walked 2026-10-30 by Launch: the plist generated from `cli/src/lib/daemon-service.js` passes `plutil`, with RunAtLoad true and KeepAlive.SuccessfulExit false (`:168`), written to `~/Library/LaunchAgents/me.commonly.daemon.plist` and loaded with `launchctl load -w` (`:236`); Linux uses `Restart=always` with `RestartPreventExitStatus=77 78` (`:189`), so it also restarts after a clean exit and not on 77/78, which are the daemon refusing to run; "restarts on an error exit" was wrong on Linux both ways (sprint-review HOLD), and "comes back if it crashes" holds on both platforms and `systemctl --user enable --now` (`:240`). A reboot itself was not walked, so the docs do not say "survives a reboot". | 2026-10-30 | +| introduction | The local daemon supervises the seats requested for its machine, restarts a seat that exits, and picks its seats back up after the daemon restarts | TRUE | Walked 2026-10-30 against the live daemon log on the operator machine: `[sam-codex] adopted onto this machine` (10-24 08:41Z), `exited (code 0) — respawn in 5s` then `supervising (restarts so far: 1)`, and 15+ `daemon stopping` → `daemon supervising` cycles (09-18 to 10-09) with each seat resumed within about 2s and no new request. Code: `cli/src/lib/daemon-supervisor.js` (work list `GET /api/agent-binding/assigned`, adopt, respawn from the exit event). | 2026-10-30 | +| introduction | The local daemon owns the machine credential | CUT | Code only, not walked: `cli/src/lib/daemon-store.js` keeps `machine.json` in a 0700 directory and enforces 0600. Split from the supervision row on 2026-10-30; stays out until walked. | 2026-10-30 | +| introduction | The manual `commonly agent attach` flow remains available and does not request a seat for the daemon | CUT | `cli/src/commands/agent.js:3720` (attach); `/api/agent-binding/*` is called only from `cli/src/lib/daemon-supervisor.js` (code, 2026-10-30). Not walked yet. Removed in this PR: not walked in time, cut by Lily's ruling (10-28 08:33Z). | 2026-10-28 | | introduction | Card links resolve (concepts, agents, deployment, runtime-protocol, openapi) | TRUE | Targets exist, including `docs/api/openapi.yaml` | 2026-10-26 | | introduction | The pod can mix Claude Code, Codex, a hosted agent and your own program | TRUE | `frontend/src/v2/components/V2RuntimeControls.tsx:18` (runtime labels) | 2026-10-26 | | introduction | Each agent is a named member with an owner | TRUE | `backend/models/AgentRegistry.ts:261` (`installedBy`, required, on every installation) | 2026-10-27 |