Tracely

Trace-native CI/CD for AI agents: turn production failures into replayable regression tests and block the PR that would ship them again.

Stars
★ 1.2k
Last updated
2d ago
License
MIT
Primary language
Python

At a glance

Works with
Universal · cross-platformClaude Code · OpenAI API · Claude API
You'll need
DockerDocker ComposePython 3.10+Node.js 20pnpmuvClickHousePostgres with pgvectorRedisMinIO/S3Shell / CLINetwork accessLocal filesystemMCP Server
Typical use
A production support agent occasionally answers order questions wrong: ingest its OTLP traces, let a conversation-level judge grade each run, cluster the failures into one issue, then promote it to a regression case so it can never silently return.
Main limitation
Self-hosting means operating ClickHouse, Postgres with pgvector, Redis and MinIO — a substantially larger operational surface than a single-process tool
Source review
66/100 · Some gaps

What does this agent do, and when should you use it?

Tracely is a self-hostable observability and regression-testing platform built specifically for AI agents. Traces arrive over OTLP/HTTP from any language, and agent semantics such as agent.id, conversation.id, turn and step are promoted to first-class indexed columns in ClickHouse, so runs group into conversation threads instead of flat span noise. Online evaluators grade every run as it lands — structural checks that need no model, plus LLM-as-judge at conversation, run or span level — and failures cluster into issues with counts rather than hundreds of rows to read. One click freezes a failing trace into a hermetic case with a fail-to-pass contract, and CI replays it against recorded tool and LLM fixtures: offline, no API keys, no model spend. tracely gate then exits non-zero, posts a commit status and upserts a PR comment. The stack itself is a FastAPI backend, Celery/Redis workers, a Next.js frontend, Postgres, ClickHouse and MinIO, deployable via Docker Compose, Railway, Coolify or EKS.

Data enters through the SDK or any OTLP/HTTP exporter at POST /v1/traces, lands in S3/MinIO first for durability, moves through Redis/Celery, and a worker performs OTel mapping, registry upserts and ClickHouse event writes before running evaluate_run_task to produce scores and structural clustering and to fire alert flows. Evaluators are columns on the trace table: no-model structural checks plus LLM judges at conversation, run and span level, with scores streaming in live over SSE. Failures cluster structurally and semantically into issues, and each cluster can suggest the evaluator that would have caught it. Promoting a failing trace produces a hermetic case bundling recorded input, tool and LLM outputs as fixtures with a fail-to-pass contract; multi-turn behaviour uses scenarios, either scripted conversations Tracely drives at your agent's endpoint or an adversarial goal a red-team model pursues. On the CI side, tracely simulate, tracely replay and tracely gate plus a GitHub Action deliver per-case verdicts, a commit status and a PR comment. Alerts are a trigger plus a visual flow of steps: condition, Slack, email, templated webhook, LLM prompt and Python expression.

  1. A production support agent occasionally answers order questions wrong: ingest its OTLP traces, let a conversation-level judge grade each run, cluster the failures into one issue, then promote it to a regression case so it can never silently return.
  2. Debugging a multi-agent system: read the agent → thinking → skill → generation → hand-off waterfall with the failing span highlighted, and use the Fleet pixel-art view to explain hand-offs to non-engineers.
  3. Wiring a merge gate into GitHub Actions so a PR that reintroduces a known failure mode is blocked with a non-zero exit, a commit status and a results comment.
  4. A team whose CI cannot make live model calls: replay promoted cases hermetically against recorded fixtures, getting deterministic verdicts at zero API cost.
  5. Calibrating judges before trusting them: label judge verdicts against human review and read per-evaluator agreement to catch an over-flagging judge ahead of release.
  6. A compliance-bound organisation that needs traces and eval data to stay in its own network: self-host the whole stack via Docker Compose, Railway, Coolify or EKS.
  7. Letting a coding agent drive the workspace: point Claude Code or another MCP client at the /mcp endpoint to read traces and create evaluators, cases and alerts with an ordinary ingest key.

How do you install or deploy this agent?

The fastest path to the whole stack is Docker Compose, which brings up ClickHouse, Postgres, Redis, MinIO, the API, the worker and the frontend and seeds demo data:

git clone https://github.com/jwuthri-cloud/Tracely-ai && cd Tracely
docker compose --profile demo up -d --build --wait
open http://localhost:3001

For local development you need uv and Node 20+/pnpm:

cp .env.example .env
make infra-up      # clickhouse, postgres, redis, minio
make install       # uv sync + pnpm install
make migrate       # ClickHouse DDL + Alembic (Postgres)
make seed          # default project + ingest key → tracely_dev_key

The instrumentation SDK:

pip install "tracelyai-sdk[openai]"     # or [anthropic], [langchain], [all]

For hosted deployment, a Railway one-click template provisions the full stack; Coolify users run python3 deploy/coolify/setup.py --coolify-url … --app-domain … --api-domain …; Kubernetes manifests live under deploy/eks/README.md. Set SESSION_SECRET and SECRETS_ENCRYPTION_KEY (openssl rand -hex 32 each) when prompted; AUTH_MODE defaults to dev, which is login-free.

