Self-hosted · GitHub Issue to release

A self-hosted coding agent that ships the release

On your machine, with your model, to a tagged release. Install the runner, connect a model, label one Issue ai-ready. Orbi writes the change, opens a PR, survives an independent review, and the milestone ends as a tagged GitHub Release.

What running it on your own machine takes

A Python runner, a model it can reach, and GitHub access. The commands below are the ones the getting-started guide uses.

curl -LsSf https://raw.githubusercontent.com/orbi-build/orbi/main/install.sh | bash

Needs Python 3.14, uv, git, gh, and a systemd user session (launchd on macOS). Node ≥ 22.19 is the one prerequisite it does not install.

  1. 01 · INSTALL
    Install the runner

    The script provisions Python 3.14 with uv and installs the Pi CLI. orbi setup checks the prerequisites; it never installs system packages or gh for you.

  2. 02 · MODEL
    Connect a model

    Any OpenAI-compatible API works: copy a template into .orbi/pi-providers.json and select the provider in orbi.toml (DeepSeek ships as a template). A ChatGPT/Codex subscription works too: run /login codex inside an interactive pi session.

  3. 03 · GITHUB
    Give it GitHub access

    GitHub CLI 2.94 or newer, authenticated. Issues, labels, PRs and merges all go through it; gh auth status tells you where you stand.

  4. 04 · FIRST RELEASE
    Run one tick and watch a release happen

    Label an Issue ai-ready. One tick resumes an open PR or claims a single Issue, p0 first, then bugs, then features. The timer does the same every five minutes.

mkdir -p .orbi
printf '%s\n' 'DEEPSEEK_API_KEY=replace-me' > .orbi/env
chmod 600 .orbi/env

The key never goes into the provider JSON. It lives in the env file, which the systemd unit loads at service start.

pi --print "reply with the single word: ok"
PYTHONPATH=src python3 -m orbi.runner --config orbi.toml
systemctl --user list-timers 'orbi@*.timer'

One real call proves the model endpoint. One tick claims at most one Issue. The list shows the timers doing it every five minutes.

Self-hosted or Cloud

Same delivery line. The difference is who runs the machine and who pays for the model.

Self-hostedOrbi Cloud
Runs onYour machine, under a systemd user timer (launchd on macOS).Orbi's infrastructure. Sign in with GitHub and connect a repo.
You set upThe install script, orbi setup, one model provider.Nothing. Each connected repo runs under its own Unix user.
ModelYour own: any OpenAI-compatible API, or a Codex subscription login.Included with the plan.
What it costsOrbi is free under AGPL-3.0; you pay your provider. Measured across 20 merged PRs: median $0.125 off-peak at DeepSeek list prices.First 3 merged deliveries free, no card. Solo: US$29/month, 100M tokens. Pro: US$79/month, 300M tokens.
When the quota is goneThere is no Orbi-side quota; your provider keeps billing per use.New deliveries pause. Nothing overbills.

Comparing managed agents instead? Orbi vs Devin, measured line by line.

Before you install it

Where does my data live?
On your own machine. Config sits in orbi.toml, keys in the gitignored .orbi/ state directory, task worktrees under .worktrees/, logs in your user journal. GitHub holds the Issues, PRs and releases.

Can I use a local model?
Yes. The providers guide ships a Local Qwen template (local-qwen.json, Qwen3.8-27B), and any OpenAI-compatible endpoint fits the same slot.

How do I stop it?
Pause the timer: systemctl --user disable --now orbi@1.timer, once per enabled timer. Nothing is deleted; re-enable to resume. Full removal steps are in Operations.

What does one Issue get?
A PR with its evidence, an independent review that can repair the branch, a merge of only the reviewed head, then the tag and GitHub Release. The whole line is on Issue to release.

How does it compare with Devin?
Setup, pricing and the delivery line, compared side by side: Orbi vs Devin.

Own the machine. Keep the release.

Label the next Issue ai-ready and watch it come back as a tagged release.