selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

Orbi logo

Self-host Orbi

v0.7.25

Lights-out software factory: Issue to merged PR and release

BetaOpen SourceAGPL-3.0
Updated2 hours ago
LanguagePython
Setup difficultyAdvanced
Stars
232
Requires
GitHub, OpenAI-compatible model provider
Docker
ghcr.io/orbi-build/orbi
Install with Windows

What is Orbi?

Orbi is an open-source automation platform for GitHub that handles the entire software delivery pipeline from issue to release. When you tag an issue with ai-ready, the system picks it up, writes the implementation in a separate worktree, runs the test suite, and opens a pull request. A second AI session then reviews the changes, makes corrections, and re-runs tests until everything passes. Only the reviewed version can be merged. Release management is also automated — a specially labeled issue triggers version bumping, tagging, and release note generation. All state lives in GitHub itself (issues, labels, comments, PRs) with no external database or queue. The tool runs on Linux and macOS using a systemd or launchd timer that fires every five minutes. Requirements include Python 3.14+, Node 22.19+, git, the GitHub CLI, and uv. You supply your own language model through any OpenAI-compatible endpoint or a local llama.cpp server. The self-hosted version is free under a dual license (AGPL-3.0 or Sustainable Use License), while a managed cloud offering provides a free trial and paid tiers.

Should you self-host Orbi?

Orbi scores 48/100 on selfhost.directory (how scoring works) and ranks #4 of 10 in AI Automation. It has 232 GitHub stars.

It shipped 14 stable releases in the past year. The latest, v0.7.25, came out on 28 October 2026. New versions land roughly every 1 days.

Setup is advanced: plan for several services and some ongoing maintenance. An official Docker image is available. It is AGPL-3.0-licensed and written mostly in Python.

Its closest alternative on selfhost.directory is openhands (87/100, 92 079 stars). It scores higher overall, so compare the two before you pick. See Orbi vs openhands side by side.

Features

  • Autonomous Issue-to-PR-to-Release
  • Bring your own model
  • Dual Licensing (AGPL-3.0 / Sustainable Use License)
  • External Single-Repo Mode
  • Independent AI Review
  • Release Automation
  • Review with Different Model
  • Self-Healing Deployment
  • Telegram Notifications

Orbi README

How to install Orbi

Install Orbi with Windows

Installs CLI, creates config, and starts interactive setup; requires git, gh, systemd/launchd user session; uv provisions Python 3.14; installs Pi CLI via npm (Node ≥ 22.19 required).