How do you use this agent?

Initialize the SDK once at startup and wrap a run — provider calls are captured automatically:

import tracely_sdk as tracely

tracely.init(
    endpoint="http://localhost:8000",
    api_key="tracely_dev_key",
    service_name="support-agent",
    env="prod",
    instrument="auto",
)

with tracely.trace(agent="support-agent", conversation="conv-1", user="u_42"):
    client.chat.completions.create(
        model="gpt-4o",
        messages=[{"role": "user", "content": "Where is order ORD-4471?"}],
    )

Any OTLP/HTTP exporter works too — point it at POST {endpoint}/v1/traces with Authorization: Bearer tracely_dev_key. To gate PRs with Tracely driving your registered agent endpoint:

      - uses: jwuthri-cloud/Tracely-ai/.github/actions/tracely-gate@master
        with:
          api:   https://tracely.your-co.dev
          key:   ${{ secrets.TRACELY_KEY }}

Or replay recorded cases hermetically:

pip install tracelyai-sdk
tracely replay planner --entrypoint my_pkg.agent:run

And connect a coding agent over MCP:

claude mcp add --transport http tracely http://localhost:8000/mcp \
  --header "Authorization: Bearer tracely_dev_key"

What are this agent's strengths and limitations?

Pros
  • Tests come from real failing production traces rather than a hand-authored dataset, so replay fidelity is the exact failing run byte for byte
  • Hermetic replay serves recorded tool and LLM fixtures, giving deterministic CI verdicts with no API keys and no model spend
  • The gate is an actual merge blocker — non-zero exit, commit status and PR comment — not a dashboard number that moves
  • Agent semantics (agent.id, conversation.id, turn, step) are first-class indexed ClickHouse columns, so the waterfall and thread views work out of the box
  • The entire stack is self-hostable with documented Docker Compose, Railway, Coolify and EKS paths, keeping traces in your own infrastructure
  • The backend doubles as an MCP endpoint at /mcp, so a coding agent can read traces and create evaluators, cases and alerts using an ordinary ingest key
  • A judge calibration screen compares judge verdicts to human review so an over-flagging judge is caught before it gates releases
Limitations
  • Self-hosting means operating ClickHouse, Postgres with pgvector, Redis and MinIO — a substantially larger operational surface than a single-process tool
  • Hermetic replay requires your agent to route tool and model calls through the SDK's call_tool / call_llm seam, which is more work for non-Python services
  • LLM judges, failure intelligence and meta-analysis depend on OPENROUTER_API_KEY or a per-workspace OpenRouter key; without one those features degrade
  • The Celery worker does not hot-reload under the Docker development setup, so edits require a container restart
  • AUTH_MODE defaults to dev, which is login-free; production use requires switching to local or clerk and setting SESSION_SECRET
  • Webhook and Python-expression alert steps cross a trust boundary, controlled only by ALLOW_PRIVATE_URLS, so outbound access needs its own review

How does this agent compare with similar options?

The README positions Tracely against two named categories. First, observability tools that stop at the dashboard: you can see the agent broke, but there is no next step. Second, dataset-first eval tools that ask you to hand-author questions and ideal answers, which is a guess about what might break. The README also states the write path deliberately mirrors Langfuse's proven design, reimplemented in Python, but with agent semantics promoted to first-class indexed columns rather than read-time strings.

Key facts side by side with the most closely related agents.

Agent Source review Form / cost Stars Updated Language Full support on
Tracely This agent 66 · Some gaps — ★ 1.2k 2d ago Python Claude Code · OpenAI API · Claude API
Kitaru 56 · Major gaps CLIFreemium ★ 316 1d ago Python Codex · Claude Code
LangWatch 78 · Good CLIFreemium ★ 5k 1d ago TypeScript OpenAI API · Claude API
Coder Eval 86 · Good CLIFree + model costs ★ 156 5d ago Python Codex · Claude Code · OpenAI API · Claude API

How does FollowAgents rate this agent?

FollowAgents source review · FARS-2.1
Some gaps
66/ 100 5-point scale 3.3 / 5
Trust 17/29
Reliability 9/14
Adaptability 14/18
Convention 12/18
Effectiveness 9/13
Verifiability 5/8
Why each dimension lost points
Trust17 / 29 · 2.9/5

Evidence shows: CI workflow uses minimal permissions (contents: read) and OIDC Trusted Publishing with no long-lived token; alert webhooks re-validate assert_public_url right before the request, blocking internal/metadata addresses; the Python-expression step uses simpleeval and rejects __import__; test conftest hard-disables real keys, Stripe, PostHog, OpenRouter to avoid external side effects, showing sensitive-data and external-effect awareness; SECURITY.md scopes cross-tenant, injection, and key-leak risks. Deductions: user-confirmation is thin (alerts/assistant/gate can produce external effects without an explicit confirm flow); rollback is only docker compose down -v and purge, lacking data/config rollback detail; dependency audit is continue-on-error advisory only, not blocking.

