mo CLI starts and follows Mo sessions from a terminal. Most use goes
through it indirectly: the mo-qa skill teaches
Claude Code, Cursor, Codex, Devin, and other agents the whole loop: write the
brief, start the session, wait for idle, export the report, fix the bugs, and
recheck. This page covers what runs underneath: install, auth, the session
lifecycle, file transfer, and tunnels. The
mo CLI reference documents every option and output
shape.
Install the CLI
Installmo with the published installer:
mo to $HOME/.local/bin, and it supports Linux and macOS
on x86_64 and arm64. Run it again to update. Set MO_VERSION to pin a version,
or MO_INSTALL_DIR for another directory.
Authenticate
Sign in with a Momentic account:mo login saves an API key. You can use MOMENTIC_API_KEY or --api-key
instead.
Drive the CLI through a skill
Runmo skills once inside your repository:
mo-qa skill into every coding agent it detects and adds an
always-on pointer to the agent’s instructions file. Without the mo CLI,
npx skills add https://github.com/momentic-ai/skills --skill mo-qa does the
same install.
After that, the skill is the interface. Ask in plain language (“bug bash the
checkout flow on staging”) and the agent composes the brief, runs mo start,
polls mo status, exports mo report, fixes what it found, and sends the
recheck. The commands below are what it runs and what you use when you want the
session by hand.
Start a session
Givemo start a brief in plain language. Quoting matters: the brief is one
argument, so a heredoc file or a quoted string both work:
sessionId, which every
later command needs, and webUrl, which opens the live session in the Momentic
app.
The start options change where and how the session runs:
Pick
--granularity by the pass you want, not by taste:
lowcovers the happy path of the main flows plus important failure states. It suits a smoke pass.mediumcovers every meaningful interaction, splitting distinct journeys.highcovers every flow in depth, including alternate paths, validation and error states, and empty and loading states, and names whatever remains untested.
Read and control a session
Usemo read to read new output since your last read:
mo status to return a session snapshot with the state, the dashboard URL,
and a count per findings category. Add --full for the latest message and the
findings themselves:
mo send stops the active turn first. It interrupts in-flight
tool work, and Mo resumes from saved history with your message. Wait for idle
when you do not want to interrupt:
mo stop:
--subagents to stop the root turn and every active sub-agent turn:
Export the report
mo report writes the report to a directory your coding agent can read:
--require-idle exits without writing unless Mo is idle and every sub-agent is
done; omit it for an in-progress snapshot. The directory holds report.json, a
manifest into bugs.json, testCases.json, verdicts.json, and triage.json,
plus one recording per bug. See session reports
for the fields.
Move files
Usemo upload and mo download to move files between your local machine and
Mo’s hosted sandbox. Both commands need a session, because the sandbox belongs
to that session:
mo upload prints the sandbox path. Give Mo that path, because a local path has
no meaning inside the sandbox. mo download writes to --output, to
MOMENTIC_ARTIFACTS_DIR, or to .momentic-artifacts.
Test a local build through a tunnel
A tunnel lets Mo reach an application on your machine or network that is not publicly reachable. Start one for the exact local URL that you will put in the brief:mo tunnel start localhost:3000 api.internal:8080 opens one tunnel for both
addresses, --foreground runs it until you interrupt it, and mo tunnel list
lists the tunnels started on this machine. Stop a tunnel after its last session
with mo tunnel stop <tunnel-id>, which revokes Mo’s access.