Skip to content

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 screenshot

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.

Reactor
What it does

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

Reactor
Why it's different

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

Cobragit worktrees (via os/exec)Centrifuge

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/

Your infrastructure

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
Where it fits

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

vs CI / unit-test runners

Reactor vs GitHub Actions, CircleCI, BuildKite

A polyglot test runner that isolates branches and doesn't bill per minute

Compare head-to-head
Ready when you are

Deploy Reactor. Today.

One Docker image. One compose stack. One afternoon to production. Reactor is waiting.