| 1 | # g1t |
| 2 | |
| 3 | **Git tracks changes. g1t coordinates change.** |
| 4 | |
| 5 | g1t is a git platform built for teams whose code is written by people and |
| 6 | their coding agents at the same time. You keep your own harness (Claude |
| 7 | Code, Codex, Cursor, Copilot or anything that speaks MCP); g1t is the |
| 8 | place they all work through. It hosts the repositories, shows who and what |
| 9 | is working on each project right now, keeps parallel work from colliding, |
| 10 | tests changes together before they land, deploys them, and remembers why |
| 11 | each change was made. |
| 12 | |
| 13 | g1t is MIT-licensed and in alpha. Use it on [g1t.sh](https://g1t.sh) (anyone |
| 14 | can sign up), or run it yourself. It runs on Cloudflare Workers, with |
| 15 | repositories in Cloudflare Artifacts, and the core runs in Docker. |
| 16 | |
| 17 | - Site: <https://g1t.sh> |
| 18 | - Docs: <https://docs.g1t.sh> |
| 19 | - API: <https://api.g1t.sh> · MCP: <https://mcp.g1t.sh> |
| 20 | - Limits you can hit today: [docs.g1t.sh/about/limitations](https://docs.g1t.sh/about/limitations/) |
| 21 | |
| 22 | ## Try it |
| 23 | |
| 24 | ```sh |
| 25 | # 1. Sign up and make a workspace at https://g1t.sh/register. |
| 26 | |
| 27 | # 2. Install the g1t CLI (Windows: irm https://g1t.sh/install.ps1 | iex). |
| 28 | curl -fsSL https://g1t.sh/install | sh |
| 29 | g1t auth login |
| 30 | ``` |
| 31 | |
| 32 | Choose your client in [Connect an AI client](https://docs.g1t.sh/guides/bring-your-own-agent/). |
| 33 | It covers Codex, Claude Code, Cursor, Gemini CLI and OpenCode, plus ChatGPT, |
| 34 | Claude, Grok, Open WebUI and LibreChat. The guides remember your choice. |
| 35 | Chat apps connect through MCP without needing the CLI or a local checkout. |
| 36 | |
| 37 | For Claude Code, install the plugin and sign in from `/mcp`: |
| 38 | |
| 39 | ```sh |
| 40 | claude plugin marketplace add https://g1t.sh/flagon-io/g1t-plugins.git |
| 41 | claude plugin install g1t@g1t |
| 42 | ``` |
| 43 | |
| 44 | For Codex, add the MCP server and sign in: |
| 45 | |
| 46 | ```sh |
| 47 | codex mcp add g1t --url https://mcp.g1t.sh |
| 48 | codex mcp login g1t |
| 49 | ``` |
| 50 | |
| 51 | The [Codex marketplace plugin](https://docs.g1t.sh/guides/bring-your-own-agent/#codex-marketplace) |
| 52 | also supplies a work coordination skill. Use it or the standalone connection |
| 53 | above to avoid duplicate tools. Claude Code's plugin records sessions through |
| 54 | hooks; other clients record sessions through the CLI or MCP. |
| 55 | [Getting started](https://docs.g1t.sh/quickstart/) walks through a coding task. |
| 56 | An assistant can follow <https://g1t.sh/llms.txt>. |
| 57 | |
| 58 | ## What's in it |
| 59 | |
| 60 | ### Coordinating agents |
| 61 | |
| 62 | - **Sessions.** Record a coding agent as it works: its |
| 63 | prompts, tool calls, subagents, branches, commits and pull requests. Work |
| 64 | that is not an issue yet is a session titled by what it is for. The |
| 65 | [Claude Code plugin](https://docs.g1t.sh/guides/claude-code-plugin/) does |
| 66 | it automatically after installation and sign-in; other clients can record |
| 67 | summaries with the CLI or MCP, including through the Codex plugin skill. |
| 68 | - **Live now.** A project's page shows who is working on it right now and |
| 69 | with which harness, grouped by issue, pull request or branch. |
| 70 | - **Claims.** Advisory, expiring claims on issues, so two agents don't do the |
| 71 | same work, with hand-offs between sessions and coordination events |
| 72 | (`g1t work events --follow`, or over MCP) when work overlaps. |
| 73 | - **Integration.** The merge queue tests changes together before they land, |
| 74 | tests smaller combinations to narrow a failure without assuming a single |
| 75 | culprit, and sends the evidence to the session responsible for repair. |
| 76 | - **Why-blame and decisions.** `g1t why file:line` answers why code is as it |
| 77 | is: its commit, pull request, issue, the decisions recorded along the way, |
| 78 | and the sessions behind it. |
| 79 | - **Ask g1t.** Ask about your work from any page, or by messaging @g1t. It |
| 80 | answers with your workspace's own AI provider and reads g1t as you. |
| 81 | |
| 82 | ### Code |
| 83 | |
| 84 | - Public and private repositories, git over HTTPS, creating a repository by |
| 85 | pushing to it, GitHub import (every branch and tag, and issues). |
| 86 | - Issues, milestones, labels, pull requests, line comments and reviews. |
| 87 | - Required checks, rulesets, CODEOWNERS and the merge queue. |
| 88 | - Workflows from `.g1t/workflows` in GitHub Actions syntax, on g1t's Linux |
| 89 | runners or self-hosted ones on Linux, macOS and Windows, with caches, |
| 90 | secrets and variables. |
| 91 | - Packages: npm, Cargo, Composer, Maven, NuGet, RubyGems, Go modules and |
| 92 | container images. |
| 93 | - Secret push protection, history scanning and dependency update pull |
| 94 | requests. |
| 95 | |
| 96 | ### Deployments and observability |
| 97 | |
| 98 | - A preview of every pull request on `g1t.page`, production on merge, custom |
| 99 | domains. Static sites, Workers and containers, chosen from the project. |
| 100 | - Logs, traces, metrics and errors from your apps over OpenTelemetry. |
| 101 | |
| 102 | ### The workspace |
| 103 | |
| 104 | - Chat: channels, direct messages and threads, live. |
| 105 | - Artifacts: docs written together, live, with comments, suggestions and |
| 106 | history. |
| 107 | - Home, notifications with browser push, people and teams, roles, invites. |
| 108 | - A desktop app for Windows and Linux that can also be a runner for your |
| 109 | workspace, and an Android app in testing ([g1t.sh/download](https://g1t.sh/download)). |
| 110 | |
| 111 | ### Extend |
| 112 | |
| 113 | - REST API, OpenAPI, an MCP server, webhooks and the `g1t` CLI, all from one |
| 114 | set of operations. |
| 115 | - Integrations: your own AI providers, Sentry, Datadog and webhook alerts, |
| 116 | Jira and Linear. |
| 117 | - Usage billing with no seats and a public price book. |
| 118 | |
| 119 | ## Layout |
| 120 | |
| 121 | | Path | What it is | Language | |
| 122 | | --- | --- | --- | |
| 123 | | `apps/web` | The site: server-rendered React on a Worker. Holds no data. | TypeScript | |
| 124 | | `apps/docs` | The documentation site, with the API explorer. | TypeScript | |
| 125 | | `apps/api` | REST API and MCP server. | Rust | |
| 126 | | `apps/desktop` | The desktop app (Tauri), with a runner inside. | Rust, TypeScript | |
| 127 | | `apps/mobile` | The phone app (Expo). | TypeScript | |
| 128 | | `apps/status` | The status page at `status.g1t.sh`. | TypeScript | |
| 129 | | `apps/sudo` | g1t's own staff console. | TypeScript | |
| 130 | | `services/identity` | Accounts, workspaces, sessions, keys, tokens and invites. | Rust | |
| 131 | | `services/repos` | Repository registry, contents, forks, diffs, landing, git over HTTPS. | Rust | |
| 132 | | `services/work` | Issues, pull requests, reviews, check runs, agent sessions, claims and the merge queue. | Rust | |
| 133 | | `services/events` | The event bus and its log. | Rust | |
| 134 | | `services/search` | Site-wide search and Explore. | Rust | |
| 135 | | `services/billing` | Usage, the price book, limits, invoices and payments. | Rust | |
| 136 | | `services/actions` | Workflows, runs, caches and self-hosted runners. | Rust | |
| 137 | | `services/security` | Push protection findings, history scanning and dependency updates. | Rust | |
| 138 | | `services/integrations` | AI providers, Ask, alerts, trackers and the GitHub App. | Rust | |
| 139 | | `services/webhooks` | Webhook deliveries. | Rust | |
| 140 | | `services/packages` | The package registries and container images. | Rust | |
| 141 | | `services/runner` | Starts sandboxes for workflow jobs, builds and the merge queue. | TypeScript | |
| 142 | | `services/projects` | Projects: what a workspace builds and runs, and where its code lives. | TypeScript | |
| 143 | | `services/deployments` | Builds, previews and production on `g1t.page`. | TypeScript | |
| 144 | | `services/pages` | Serves every app deployed on `g1t.page`, and custom domains. | TypeScript | |
| 145 | | `services/telemetry` | Observability: OpenTelemetry ingest, logs, traces, metrics and errors. | TypeScript | |
| 146 | | `services/chat` | Channels, direct messages, threads and their live sockets. | TypeScript | |
| 147 | | `services/artifacts` | Docs: their spaces, sharing and live editing. | TypeScript | |
| 148 | | `services/notify` | Notifications: each person's feed, live counts and browser push. | TypeScript | |
| 149 | | `services/og` | Social cards at `og.g1t.sh`: a PNG per page, showing only what anyone may see. | TypeScript | |
| 150 | | `crates/g1t` | The `g1t` command line. | Rust | |
| 151 | | `crates/runner` | The program inside a sandbox, and the self-hosted runner: runs a workflow job or a build and reports back. | Rust | |
| 152 | | `crates/contracts` | Types and service interfaces for the Rust services. | Rust | |
| 153 | | `crates/kit` | Plumbing shared by Rust services on Workers. | Rust | |
| 154 | | `crates/rules` | The rules engine for rulesets on branches and tags. | Rust | |
| 155 | | `crates/blobstore` | Object storage: R2 on Cloudflare, any S3-compatible store self-hosted. | Rust | |
| 156 | | `crates/actions` | Reads workflows and evaluates their expressions. | Rust | |
| 157 | | `crates/scan` | Secret and lockfile scanning, shared by services. | Rust | |
| 158 | | `crates/secrets` | Secrets at rest and signatures. | Rust | |
| 159 | | `crates/sshd` | Git over SSH, bridged to Cloudflare Artifacts. Not deployed. | Rust | |
| 160 | | `packages/contracts` | The same interfaces for TypeScript callers. | TypeScript | |
| 161 | | `packages/theme` | Design tokens and the logo, shared by the site and the docs. | CSS | |
| 162 | | `plugins/claude-code` | g1t's Claude Code plugin: hooks, skills and commands, published to `flagon-io/g1t-plugins` on every change. | JavaScript | |
| 163 | | `plugins/codex` | Codex plugin: MCP server and work coordination skill, published to `flagon-io/g1t-plugins`. | JSON / Markdown | |
| 164 | | `plugins/other-harnesses` | The AGENTS.md snippet for Codex, Cursor and other harnesses. | Markdown | |
| 165 | | `deploy` | `stack.jsonc`, every deployable part and its resources; `self-host`, the Docker Compose version. | JSON, Docker Compose | |
| 166 | |
| 167 | Each service is its own Worker, and each one that keeps data has its own |
| 168 | database. They call each other through service bindings and react to each |
| 169 | other through events. The core services are written in Rust; the web apps |
| 170 | and the rest of the Workers in TypeScript. |
| 171 | |
| 172 | ## Run your own |
| 173 | |
| 174 | ### On your own machine |
| 175 | |
| 176 | The core forge runs in Docker, with no Cloudflare account: |
| 177 | |
| 178 | ```sh |
| 179 | docker compose -f deploy/self-host/docker-compose.yml up --build |
| 180 | ``` |
| 181 | |
| 182 | Then open <http://localhost:8787> and sign up. The confirmation mail is in |
| 183 | Mailpit at <http://localhost:8025>. Repositories, push and clone, issues, |
| 184 | pull requests, code browsing, search, webhooks and observability work, and |
| 185 | the API and MCP server answer at <http://localhost:8789>; packages and |
| 186 | container images are kept in the bundled S3-compatible store, RustFS. |
| 187 | Deployments and billing are off, and the merge queue can't test or land |
| 188 | pull requests without g1t's runner. |
| 189 | [Run g1t yourself](https://docs.g1t.sh/guides/self-hosting/) says what works, |
| 190 | and [how a self-hosted g1t runs](https://docs.g1t.sh/guides/self-hosting-architecture/) |
| 191 | what runs inside it. |
| 192 | |
| 193 | ### On Cloudflare |
| 194 | |
| 195 | You need a Cloudflare account on the Workers Paid plan (Cloudflare |
| 196 | Artifacts, where repositories are stored, requires it), Node 24 (`.nvmrc`, |
| 197 | and `engines` in `package.json`), Rust with the `wasm32-unknown-unknown` |
| 198 | target, and Docker to build the sandbox image. |
| 199 | |
| 200 | ```sh |
| 201 | npm install |
| 202 | npx wrangler login |
| 203 | ``` |
| 204 | |
| 205 | Then, once: |
| 206 | |
| 207 | 1. Create the resources each part needs: D1 databases, queues, KV |
| 208 | namespaces, R2 buckets and the Cloudflare Artifacts namespace (`npx wrangler d1 |
| 209 | create <name>`, `npx wrangler queues create <name>`, and so on), and set |
| 210 | each part's secrets. `deploy/stack.jsonc` lists them all. |
| 211 | 2. Put your own `account_id`, database ids and hostnames in each |
| 212 | `wrangler.jsonc`. |
| 213 | 3. For [Deployments](https://docs.g1t.sh/guides/deployments/), which needs |
| 214 | the Workers for Platforms add-on and a zone for apps: |
| 215 | `scripts/setup-deployments.sh`. |
| 216 | |
| 217 | Deploy everything, migrations first, in dependency order: |
| 218 | |
| 219 | ```sh |
| 220 | scripts/deploy.sh |
| 221 | ``` |
| 222 | |
| 223 | Or only what changed, still in order: `scripts/deploy.sh billing web`. |
| 224 | Both use your `wrangler login`, not a token in `.env`. |
| 225 | |
| 226 | Create the first account by registering on your site, or with |
| 227 | `node services/identity/scripts/create-user.mjs <username>`. |
| 228 | [Deploy g1t to Cloudflare](https://docs.g1t.sh/guides/deploy-to-cloudflare/) |
| 229 | covers the deploy tool, the workflow and first-time setup in full. |
| 230 | |
| 231 | ## License |
| 232 | |
| 233 | [MIT](LICENSE) |