# Git

> A private git remote with token auth, in one command.

<Callout title="Experimental support">
Git is the newest resource in the catalog and the one we run ourselves rather
than on a supplier's platform. It is a good fit for agent workflows — durable
versioned state, checkpoints, generated code you want to be able to walk back —
and we use it that way daily. It is not yet where we would put a repository that
has no copy anywhere else. Keep an independent backup of anything you would
mind losing, and treat this remote as a working copy rather than the only copy.
We will say so here the moment that changes.
</Callout>

```bash
npx extraorbital add git
```

```txt
✓ Provisioned git/default (repository cosmic-otter/default)
✓ Wrote 3 variables to .env

  GIT_URL, GIT_USERNAME, GIT_TOKEN
```

A project that mentions `GIT_URL` gets this from
[`extraorbital provision`](/docs/quickstart#how-autopilot-decides) without naming it.

## What it writes

| Variable | Example |
| --- | --- |
| `GIT_URL` | `https://git.extraorbital.dev/cosmic-otter/default.git` |
| `GIT_USERNAME` | `cosmic-otter` |
| `GIT_TOKEN` | `so-git-b3d61f…` |

A private remote you push to over HTTPS. No SSH keys to manage and no repository host
account, which suits agents that need durable versioned state: generated code, config,
checkpoints.

## Options

```bash
npx extraorbital add git [--slug <name>]
```

| Flag | Default | Description |
| --- | --- | --- |
| `--slug` | `default` | A second repository in the same project |

Up to 30 repositories of 100 MB each, so use one slug per repo:

```bash
npx extraorbital add git --slug checkpoints
```

## Prototype allowance

**30 repositories of up to 100 MB each** on the Prototype plan, with no backups.
Paid rates for Git are not live yet — while support is experimental the
allowance is the whole offer, and [the pricing page](/pricing) reads "coming
soon" rather than quoting a rate we are not ready to charge.

## Use it

```bash
git init && git add -A && git commit -m "initial state"
git remote add origin "https://${GIT_USERNAME}:${GIT_TOKEN}@git.extraorbital.dev/cosmic-otter/default.git"
git push -u origin main
```

Or build the URL from the variables the CLI already wrote:

```ts title="checkpoint.ts"
import { execFileSync } from "node:child_process";

const remote = new URL(process.env.GIT_URL!);
remote.username = process.env.GIT_USERNAME!;
remote.password = process.env.GIT_TOKEN!;

execFileSync("git", ["push", remote.toString(), "main"]);
```

Any machine in the project can pull the same remote — projects are shared by
committing `.extraorbital.json`, or by naming the project explicitly with
`--project`.

## Next

- [Quickstart](/docs/quickstart) — teams, projects and multiple instances
- [Pricing](/pricing) — plans, allowances and rates

---

More for agents: [Docs index](https://extraorbital.dev/sitemap.md) · [llms.txt](https://extraorbital.dev/llms.txt) · [agents.md](https://extraorbital.dev/agents.md)
