The mneia command, in full.
The CLI is a thin surface over the same core the MCP server uses, so the two return the same answer for the same input. Every command takes --json and --help.
Commands
| Command | What it does |
|---|---|
mneia init | Attach this repository to a Mneia project and import its existing constraints |
mneia brief "<task>" | Print the rehydrated context slice for a stated task |
mneia checkpoint | Capture the session into project memory at a boundary |
mneia log | Show the decision history for this project, newest first |
mneia status | Show what is stale, disputed, or unanswered in this project |
handoff and pickup ship in M2; conflicts ships in M4. Running them today returns a usage error naming the milestone rather than a generic "unknown command", so you can tell "not yet" from "you typed it wrong".
mneia init
mneia init [--workspace <slug>] [--project <slug>] [--endpoint <url>] [--force] [--json]| Flag | Effect |
|---|---|
--workspace <slug> | The workspace to attach to. Lowercase letters, digits, and single - _ . separators |
--project <slug> | The project slug. Derived from the directory name when omitted |
--endpoint <url> | Persist a non-default API URL into .mneia/config.json |
--force | Rebind a repository that is already bound, or overwrite a config that will not parse |
Constraints are imported from AGENTS.md, CLAUDE.md, and .cursor/rules if they exist, and a generated section is written back into AGENTS.md inside a fence Mneia owns. If that fence has been damaged by hand, init stops and says so rather than guessing where the boundary was.
mneia brief
mneia brief "<task>" [--budget <tokens>] [--json]The terminal-side rehydration. State the task in the words you would use to a colleague — the slice is chosen for that task, so "fix the ledger rounding bug" and "migrate the ledger schema" return different context from the same project.
--budget caps the slice in tokens. Load-bearing active constraints are included regardless of what you set it to.
mneia log and mneia status
mneia log [--limit <count>] [--since <duration|date>] [--json]
mneia status [--json]log is the decision history, newest first — what was decided, by whom, and what it superseded. --since takes a duration such as 7d or an absolute date.
status is the health of the project rather than its history: what is stale, what is disputed, and which open questions have been sitting unanswered. It is the command worth running before a planning meeting.
Environment variables
| Variable | Default | What it does |
|---|---|---|
MNEIA_TOKEN | — | The auth token. Wins over the credentials file; required in CI |
MNEIA_API_URL | https://api.mneia.dev | The API endpoint. Wins over the value in .mneia/config.json |
MNEIA_TELEMETRY | on | Set to off, false, no, none, or 0 to opt out entirely |
MNEIA_CREDENTIALS_PATH | ~/.mneia/credentials | Absolute path to the credentials file |
MNEIA_DEBUG | — | Set to 1 to print the underlying stack trace on failure |
An unrecognised MNEIA_TELEMETRY value is an error, not a fallback. A typo in an opt-out must not quietly leave telemetry on.
Output and exit codes
Every command takes --json, and the JSON is the contract — human output may be reformatted, the JSON shape may not. Errors carry a kind, a message naming what was expected and what was received, and a fix.
| Code | Meaning |
|---|---|
0 | Success |
1 | Failed — the operation was understood and did not succeed |
2 | Usage — the invocation was wrong. Nothing was read or written |
3 | Not configured — no .mneia/config.json for this directory |
4 | Auth — no usable token |
5 | Network — the API could not be reached. Your token was not the problem |
Separating 3, 4, and 5 is what lets a CI step retry a network failure and fail fast on a missing binding, instead of treating every non-zero exit as the same event.