- Hosted is the default. When you follow the Quickstart, you’re using it.
- You’re billed in testing minutes: the time a sandbox is running.
- Your plan sets how many sandboxes can run at the same time.
Plans
Pro starts with a 14-day free trial. Start a plan from the TestDriver console.
On the Free plan, new sandboxes are refused once you’ve used your 30 minutes. Upgrade to keep testing.
If you install TestDriver from GitHub Marketplace, GitHub bills you instead. The Open Source plan is free with 300 testing minutes per month. The Team plan is $20 per seat per month with 120 testing minutes per seat.
How testing minutes are counted
Testing minutes run while a sandbox is running. That includes sandboxes started by:- Your test runs, locally and in CI.
- The TestDriver agent, when it reviews a pull request or writes a test.
keepAlive uses minutes until it shuts down. Keep keepAlive as short as you need.
Concurrency
Each running sandbox uses one of your plan’s slots. A slot frees up when its sandbox shuts down. When every slot is busy, a new test waits for a free slot instead of failing. The SDK retries every 10 seconds, for up to 60 seconds by default. SetTD_CONCURRENCY_MAX_WAIT to change the wait. See Concurrency limits.
To stay within your slots, limit how many test files Vitest runs at once:
concurrency group stops two runs on the same branch from competing for slots. A new push cancels the older run:
.github/workflows/testdriver.yml
When to self-host
Consider self-hosting when you need to:- Run tests on your own infrastructure, without per-minute billing.
- Use your own AI provider keys.
- Run custom VM images with your software preinstalled.
- Run more tests in parallel than the hosted plans allow.
Next steps
Quickstart
Run your first test on a hosted sandbox.
Run tests in CI/CD
Run your tests on every push and pull request.
Self-hosted
Run sandboxes on your own infrastructure.
Run tests
Run tests locally and in parallel.

