Moa ~/dev/your-project

moa is short for My Own Agent. Also a very large bird that could not fly, and did not need to.

Let Moa run

A coding agent that lives on the machine where your code is: repos, toolchain, running processes. It keeps working while you're away, and you steer it from a browser, a terminal, or your phone.

Runs on the plan you already pay for: Claude Pro/Max or ChatGPT Plus/Pro via OAuth, or plain API keys. No middleman, no second bill.

Get Moa Watch a session open source · MIT · one Go binary · v0.18
A live Moa session on a phone: the agent is writing pkg/checkout/retry.go while the status line shows model, cost and permissions
live, from wherever you are
prod checkout 500 ~/dev/shop from your phone
Steer the agent — ⏎ sends while it works, it won't stop it…
ctx 34% ~$0.14 sonnet ▮▮▯ auto mcp 2 ↑ 0 · ↓ 0

the point

The machine stays put.
You don't have to.

Terminal agents stop when the terminal goes away. Moa's sessions live on the server, not in a tab or an SSH connection. Start at your desk, close the laptop, pick the same session up on your phone: see what it's doing, answer a permission prompt, change direction, or stop it.

The README was written on a phone, three laptop-free weeks in, during full days of real development work.

A finished Moa session on a phone: a production 500 investigated, fixed and tested
the same session, on the 7:40 bus

a normal day

Real work needs the real machine

Straight from the README: what Moa does in a working day, with the tools already on your host.

git worktree add Works in its own worktree, so your checkout stays clean while it builds.
docker compose up Brings up the project's environment. The real one, not a sandbox imitation.
go test ./... Runs builds and tests and iterates until green, within the budgets and limits you set.
playwright screenshot Drives the app in a real browser and sends screenshots as evidence, not promises.
expose port 3000 Lets you try the result yourself, from wherever you are.
subagent --async Delegates to subagents you can watch live: several sessions, a different model in each. Extend it with MCP servers, script tools, and AGENTS.md.
Moa's workspace: three parallel sessions in a grid. One is writing a file live, one runs three subagents, one shows a finished production fix.
one workspace, three sessions: a file being written live · a release fanned out to three subagents · last night's production fix

my own agent

Why own it

Moa talks to Anthropic or OpenAI directly from your machine, with the Claude Pro/Max or ChatGPT Plus/Pro subscription you already pay for, or an API key. No hosted middleman, no second bill.

Stays on your machine

  • Repository, dependencies, credentials
  • Session history & project memory
  • Running processes and environments
  • The access boundary: localhost, Tailscale, or your own proxy

Goes to your provider

  • Prompts and the code the model needs
  • Tool results relevant to the task
  • …and nothing passes through anyone else.

before you expose a port

Self-hosted means you choose the boundary

permission needed · read this first

moa serve binds to localhost and does not enable authentication by default. Anyone who can reach an unauthenticated port can control its agents. Keep it on localhost or a private network like Tailscale, set a token on top of that boundary, and read the security docs before exposing anything.

Self-hosted does not mean offline: prompts and the code the model needs go to the provider you configure. Everything else stays home.

Let Moa run.

$ moa --login anthropic # or openai
$ moa serve

One binary from Releases. Open a browser, hand it a task, close the laptop.