Working foundations — the detailed inventory
The command-level inventory behind the root README's
What works today? summary. Each claim
here is verified against the current CLI; when behavior and this page
disagree, the implementation-owned --help output wins.
self initturns a directory into a workspace with its own state store and git history, and records it as the one workspace this machine uses —self workspaceshows or moves that pointer;self project initregisters a project through a local marker file that never enters the code repository; projects live wherever they already are, inside or outside the workspace directory, because the pointer decides the store;- registration is one act per project, not one per working tree: every checkout of a registered git repository, including a worktree cut for a new branch, resolves from the repository itself, so there is no marker to restore and nothing to link before the first command works;
- every asserted record folds into one entity — text, free labels, typed
links, reserved metadata (
target,criteria), and placement — recorded through one sharedentity.*event grammar in a per-project JSONL log; - the preset verbs —
goal add,objective add,milestone add,convention add,decide,work add— are sugar over that entity: each resolves its label and default placement through a user-editable alias table (self alias),self stateis the raw verb for free-labeled records, andself alias add <verb>makes a custom verb of any label; - placement is scope × priority × exposure: a workspace-scoped entity renders
in every project's context, priority orders the render, and exposure picks
full text, one line, or a search pointer —
self state placemoves any of the three, demotions record why, and an agent demoting out of full passes--proposedso the move waits for a person to confirm; - retention caps bound the always-rendered set in context tokens (defaults:
1,000 for full text and 12,000 for the index, per scope) —
state add,state place, and the alias verbs refuse past a cap until--demotenames what frees the room, and--proposedlands the pair for a person to confirm;self tokensrecords what a character costs, replacing the shipped estimate; the preset verbs are not cap-gated yet; - the outcome layer above work —
objective add/revise/close,milestone add/revise/met/reach/recheck,work link/unlink, andwork propose/accept/decline— connects the goal to verified progress: a milestone is reached only when every exit criterion is covered by evidence, a revision marks what it already settled as stale until someone re-judges it, andself timezonefixes the zone every target date falls due in; - the process ledger —
work started <id> --pid Nandwork exited <id> [--code N]— maps a work unit to the agent process running it: liveness is judged at read time from the pid on the recording machine, a process that died without reporting shows as stale on the next read, and the pid itself never enters the synced log; merge control is deliberately not here — a branch reaches main through a GitHub pull request, owned by PR review and CI; - every event immediately refolds canonical markdown (project state plus one file per open work unit) and lands as exactly one commit in the workspace repository, so state has log, blame, and revert;
self contextprints the derived context an agent needs at session start;self status,self work, andself logread state;self searchanswers over the live records context does not render, across the whole workspace with current-project results ranked first;self setupshows the project, workspace, store, and machine pointer the current directory resolves to;- canonical files are generated output — hand edits are detected as drift and overwritten with a warning; reports attach to work units and auto-reference the project's HEAD commit as evidence;
self project initrenders an agent-onboarding block intoAGENTS.mdandCLAUDE.md— the instruction files agent tools already read — so any terminal agent learns the protocol and current conventions; the block refreshes on every fold,self connectre-renders it, and--no-connectskips it;self initoffers to write a short block into this machine's own agent instruction files (self connect --globaldoes it later), so agents notice self in projects that are not registered yet and ask you once — they are told never to register a project on their own;self remote addconnects the workspace store to a git remote,self syncpulls, refolds, and pushes it, andself clonebrings a store onto a new machine —self clonealso points the new machine at what it cloned, concurrent appends from different machines merge cleanly, andself project linkreconnects each project to the cloned store, once per repository rather than once per checkout of it;self viewopens a live, read-only HTML dashboard — a workspace overview, one project in detail, any work unit's full report history, and a full page of decisions, events, and artifacts each — rendered at fold time as self-contained files that auto-refresh in the browser, so an open tab tracks state with no server;self initasks for the language the views render in (self langchanges it later) andself themepicks the accent, while the recorded state keeps whatever language your workspace conventions choose.