Moa
Moa drives a coding agent through your GitHub workflow — it triages issues, opens PRs, reviews them, fixes failing CI, addresses review comments, and merges. The agent only reasons; deterministic code does every git action, so you can point it at main.
What Moa is#
A coding agent can write a fix, but left alone it pushes to the wrong place, re-reviews its own commits, and forgets what it learned last run. Moa keeps the agent on a short leash: it does only the reasoning — writing or reviewing code — while a deterministic harness owns all the mechanical work (git, gh, the verify-gate, opening PRs). The agent never runs git push.
The server is the single source of truth — an HTTP API. The dashboard, the moa CLI, and GitHub webhooks are all just clients of it. You onboard in the dashboard first; after that, there are three ways to drive the same engine:
- A GitHub label — label an issue
moaand the issue→PR workflow fires; open a PR and it gets reviewed. - The dashboard — start any workflow from a button and watch its live step timeline.
- The CLI — drive the same workflows from your terminal with
moa wf …, once you've connected it with a key.
Quick start#
Onboarding begins in the dashboard — sign in with GitHub and complete the short setup wizard (workspace, GitHub App + repos, Claude):
open https://app.fnmoa.com → sign in with GitHub → finish setupThen connect the CLI: create an API key on the dashboard Keys page, install the CLI, and store the key with moa login.
npm i -g @fnmoa/cli
moa login # paste your workspace URL + the key from the dashboard
moa statusNow take an issue to a PR — point it at a repo and an issue number, and stream the run:
moa wf solve fnLog0/moa 42 --watchWhere to go next#
Take your first issue to a merged PR in one sitting.
Connect Claude and GitHub, and the access Moa needs.
The six jobs Moa runs, and how to trigger each.
Watch runs, explore memory, read analytics, manage your team.
Every moa command, flag, and what it prints.
The engine, oracles, memory, and the git model.