GibilGibil

Bug Reproduction

Reproduce bugs on a clean server with zero environmental noise

"It works on my machine." Clone the repo at the exact commit, reproduce the bug on a fresh server, iterate on a fix with zero environmental noise.

Works with any MCP-capable agent: Claude Code, Cursor, Cline. Examples use Claude because that's what we test against.

With your agent (MCP)

With gibil's MCP server wired up (setup), hand the bug report to your orchestrator:

Reproduce the bug in issue #123 on a clean VM at commit abc123def, then fix it.
Show me the failing test going green before you push.

The agent forges an isolated box, reproduces, and iterates the code-test loop, never touching your local environment:

create_server({ name: "repro", repo: "github.com/you/project", branch: "main", ttl: 60 })
vm_bash({ server: "repro", command: "git checkout abc123def && pnpm install && pnpm test:failing" })
// → { exit_code: 1, stdout: "TypeError: Cannot read properties of undefined..." }
// ...read files, patch, re-run until green...
vm_bash({ server: "repro", command: "pnpm test:failing" })   // → { exit_code: 0 }
destroy_server({ name: "repro" })

By hand (CLI)

gibil create --name repro --repo github.com/you/project --ttl 60

gibil run repro "cd /root/project && git checkout abc123def" --json
gibil run repro "cd /root/project && pnpm install && pnpm test:failing" --json
# → {"exit_code": 1, "stdout": "TypeError: Cannot read properties of undefined..."}

# fix, then verify
gibil run repro "cd /root/project && pnpm test:failing" --json
# → {"exit_code": 0}

gibil destroy repro

Or SSH in for interactive debugging:

gibil ssh repro
# root@repro:~# cd /root/project && node --inspect src/broken.js

Why gibil

  • Guaranteed clean state: no leftover node_modules from a previous branch, no stale configs
  • Exact reproduction: clone at the exact commit, install fresh deps, run the failing test
  • Two modes: scripted reproduction (MCP/gibil run) or interactive (gibil ssh)
  • Isolated: the agent works on a remote box, never your laptop
  • Auto-cleanup: TTL burns the server even if you forget

Set GITHUB_TOKEN to let the agent push the fix directly from the server. Private repos also need it for the initial clone. See Remote PR Workflow.

Next steps

On this page