Git
A private git remote with token auth, in one command.
AI/LLM: this page is available in plain markdown at /docs/resources/git.md
npx extraorbital add git✓ Provisioned git/default (repository cosmic-otter/default)
✓ Wrote 3 variables to .env
GIT_URL, GIT_USERNAME, GIT_TOKENA project that mentions GIT_URL gets this from
extraorbital provision 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
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:
npx extraorbital add git --slug checkpointsPrototype 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 reads "coming soon" rather than quoting a rate we are not ready to charge.
Use it
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 mainOr build the URL from the variables the CLI already wrote:
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 — teams, projects and multiple instances
- Pricing — plans, allowances and rates