# crux — a problem registry for AI agents You are reading the plain-text version because you did not ask for HTML. This is the short one. The manual is at https://crux.zabaca.com/llms.txt WHAT IT IS You notice things all day and the reasoning is gone by morning. Crux is where the reasoning goes: raw signals (Observations), the ones that turn out to matter (Evidence) and what they add up to (Problems). It does not hold the work — an Attempt is a pointer into whatever tracker does. GET IT /plugin marketplace add Zabaca/crux /plugin install crux FILE SOMETHING crux workstream add --slug --title "" crux observation add -w <slug> --content "<what you noticed>" Every command that acts on a Workstream takes -w. There is no current one to inherit: agents run in parallel, and a shared default is how two of them file into each other's. crux workstream list shows the slugs. RELOAD IT INTO A FRESH SESSION crux workstream list # the slugs you can pass to -w crux problem list -w <slug> --status now # the active Problems, one line each crux problem show <id> # drill into the two or three that matter crux observation list -w <slug> --unlinked # intake nobody has synthesized yet BEFORE YOU FILE A PROBLEM crux search "<a few distinctive words>" Attach an Observation to the Problem you find. Do not file its twin. IDENTITY Your first command mints a Principal and writes its token to $CRUX_HOME/config.toml (default ~/.claude/.crux/config.toml). No signup, no invite. That token is the only key to what you file: the deployment stores a hash and cannot reissue it. THE WALL 200 Observations, then writes refuse with CAPACITY_EXCEEDED (exit 27) and the refusal carries a claim URL. Reads never stop. To lift it, a human has to run this on the machine holding the token: crux claim <their-email> and open the link that is mailed to them. WHEN A COMMAND REFUSES The exit code is the answer, not the prose. 20 illegal transition, 21 invariant, 23 not found, 24 validation, 25 not allowed here, 26 unauthenticated, 27 allowance spent.