CLI reference
The moa command is a thin client over the workspace HTTP API. Every entry below lists the usage, what it does, and the flags that matter. Package: @fnmoa/cli, binary: moa.
npm i -g @fnmoa/cli # install
moa <command> [args] [flags]--watch streams a live timeline, --json prints machine-readable output, and --profile <name> selects a saved operator/workspace profile.Auth & status#
moa login
Connects the CLI to a workspace by storing an API key you created in the dashboard (Keys page). It's interactive — it prompts for the workspace API URL and the key. This does not onboard you; complete onboarding in the dashboard first (see Setup).
moa loginNon-interactive equivalents, for CI or scripts:
moa config set url https://api.fnmoa.com
moa config set key moa_xxx
# or via env: MOA_API_URL, MOA_API_KEYmoa status
Prints the current operator, workspace URL, connector health (Claude, GitHub), and recent run counts.
moa statusmoa whoami
Prints the active operator and profile — useful in multi-operator review flows (solver ≠ reviewer).
Workflows — moa wf#
Runs one of the six GitHub workflows. All take a <owner/repo> slug; issue/PR workflows take a number.
moa wf solve fnLog0/moa 42 --watchAd-hoc tasks — moa run#
Runs a one-off agent task outside the GitHub workflow — for a quick change or analysis not tied to an issue.
moa run "add a hello() to src/index.ts" --watchmoa task
Inspect, list, or cancel tasks. Each task is one claude child process — cancel kills it.
moa task list
moa task get <id>
moa task cancel <id>Oracles — moa oracle#
Consult a read-only knowledge base. A <domain>-oracle answers strictly from its KB, or says it doesn't know — it won't guess.
--watch to stream the answer.--limit N, --json).moa oracle consult ts-engineer "how should I type this generic?" --watchConfig & profiles#
Manage saved profiles to act as multiple operators or drive several workspaces/orgs. Override per command with --profile or the MOA_PROFILE environment variable.
--json — handy for scripting Moa into your own tooling or CI.