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_TOKEN

A project that mentions GIT_URL gets this from extraorbital provision without naming it.

What it writes

VariableExample
GIT_URLhttps://git.extraorbital.dev/cosmic-otter/default.git
GIT_USERNAMEcosmic-otter
GIT_TOKENso-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>]
FlagDefaultDescription
--slugdefaultA 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 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 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 main

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

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 — teams, projects and multiple instances
  • Pricing — plans, allowances and rates