Disposable Gitea servers for AI experimentation
AI agents experiment by doing constant git work — branches, commits, issues, PRs. By default all of it hits production infrastructure.
That burns API rate limits and clutters real repos with noise nobody asked for. So what if the workspace were disposable instead?
A working CLI living in the microsoft org: 988 lines of Python across 8 source files, backed by a real test suite.
It ships as both a standalone CLI and an Amplifier bundle skill. Here is how it works.
No external database: SQLite, offline mode, and a hardcoded admin account (admin/admin1234). Actions, packages, and the repo-indexer are disabled.
Creation POSTs an admin API token, returned in plaintext exactly once. Now the empty sandbox needs the real repo.
By default it copies full history and all branches, typically a few seconds. The expensive metadata stays off unless you ask for it.
Six opt-in --include-* flags (all default False) add issues, PRs, labels, milestones, releases, or wiki — which can take several minutes.
An agent can now branch, commit, and open PRs freely inside the throwaway server. But an experiment trapped in a server you're about to delete is wasted work.
The open question the whole loop has to answer: how does value get out — without dragging the mess back with it?
Only the deliberate, finished branch leaves the sandbox. github_sync.promote() pushes it from Gitea to GitHub and creates a single pull request.
Never the experimental noise — just the one result you meant to ship. One thing is left to clean up.
The full loop runs: mirror the repo, experiment hard in isolation, promote the good branch, then delete the whole disposable server.
Real GitHub is left untouched — except for the single pull request you chose to open.
Mirror the real repo, experiment freely, promote only the good branch, and throw the rest away. The server is cheap; the production repo stays clean.
Fearless experimentation for agents — with zero production residue.
Status: SHIPPED
Repo: microsoft/amplifier-bundle-gitea · checkout /tmp/gitea-src · HEAD 732b18c on upstream/main, dated 2026-06-03. Migrated into the microsoft org on 2026-03-23.
Commands run:
grep -c '@main.command' src/amplifier_bundle_gitea/cli.py → 7 CLI commandsfind src -name '*.py' | xargs wc -l | tail -1 → 988 lines across 8 filesgrep -rn 'def test_' tests/ | wc -l → 38 tests across 5 filesgit rev-list --count upstream/main → 19 commitsgrep -o '"--include-[a-z]*"' cli.py | sort -u | wc -l → 6 opt-in flags (all default False)cat src/amplifier_bundle_gitea/constants.py → SQLite, OFFLINE_MODE, INSTALL_LOCK, disabled actions/packages/indexer, admin/admin1234git shortlog -sne upstream/main → contributorsPrimary contributors: David Koleczek (13 commits) · Brian Krabach (4) · Salil Das (2).
Gaps: The README's transitive-foundation inclusion chain is quoted but was not independently traced across repos — treat as a documented claim, not a verified fact. 27 material claims checked; 0 unsupported.