Reliability9 / 14 · 3.2/5

Evidence shows: CI uses uv sync --frozen to pin deps and runs ruff+pytest, frontend build, and both prod images; release verifies tag matches pyproject version and smoke-tests the built wheel; the alert engine returns readable errors for cycles, orphan nodes, and template errors instead of crashing. Deductions: dependency availability leans on external services (ClickHouse/Postgres/Redis/MinIO/OpenRouter/font CDN) and next build needs retries for network flakiness; failure messages are clear but mostly at test-assertion level, with no unified runtime error contract shown.

Adaptability14 / 18 · 3.9/5

Evidence shows: README covers multi-language OTLP, three gate integration modes (Tracely calls agent / gate CI traces / offline replay), multiple deploy targets (Railway/Coolify/EKS/self-host), and multiple auth modes; scenarios and capability boundaries are well described. Deductions: trigger precision depends on env=ci and agent naming conventions with room for misconfiguration; environment fit is broad but largely documented rather than systematically bounded.

Convention12 / 18 · 3.3/5

Evidence shows: README has clear information architecture (Why/loop/box/quickstart/gate/alerts/MCP), detailed install steps with ports and make targets, a complete MIT LICENSE, and a proper SECURITY.md. Deductions: no CHANGELOG/version history (only sdk-v* tag convention); known limitations are scattered rather than a dedicated section; maintenance responsibility points to a single author and latest master only, with no governance/maintainer statement; naming stability distinguishes tenant/agent but shows historical drift (test comments note two prior shapes).

Effectiveness9 / 13 · 3.5/5

Evidence shows: strong output usability (non-zero gate exit, commit status, PR comment, multi-channel alerts), offline replay at zero cost is a clear selling point, and the marginal value (production traces to regression tests) is persuasive. Deductions: cost-benefit is mostly README self-assertion without quantified benchmarks; offline replay requires the agent to route through the SDK call_tool/call_llm seam, limiting applicability.

Verifiability5 / 8 · 3.1/5

Evidence shows: test files make concrete assertions on alert DAG, template namespace, webhook header/body rendering, SSRF checks, and Python-expression sandboxing, so claims map to code; ingest-derived data is tagged with tracely.io_source, separating fact from inference. Deductions: many README capabilities (clustering, calibration, trends, assistant) link only to external docs with no in-repo implementation evidence; cross-source corroboration is limited, mostly single README assertions.

Risks and how to mitigate them
  • Alerts, the assistant, and gates can trigger external side effects (Slack/email/webhook/LLM calls) without an explicit user-confirmation flow; review rules manually before enabling in production.
  • Dependency audit (pip-audit/pnpm audit) is continue-on-error and does not block PRs, so known vulnerabilities may merge.
  • Offline replay requires the agent to route through the SDK call_tool/call_llm seam; unmodified agents cannot get zero-cost deterministic replay.
  • Publisher identity is not verified by the FollowAgents enterprise registry and maintenance is concentrated in a single author, so long-term maintenance and update path are uncertain.
  • No CHANGELOG; version evolution and breaking changes lack a centralized record.
Evidence confidence: Low Reviewed Nov 04, 2026 Reviewed revision 128a5d806704
See the full review method →

FAQ

Does running Tracely incur model costs?
Not for CI. Hermetic replay serves recorded tool and LLM fixtures, so no model is called and the cost is zero. Online judging, failure intelligence and meta-analysis do need an LLM, supplied through the server-wide OPENROUTER_API_KEY or a workspace's own OpenRouter key; with no key at all those features degrade rather than crash.
My agent isn't written in Python — can I still integrate?
Yes. Any OTLP/HTTP exporter can push traces to /v1/traces. Gate option A has Tracely call your registered HTTP endpoint and drive scenarios itself, so CI installs nothing. Replay also accepts tracely replay planner --cmd "node run.js", but hermetic replay requires tool and model calls to go through the SDK's call_tool / call_llm seam.
What is the fail-to-pass contract on a promoted case?
When a failing trace is promoted to a case, it must fail on the old code and pass on the fix; otherwise the promotion is not trusted. That gives every regression case a verifiable causal link rather than a mere snapshot.
What does a minimal self-hosted deployment look like?
docker compose --profile demo up starts ClickHouse, Postgres, Redis, MinIO, the API, the worker and the frontend and runs migrations and seeding. For real deployments there is a Railway one-click template, the Coolify setup.py, or a single-namespace EKS manifest, and you must set SESSION_SECRET and SECRETS_ENCRYPTION_KEY.
Won't an aggressive judge block PRs it shouldn't?
Evaluators support advisory verdicts that do not gate, deterministic sampling, and per-agent/env targeting. A calibration screen compares judge verdicts against human review and reports per-evaluator agreement, missed failures and over-flagging — the README recommends calibrating before letting a judge gate a release.
View on GitHub ↗ Install ↓

Compare agents like this one

The same FARS review applied across the shortlist this agent qualifies for.

Related agents