How to configure Orbi

  • active_milestoneClaim scope for the fresh-claim scans: the active GitHub Milestone title.

    Claim scope for the fresh-claim scans: the active GitHub Milestone title.

    values: any non-empty string

  • allow_stale_runnerfalseOffline escape hatch for the runner source freshness gate.

    Offline escape hatch for the runner source freshness gate.

    values: true | false

  • base_branchmainDelivery base branch: every task worktree is created from the latest origin/<base_branch> (fetched and frozen at claim time).

    Delivery base branch: every task worktree is created from the latest origin/<base_branch> (fetched and frozen at claim time).

    values: any branch name

  • deploy_homeThe orbi SOURCE checkout — where the editable CLI install comes from, where the systemd/unit templates and labels.toml live, and where the prompt defaults resolve when unset. Default: repo_dir.

    The orbi SOURCE checkout — where the editable CLI install comes from, where the systemd/unit templates and labels.toml live, and where the prompt defaults resolve when unset. Default: repo_dir.

    values: any non-empty path

  • engine_source_trackreleaseEngine source update channel: what the deploy home checkout follows at every service start.

    Engine source update channel: what the deploy home checkout follows at every service start.

    values: absent/main | branch:<name> | release/stable | tag:<name> | sha:<40-hex>

  • git_transportsshDelivery checkout transport: how git data operations (fetch/push, including .github/workflows/*.yml) authenticate on the checkout's single `origin` remote.

    Delivery checkout transport: how git data operations (fetch/push, including .github/workflows/*.yml) authenticate on the checkout's single `origin` remote.

    values: ssh | https

  • max_concurrency1Concurrent Orbi tasks and enabled Runner timers on this machine (1..5).

    Concurrent Orbi tasks and enabled Runner timers on this machine (1..5).

    values: 1–5

  • message_languageenLanguage of Orbi's own comments and of the attribution footer.

    Language of Orbi's own comments and of the attribution footer.

    values: en | zh

  • pi_modelThe model id within the selected provider — passed to Pi as --model.

    The model id within the selected provider — passed to Pi as --model.

    values: any non-empty string

  • pi_providerThe provider id selected for every run — passed to Pi as --provider.

    The provider id selected for every run — passed to Pi as --provider.

    values: any non-empty string

  • pi_providersPath to a JSON file in Pi's models.json shape that adds or overrides providers in Pi's catalog for every run.

    Path to a JSON file in Pi's models.json shape that adds or overrides providers in Pi's catalog for every run.

    values: any path to a providers JSON file

  • pi_thinkingThinking level passed to Pi as --thinking.

    Thinking level passed to Pi as --thinking.

    values: off | minimal | low | medium | high | xhigh | max

  • promptprompts/prompt.mdImplementer prompt template (placeholders like {{SOURCE_REPO}} are rendered by the Runner).

    Implementer prompt template (placeholders like {{SOURCE_REPO}} are rendered by the Runner).

    values: any path

  • prompt_reviewprompts/prompt_review.mdReview prompt template for the independent post-PR review session.

    Review prompt template for the independent post-PR review session.

    values: any path

  • repo_dir.The delivery checkout: the repository whose Issues the Runner delivers. Task worktrees are created from its frozen origin/<base_branch>.

    The delivery checkout: the repository whose Issues the Runner delivers. Task worktrees are created from its frozen origin/<base_branch>.

    values: any path

  • review_pi_modelModel override for review sessions; unset falls back to pi_model.

    Model override for review sessions; unset falls back to pi_model.

    values: any non-empty string

  • review_pi_providerProvider override for review sessions; unset falls back to pi_provider.

    Provider override for review sessions; unset falls back to pi_provider.

    values: any non-empty string

  • review_pi_thinkingThinking-level override for review sessions; unset falls back to pi_thinking.

    Thinking-level override for review sessions; unset falls back to pi_thinking.

    values: off | minimal | low | medium | high | xhigh | max

  • source_reposOne owner/repo task pool scanned each tick. Multiple entries fail fast because the current execution layer has only one checkout; multi-repo workspaces are not available yet.

    One owner/repo task pool scanned each tick. Multiple entries fail fast because the current execution layer has only one checkout; multi-repo workspaces are not available yet.

    values: non-empty owner/repo names

  • status_urlOptional fixed link to the operator's own project status page.

    Optional fixed link to the operator's own project status page.

    values: complete https:// URL without userinfo

  • telegram_chat_idTelegram chat that receives the "needs you" messages and the "code merged" announcements.

    Telegram chat that receives the "needs you" messages and the "code merged" announcements.

    values: any non-empty string

  • unit_nameOptional per-deployment systemd name. Unset keeps the compatible orbi@1/2 names.

    Optional per-deployment systemd name. Unset keeps the compatible orbi@1/2 names.

    values: letters, numbers, -, _

  • workspace_root..The directory the implementer agent is told contains the repositories it may touch.

    The directory the implementer agent is told contains the repositories it may touch.

    values: any path

Orbi releases & version history

FAQ

Is it really free, and what is Managed Cloud?

Open source under AGPL-3.0 or the Sustainable Use License. Self-hosting is free under either. Managed Cloud starts with 3 free merged deliveries (no credit card), then paid annually: Solo $24/mo (400M tokens), Pro $66/mo (1.2B tokens). Founding partners get 50% off forever (6 places).

What happens when a run crashes halfway?

The next tick returns to the same scene. Because the Issue, PR, labels, and run ID live in GitHub rather than in a process, a killed process or failed test does not produce a second story. Restarts reconstruct state from that record.

Who reviews the AI's code?

Another Orbi session, running independently of the one that wrote the code, reviews the exact diff, can change the branch, reruns tests against its repairs, and judges the repaired head. You remain the last gate via GitHub branch protection and required approvals.

How is this different from Copilot or Cursor?

Copilot and Cursor are editors that make you faster while typing. Orbi works when nobody is typing: it takes an Issue from your backlog, works in an isolated worktree, and takes it through independent review and merge to a tagged release.

Which AI models can I use?

For self-hosted Orbi, bring your own model. Orbi drives the agent through your credentials using any OpenAI-compatible API or a locally hosted model, and you can change providers later without changing your workflow.

What does Orbi actually need to run?

For self-hosted Orbi, you need Git, a POSIX shell, and API access to a model you already pay for. Orbi runs on Linux and macOS on your own machine or server. No GPU is required — the model does the thinking via a hosted API.

More in CI/CD

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…