CLI commands

The complete command surface as shipped in the current release (mcue --version tells you which). Descriptions here are the binary's own. Flags change more often than commands do, so each entry points you at --help rather than transcribing a flag list that will drift.

mcue <command> --help    # authoritative flags for any command

Project lifecycle

CommandPurpose
mcue init <project-id> --name "Display Name"Register a new project and scaffold its state files
mcue attach <project-id>Anchor an existing project to a directory via .mcue footprint
mcue detachRemove the .mcue footprint from a directory
mcue exists <project-id>Quietly check whether a project is registered
mcue update <project-id>Update mutable project metadata without a closeout
mcue project rename <old-id> <new-id>Rename a project id across all of its local state
mcue project archive <project-id>Mark a project out of the active portfolio without removing state
mcue project delete <project-id>Hard-delete a project: remove its registry entry and state directory

The session loop

CommandPurpose
mcue closeout <project-id>End a session and refresh governed project state
mcue resume <project-id>Generate a bounded resume packet for re-entry
mcue index [project-id...]Show the derived portfolio view, across projects or for named ones
mcue review <project-id>Inspect project state without full closeout
mcue history <project-id>Browse a project's checkpoint history
mcue drift <project-id>Show warning-only environment drift for a project or lane
mcue recover <project-id>Recover from an interrupted closeout with a degraded checkpoint
mcue reconcile <project-id>Resolve a lane with multiple unreconciled perspectives

Lanes and plans

CommandPurpose
mcue lane create <project-id> <lane-id>Create a named operating lane inside a project
mcue lane update <project-id> <lane-id>Update a lane's objective, display name, or work tree without a closeout
mcue lane close <project-id>Retire a project operating lane
mcue lane delete <project-id>Hard-delete a lane and all its state
mcue plan create <project-id>Create the active plan for a lane
mcue plan show <project-id>Show the active or archived plan for a lane
mcue plan list <project-id>List active and archived plans
mcue plan update <project-id>Update the active plan outside closeout
mcue plan close <project-id>Archive the active plan on a lane
mcue plan delete <project-id>Hard-delete the active plan on a lane

Managed Hub

CommandPurpose
mcue hub set <url>Set and verify the managed Hub origin
mcue hub statusShow Hub configuration and linked-project cursors
mcue loginAuthorize mcue with the configured Hub using OAuth + PKCE
mcue logoutRevoke the Hub OAuth session and remove it from the OS credential store
mcue whoamiShow the authenticated Hub identity
mcue publish <project-id>...Publish one or more local projects to the managed Hub
mcue clone <project-id>Materialize a Hub project into local mcue state
mcue sync <project-id>...Push pending local state and pull accepted Hub events
mcue sync status [project-id]Show managed-Hub cursor and pending state without network access
mcue unlink <project-id>Remove only the local Hub link and pending outbox
mcue observe <project-id>Collect Git evidence against Hub-accepted checkpoints; --upload submits it to Hub

BYO-S3 remote

A self-hosted cross-machine path that needs no account. Separate from Hub.

CommandPurpose
mcue remote enable <project-id>Configure an S3-compatible remote for a project
mcue remote disable <project-id>Remove a project's remote configuration
mcue remote status <project-id>Show remote configuration and unpushed perspectives
mcue remote push <project-id>Upload local perspectives the bucket does not have
mcue remote pull <project-id>Download remote perspectives and recompute local state
mcue remote rotate <project-id>Replace the stored remote credential
mcue remote diff <project-id> <perspective-id>Compare local and remote bytes for a perspective (byte-conflict check)
mcue remote force-push <project-id> <perspective-id>Overwrite the remote bytes for one perspective with the local bytes

Agents and MCP

CommandPurpose
mcue serveRun a mcue MCP server (stdio or authenticated HTTP)
mcue agents-snippetEmit the canonical mcue access-rules snippet for AGENTS.md / CLAUDE.md
mcue token issueIssue a new bearer token
mcue token listList issued tokens (ids, scopes, status — never the plaintext)
mcue token rotate <token-id>Revoke a token and issue a replacement with the same scope
mcue token revoke <token-id>Revoke a token by id

Identity and diagnostics

CommandPurpose
mcue identity showPrint the current operator and machine identity
mcue identity setOverride identity fields or add aliases
mcue doctorPrint install diagnostics for the local mcue setup
mcue auditRead entries from the local audit log

Migrations

One-off commands for state written by older versions. Safe to ignore on a fresh install.

CommandPurpose
mcue migrate-lanesScaffold default lane state for pre-lane projects
mcue migrate-objectivesDetect and clean up project_state objectives polluted by the pre-fix closeout bug

Scoping the portfolio view

mcue index with no arguments is the cross-project glance. Name one or more projects to scope it:

mcue index                             # every active project
mcue index payments-api                # just this one
mcue index payments-api ledger-svc     # several
mcue index payments-api --expand-lanes # with its lanes

Two behaviours worth knowing:

  • A named project is shown whatever its state, including closed and archived ones that the unscoped view hides. Asking for a project by id means you want to see it.
  • An unknown id is an error, not an empty table — an empty table would read as "this project has nothing in it" rather than "no such project".

For the fuller picture of one project, including checkpoint detail, use mcue review <project-id> instead.

Commands that touch the network

Worth knowing exactly which ones do, since everything else is guaranteed local:

  • mcue hub set, mcue login, mcue logout, mcue whoami
  • mcue publish, mcue clone, mcue sync, mcue observe
  • every mcue remote subcommand except status
  • mcue serve only when serving its HTTP surface, and only to clients that reach it

Notably mcue sync status does not — it is deliberately offline so you can check pending work on a plane.