{ // dgit: a cgit-style git host that runs entirely on Cloudflare. // Each repository lives in its own SQLite-backed Durable Object ("cell"). // NOTE: the script name stays "git-cells" — Durable Object data is bound // to it, and renaming would orphan every hosted repository. "name": "git-cells", "main": "src/index.ts", "compatibility_date": "2026-08-01", "routes": [ { "pattern": "git.littledivy.com", "custom_domain": true } ], "limits": { // pack indexing of a large push is CPU-bound; 5 minutes is the paid-plan max "cpu_ms": 300000 }, "durable_objects": { "bindings": [ { "name": "REPO", "class_name": "RepoCell" }, { "name": "REGISTRY", "class_name": "Registry" } ] }, "migrations": [ { "tag": "v1", "new_sqlite_classes": ["RepoCell", "Registry"] } ], // Optional: with PACK_CACHE bound, pushed pack bytes are stored in R2 (off the // DO's SQLite) and full clones are served straight from R2 by the Worker. // Remove this binding to fall back to the SQLite-only path (as on celld). "r2_buckets": [ { "binding": "PACK_CACHE", "bucket_name": "dgit-pack-cache" } ], "vars": { "SITE_NAME": "git.littledivy.com", "SITE_DESC": "a fast webinterface for the git dscm, on Cloudflare", "SITE_OWNER": "divy" } // Push auth: run `wrangler secret put GIT_TOKEN` (use .dev.vars locally). }