Reactor
Polyglot test runner with per-branch isolation
A web UI and REST API for queuing test jobs across JavaScript, Python, Go, .NET, Java, and PHP against Git branches using disposable worktrees.
- Docker container
- Kubernetes Helm chart
- 6 queue backends
- 2 auth methods
- 1 cache engine
- REST API + OpenAPI 3.0.3
- Realtime WebSocket channels
- MCP server for AI agents
- Single Go binary — zero external deps
- Stateless horizontal scale
Reactor gives your team a unified test runner — queue jobs by branch and command, watch results in a dashboard, and keep every run isolated in a fresh Git worktree. Use it for Node and browser suites, Python test harnesses, Go packages, dotnet test runs, Maven or Gradle builds, and PHP projects alike. Shared dependency caches keep repeat runs fast. Redis job queue, optional webhooks, and mirror-based branch discovery make it a practical CI/CD control plane for mixed-language teams.
Key features
Web UI to queue test jobs — branch, command, test suite, optional filter
Git worktree isolation per job — no shared checkout state
Shared dependency caches across jobs for speed
Redis queue with branch mirror-based discovery
Worker management: list, stop, clean up
Optional webhook notifications on job completion
Paginated result history with filtering
Per-branch and per-command test suite detection
Optional UI login and/or API token auth
Where it goes beyond the obvious
Git worktree isolation for test jobs — no checkout conflicts
Shared dependency cache strategy with automatic refresh handling
Mirror-based branch discovery without API calls
Tech highlights
- Git worktrees for branch-isolated test execution
- Language-agnostic command runner with shared dependency caches
- Redis job queue with optional webhooks
- Supports: JavaScript, Python, Go, .NET, Java, PHP
Built on
REST API surface
- POST /push Queue test job (ref, command, suite)
- GET /results Past runs
- GET /results/{id}/logs Stream logs
- GET /workers Active workers
- DELETE /workers/{idx} Stop a worker
- GET /branches Branches from mirror cache
- GET /suites?ref= Test suites per branch
Full spec at GET /openapi — Swagger UI at /swagger/
Backends you can actually pick from.
This service speaks the backends below natively. Swap with a single environment variable.
Queues
- Redis
- Kafka
- RabbitMQ
- STOMP
- SQS
- SNS
Cache
- Redis
Auth
- Username/password
- Bearer token
Use cases
Mixed-language teams needing CI/CD test visibility
Development teams running local test dashboards
Pull request testing with branch-specific commands
Learning environments teaching test patterns
Multi-version testing across project branches
Reactor vs GitHub Actions, CircleCI, BuildKite
A polyglot test runner that isolates branches and doesn't bill per minute
Deploy Reactor. Today.
One Docker image. One compose stack. One afternoon to production. Reactor is waiting.