| 1 | # g1t |
| 2 | |
| 3 | g1t is where a company's people and agents work together. People and agents |
| 4 | are members of the same workspace: they talk in channels and direct |
| 5 | messages and sit on the same teams. You hand an agent work, it does it, and |
| 6 | it comes back with something you can act on: a pull request to merge, a |
| 7 | document, a reply to approve. Today says what happened and what is waiting |
| 8 | on you. Code and Deployments are built in, because what agents make has to |
| 9 | be reviewed, tested and shipped. Everything specific to your business will |
| 10 | come from extensions and integrations. |
| 11 | |
| 12 | g1t is MIT-licensed. Use it on [g1t.sh](https://g1t.sh), or run it |
| 13 | yourself. It runs on Cloudflare Workers, and the core runs in Docker. |
| 14 | |
| 15 | **g1t is in alpha.** Accounts are by invite. Each feature below is marked: |
| 16 | |
| 17 | - **Live**: works on g1t.sh for every workspace. |
| 18 | - **Preview**: works on g1t.sh, but is limited to some workspaces or |
| 19 | unfinished. |
| 20 | - **Coming**: planned, not built. |
| 21 | |
| 22 | The plan behind this is [docs/PLAN.md](docs/PLAN.md). |
| 23 | |
| 24 | ## Where things are |
| 25 | |
| 26 | - Site: <https://g1t.sh> |
| 27 | - Docs: <https://docs.g1t.sh> |
| 28 | - API: <https://api.g1t.sh> · MCP: <https://mcp.g1t.sh> |
| 29 | - Plan: [docs/PLAN.md](docs/PLAN.md) |
| 30 | - Limits you can hit today: [docs.g1t.sh/about/limitations](https://docs.g1t.sh/about/limitations/) |
| 31 | |
| 32 | ## What's in it |
| 33 | |
| 34 | ### The workspace |
| 35 | |
| 36 | | Feature | Status | |
| 37 | | --- | --- | |
| 38 | | The dock: Today, Chat, Notifications, Agents, Code, Artifacts and your pinned apps, with People, Workspace and your account at its foot; a bottom bar on phones | Live | |
| 39 | | Today: what agents finished, how much was accepted the first time, what's waiting on you, what was spent, and where to start | Preview | |
| 40 | | Chat: channels, direct messages and threads, live, with people and agents as members | Live | |
| 41 | | Notifications: mentions, reviews, approvals and alerts, with browser push | Live | |
| 42 | | People and teams: members, roles, nested teams, invites | Live | |
| 43 | | A directory of people and agents, profiles, org chart, teams with agent members | Coming | |
| 44 | | Artifacts: documents written together, live, by people and agents | Live | |
| 45 | | Slides, designs and dashboards as artifacts | Coming | |
| 46 | | Scratchpads: tools, reports and agents anyone can build on a copy of the data, promoted after review | Coming | |
| 47 | | Desktop app (Tauri, with a runner inside) and phone app (Expo) | Coming | |
| 48 | |
| 49 | ### Agents |
| 50 | |
| 51 | | Feature | Status | |
| 52 | | --- | --- | |
| 53 | | Agents hired into roles from templates, each with responsibilities, a voice, model limits and a budget | Live | |
| 54 | | `@g1t`, the orchestrator every workspace has, which hands work to the right agent with `hand_off` | Live | |
| 55 | | Your own model providers' keys (14 providers), and the AI Gateway | Live | |
| 56 | | g1t's hosted models (open to invited workspaces during the alpha) | Preview | |
| 57 | | Budgets per workspace, agent and task; guardrails; agents act with the asker's access | Live | |
| 58 | | Memory, sessions with live steps and cost, routines on a schedule | Live | |
| 59 | | An agent catalog of specialists, and foundational skills (documents, research, data, code, communication, files) | Coming | |
| 60 | | Agents on runners anywhere (g1t's, yours, your desktop), with sessions that persist between tasks | Coming | |
| 61 | | Agents answering in Slack and Teams | Coming | |
| 62 | |
| 63 | ### Code and Deployments |
| 64 | |
| 65 | | Feature | Status | |
| 66 | | --- | --- | |
| 67 | | Public and private repositories, git over HTTPS, creating a repository by pushing to it | Live | |
| 68 | | Issues, pull requests, line comments, reviews from people and agents | Live | |
| 69 | | Required checks, rulesets, CODEOWNERS, the merge queue | Live | |
| 70 | | Workflows from `.g1t/workflows` on g1t's runners or self-hosted ones (`crates/runner`) | Live | |
| 71 | | Assign an issue to g1t: a pull request, checks, a review and revisions until it passes (invited workspaces) | Preview | |
| 72 | | Any coding agent over MCP, recording its session onto its pull requests; why-blame | Live | |
| 73 | | Packages: npm, Cargo, Composer, Maven, NuGet, RubyGems, Go modules, container images | Live | |
| 74 | | Secret push protection, history scanning, dependency upgrade pull requests | Live | |
| 75 | | A preview of every pull request on `g1t.page`, production on merge, custom domains | Live | |
| 76 | | GitHub import, mirroring and pushing back | Live | |
| 77 | | A copy of the data for every preview, instant rollback, container apps kept warm | Coming | |
| 78 | | Git over SSH (waits on inbound TCP on Workers; use HTTPS) | Coming | |
| 79 | |
| 80 | ### Extend and run |
| 81 | |
| 82 | | Feature | Status | |
| 83 | | --- | --- | |
| 84 | | Integrations: the GitHub App, Sentry, Datadog, Jira, Linear, alerts | Live | |
| 85 | | REST API, OpenAPI, MCP server, webhooks, an event bus | Live | |
| 86 | | Usage billing with no seats, a public price book, spend limits, itemised invoices | Live | |
| 87 | | Marketplace of extensions, shared from public repositories; Drive, Gmail, Calendar and Slack integrations; Mail | Coming | |
| 88 | | Single sign-on (SAML, OIDC) and SCIM per workspace | Coming | |
| 89 | | Storage: databases and buckets per team, with copies of production for anything unreviewed | Coming | |
| 90 | | Self-hosting: the core forge in Docker Compose (agents, deployments and context search off) | Preview | |
| 91 | |
| 92 | ## Try it |
| 93 | |
| 94 | ```sh |
| 95 | # 1. Create an account and a workspace at https://g1t.sh/register (you need an invite). |
| 96 | |
| 97 | # 2. Connect Claude Code, then run /mcp in it to sign in through your browser. |
| 98 | claude mcp add --transport http g1t https://mcp.g1t.sh |
| 99 | |
| 100 | # 3. Ask it to open a pull request for an open issue. |
| 101 | ``` |
| 102 | |
| 103 | [Getting started](https://docs.g1t.sh/quickstart/) walks through this in |
| 104 | full. An assistant can do it for you from <https://g1t.sh/llms.txt>. |
| 105 | |
| 106 | ## Layout |
| 107 | |
| 108 | | Path | What it is | Language | |
| 109 | | --- | --- | --- | |
| 110 | | `apps/web` | The site: server-rendered React on a Worker. Holds no data. | TypeScript | |
| 111 | | `apps/docs` | The documentation site, with the API explorer. | TypeScript | |
| 112 | | `apps/api` | REST API and MCP server. | Rust | |
| 113 | | `services/identity` | Accounts, workspaces, sessions, keys and tokens. | Rust | |
| 114 | | `services/repos` | Repository registry, contents, forks, diffs, landing, git over HTTPS. | Rust | |
| 115 | | `services/work` | Issues, pull requests, reviews, check runs and sessions. | Rust | |
| 116 | | `services/events` | The event bus and its log. | Rust | |
| 117 | | `services/search` | Site-wide search and Explore. | Rust | |
| 118 | | `services/billing` | Usage, the price book, limits, invoices and payments. | Rust | |
| 119 | | `services/actions` | GitHub Actions workflows, runs, caches and self-hosted runners. | Rust | |
| 120 | | `services/security` | Push protection findings, history scanning and dependency upkeep. | Rust | |
| 121 | | `services/integrations` | Model providers, alerts, trackers and the GitHub App. | Rust | |
| 122 | | `services/webhooks` | Webhook deliveries. | Rust | |
| 123 | | `services/runner` | Starts sandboxes: for g1t agents, workflow jobs and the merge queue. | TypeScript | |
| 124 | | `services/projects` | Projects: what a workspace builds and runs, and where its code lives. | TypeScript | |
| 125 | | `services/deployments` | Builds, previews and production on `g1t.page`. | TypeScript | |
| 126 | | `services/pages` | Serves every app deployed on `g1t.page`, and custom domains. | TypeScript | |
| 127 | | `services/models` | The model proxy at `models.g1t.sh`. | TypeScript | |
| 128 | | `services/context` | The context hub: catalog, search and scorecards. | TypeScript | |
| 129 | | `services/chat` | Channels, direct messages, threads and their live sockets. | TypeScript | |
| 130 | | `services/agents` | The workspace's agents: definitions, templates, desks, memory and runs. | TypeScript | |
| 131 | | `services/docs` | Artifacts: documents, their spaces, sharing and live editing. | TypeScript | |
| 132 | | `services/notify` | Notifications: each person's feed, live counts and browser push. | TypeScript | |
| 133 | | `services/packages` | The package registries and container images. | Rust | |
| 134 | | `services/og` | Social cards at `og.g1t.sh`: a PNG per page, showing only what anyone may see. | TypeScript | |
| 135 | | `apps/status` | The status page at `status.g1t.sh`. | TypeScript | |
| 136 | | `apps/sudo` | g1t's own staff console. | TypeScript | |
| 137 | | `crates/runner` | The program inside a sandbox: runs an agent, a workflow job or a merge queue build, and reports back. | Rust | |
| 138 | | `crates/contracts` | Types and service interfaces for the Rust services. | Rust | |
| 139 | | `crates/kit` | Plumbing shared by Rust services on Workers. | Rust | |
| 140 | | `crates/g1t` | The `g1t` command line. | Rust | |
| 141 | | `crates/rules` | The rules engine for rulesets on branches and tags. | Rust | |
| 142 | | `crates/blobstore` | Object storage: R2 on Cloudflare, any S3-compatible store self-hosted. | Rust | |
| 143 | | `crates/actions` | Reads workflows and evaluates their expressions. | Rust | |
| 144 | | `crates/scan` | Secret and lockfile scanning, shared by services. | Rust | |
| 145 | | `crates/secrets` | Secrets at rest and signatures. | Rust | |
| 146 | | `crates/sshd` | Git over SSH, bridged to Cloudflare Artifacts. Not deployed yet. | Rust | |
| 147 | | `packages/contracts` | The same interfaces for TypeScript callers. | TypeScript | |
| 148 | | `packages/theme` | Design tokens and the logo, shared by the site and the docs. | CSS | |
| 149 | | `deploy` | `stack.jsonc`, every deployable part and its resources; `self-host`, the Docker Compose version. | JSON, Docker Compose | |
| 150 | |
| 151 | Each service is its own Worker, and each one that keeps data has its own |
| 152 | database. They call each other through service bindings and react to each |
| 153 | other through events. The core services (accounts, repositories, work, |
| 154 | events, billing, Actions, security and the API) are written in Rust; the |
| 155 | web apps and the rest of the Workers in TypeScript. The Language column |
| 156 | says which, part by part. |
| 157 | |
| 158 | ## Run your own |
| 159 | |
| 160 | ### On your own machine |
| 161 | |
| 162 | The core forge runs in Docker, with no Cloudflare account: |
| 163 | |
| 164 | ```sh |
| 165 | docker compose -f deploy/self-host/docker-compose.yml up --build |
| 166 | ``` |
| 167 | |
| 168 | Then open http://localhost:8787 and sign up. The confirmation mail is in |
| 169 | Mailpit at http://localhost:8025. Repositories, push and clone, issues, |
| 170 | pull requests and code browsing work, and the API and MCP server answer at |
| 171 | http://localhost:8789; packages and container images are kept in the |
| 172 | bundled S3-compatible store, RustFS. Agents, deployments and context search |
| 173 | are off in this version. |
| 174 | [docs/SELF_HOSTING.md](docs/SELF_HOSTING.md) says what works and what is next. |
| 175 | |
| 176 | ### On Cloudflare |
| 177 | |
| 178 | You need a Cloudflare account on the Workers Paid plan (Cloudflare |
| 179 | Artifacts, where repositories are stored, requires it), Node 22.22 or newer (`engines` in `package.json`; g1t is built on |
| 180 | Node 24), Rust with the `wasm32-unknown-unknown` target, and |
| 181 | Docker to build the sandbox image. |
| 182 | |
| 183 | ```sh |
| 184 | npm install |
| 185 | npx wrangler login |
| 186 | ``` |
| 187 | |
| 188 | Then, once: |
| 189 | |
| 190 | 1. Create the resources each part needs: D1 databases, queues, KV |
| 191 | namespaces, R2 buckets and the Cloudflare Artifacts namespace (`npx wrangler d1 |
| 192 | create <name>`, `npx wrangler queues create <name>`, and so on), and set |
| 193 | each part's secrets. `deploy/stack.jsonc` lists them all. |
| 194 | 2. Put your own `account_id`, database ids and hostnames in each |
| 195 | `wrangler.jsonc`. |
| 196 | 3. For [Deployments](https://docs.g1t.sh/guides/deployments/), which needs |
| 197 | the Workers for Platforms add-on and a zone for apps: |
| 198 | `scripts/setup-deployments.sh`. |
| 199 | |
| 200 | Deploy everything, migrations first, in dependency order: |
| 201 | |
| 202 | ```sh |
| 203 | scripts/deploy.sh |
| 204 | ``` |
| 205 | |
| 206 | Or only what changed, still in order: `scripts/deploy.sh billing web`. |
| 207 | Both use your `wrangler login`, not a token in `.env`. |
| 208 | |
| 209 | Create the first account by registering on your site, or with |
| 210 | `node services/identity/scripts/create-user.mjs <username>`. |
| 211 | |
| 212 | ## License |
| 213 | |
| 214 | [MIT](LICENSE) |