tests.observer: One Test Runner for Every Repo in Your Portfolio
What if every test result in your org — human or AI-triggered — showed up on the task that produced it?
tests.observer is a central test orchestrator for multi-repo organizations. Register a project once, trigger runs from anywhere, stream results live, and auto-post the summary back to the task that triggered them.

The Problem with Multi-Repo Testing
Every project has its own test runner, its own CI pipeline, its own way of surfacing failures. Multi-project orgs end up with test results scattered across GitHub Actions, GitLab CI, CircleCI tabs, console output, and the occasional Slack message nobody reads.
When AI agents run tests, the results live in some session log nobody can find.
There’s no central record of “which projects passed today.” No way to link a test run back to the work item that produced it. And no way for a non-engineer to see whether their team is green.
What tests.observer Does
A central test orchestrator. Projects register via a tests.observer.json config. The service auto-discovers test files in tests/api/, tests/unit/, and tests/e2e/. A REST API + dashboard lets you trigger runs, stream live results via Server-Sent Events, and auto-post run summaries back to tasks.observer as structured task comments.
Spawn-based execution model supports Vitest, Jest, and Playwright out of the box.
Three Reasons Engineering Orgs Choose It
1. One Runner, Every Project
Register once via tests.observer.json. No per-project CI plumbing. New projects scaffolded by scaffold new are wired in automatically.
{
"projectId": "my-project",
"testTypes": ["unit", "api", "e2e"]
}
That’s the config.
2. Live Streaming, Not Log Files
SSE-based log streaming pushes batched results and log lines to any UI in real time. Polling-free. 200ms latency. Supports browser dashboards and AI clients alike.
You don’t refresh the page. You watch the run.
3. Tied to the Work That Produced It
Pass taskId to a run and the result lands back on that task in tasks.observer as a structured comment with pass/fail counts, duration, and a link to the full report. CI runs auto-link. AI sessions auto-link.
No more “where did that test result go?”
How It Compares
| Feature | tests.observer | GitHub Actions | CircleCI | Jenkins |
|---|---|---|---|---|
| Multi-repo dashboard | Yes | Per-repo | Per-repo | Plugin |
| Live SSE streaming | Yes | No | No | No |
| Task-linked results | Native | No | No | No |
| MCP / AI tools | Yes | No | No | No |
| Self-hosted | Yes | No | No | Yes |
| Per-build pricing | No | Yes | Yes | No |
Who Buys It
Platform / DX Teams in Multi-Repo Orgs
One place to run, view, and audit tests across the entire portfolio. No more bouncing between five CI dashboards to find which repo broke.
Engineering Managers
Cross-project pass/fail visibility without opening any CI dashboard. Green-board view of the whole org.
AI-Forward Teams
Every AI-driven code change runs tests and posts the result back to the originating task. Sessions can’t claim “done” until the test card lands.
Better Together: The Observer Suite
tests.observer is the CI layer of the Observer suite:
- tasks.observer receives the structured result comment on the task that triggered the run
- transmission.observer exposes
run_testsandget_test_runas MCP tools so AI sessions run tests and watch them complete - shield.observer assessments can run as an additional test type — gate decisions land in the same run record
- logging.observer receives execution telemetry
Standalone? Register any repo with a tests.observer.json. POST /api/run from your CI, your terminal, your Slack bot, or your own UI. Stream results via SSE. The dashboard, auto-detection, and result storage all work with zero suite dependency.
Getting Started
- Add
tests.observer.jsonto your repo - POST to
/api/projects(auto-config-scan) - POST to
/api/runfrom CI, terminal, or AI session - Stream live via SSE
- Link the run to a task with
taskId— result auto-posts back
TL;DR
tests.observer = test results that find the work that caused them.
One runner. Every repo. Live streaming. Auto-linked to tasks. Vitest, Jest, Playwright supported out of the box.
📞 Contact us to bring tests.observer to your portfolio.