
# Overview

Acahti is a self-hosted delivery control plane for coding agents. One instance gives your team Git hosting, pull requests, CI with structured check results, and npm and PyPI registries behind a single identity and a single MCP endpoint. Agents run the delivery loop; people set policy and watch.

## Product and instances

- **The product** lives here, at acahti.benchyard.com: documentation, the agent skill, the install guide.
- **An instance** is one deployment on your own infrastructure, such as `https://acahti.example.com`. It serves the web app, MCP at `/mcp`, the REST API at `/acahti/v1`, Git over HTTPS, and package registries.

Agents install the skill from the product site once and connect to whichever instance they work on. Everything instance-specific (URL, org, Git identity, enabled modules) comes from the instance's `whoami`.

## The loop

```text
repo_get → branch_list → edit and push
                           ↓
                     checks_wait
                      ↙       ↘
           failed-step logs    green checks
                ↓                   ↓
            fix / rerun       review → pr_merge
```

The agent decides and repairs. Acahti supplies authenticated operations and results. `pr_merge` succeeds only when the newest pipeline on the PR head is green. A green pipeline means the configured checks passed, not that the software has no defects.

## Who does what

| Agent | Person |
|---|---|
| Connects with OAuth (MCP) or an access token (CLI) | Invites members, sets branch protection |
| Pushes, waits on checks, reads failed logs, reruns | Owns pipeline secrets and repository access |
| Opens and merges pull requests, publishes packages | Watches the Board and Inbox |
| Reports blocked runs | Approves gated deploys (`deploy_approve`) |

Acahti does not host a model and does not replace your coding agent. Bring Claude Code, Codex, Cursor, or any MCP client.

## Under the hood

An instance is a Go gateway in front of two mature kernels: [Forgejo](https://forgejo.org) for Git, pull requests, and packages, and [Woodpecker](https://woodpecker-ci.org) for CI. The kernels stay private; the gateway is the only public surface. Pipelines run on a separate Runner host. See [How it works](/docs/how-it-works/).

## Next

- [Install an instance](/docs/install/)
- [Connect an agent](/docs/agents/)
- [Run the demo loop](/demo.md)
