gitcaskDocsGitHub

Pay for pushes, not repositories.

Open-source git hosting that keeps every repository in your own S3 bucket. An idle one costs its bytes and nothing else.

Idle repository
costs its bytes in the bucket
Being pushed to
the only repositories gitcask does work for
0
pushes in the last five seconds

Storage at bucket prices.

Users

Projects per user

Size per project

200,000 repositories, 10 TB

Monthly storage, list price

Hosted git on replicated disks

code.storage hot tier, $3.60 per GB

$36,000

Your S3 bucket with gitcask

S3 Standard, $0.023 per GB

$230

Storage only on both sides; compute, requests and egress are not included. Prices from the product notes (2026-09) and AWS us-east-1.

Lose every server. Lose nothing.

Three servers, one bucket. None of them holds anything the bucket does not.

Your users stay in your database.

EventYour databaseGit server copy
Sign-upminamina
Renamejun → junhojun
Deletionsora (deleted)sora
Suspensionkai (suspended)kai

Every account lives twice. Each rename, deletion and suspension must be copied across, and every miss orphans a repository.

Agents commit without a clone.

Request from your agent

POST /acme/site/api/commits
{
  "branch": "main",
  "message": "Add pricing page",
  "expected_head_oid": "c41f9e2…",
  "committer": {
    "name": "agent",
    "email": "agent@acme.dev",
    "when": "2026-10-07T09:12:00Z"
  },
  "changes": [{
    "op": "upsert",
    "path": "app/pricing/page.tsx",
    "content": "ZXhwb3J0IGRlZmF1bHQg…",
    "mode": "100644"
  }]
}

main

  1. c41f9e2Initial project

Press Send. One request becomes one commit on main.

Yours to run.

Apache-2.0, one binary, your bucket. Any S3-compatible store works, and any number of servers can share it.

Building with an agent? Point it at /llms.txt.

Push to a local gitcask in five minutes
docker compose up --build --wait
TOKEN=$(docker compose run --rm token --config /etc/gitcask/gitcask.standalone.toml token mint \
  --key /run/secrets/gitcask-private.pem --principal local-demo --scope local/demo:admin --ttl 1h)
curl -fsS -X PUT -H "Authorization: Bearer $TOKEN" http://127.0.0.1:8080/local/demo
git clone "http://ignored:$TOKEN@127.0.0.1:8080/local/demo.git"
cd demo && git commit --allow-empty -m first && git push -u origin HEAD:main