[{"data":1,"prerenderedAt":4},["ShallowReactive",2],{"readme:tracely-ai":3},"\u003Cdiv align=\"center\">\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FJwuthri\u002Ftracely-ai\u002FHEAD\u002Ffrontend\u002Fapp\u002Ficon.svg\" width=\"76\" alt=\"Tracely\" \u002F>\u003Ch1>Tracely\u003C\u002Fh1>\n\u003Ch3>Production failures become regression tests.\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>Trace-native CI\u002FCD for AI agents.\u003C\u002Fstrong> Tracely grades every agent trace as it lands, clusters the\nfailures into issues, freezes the bad runs into hermetic replayable cases, blocks the pull request\nthat would ship them again — and tells you the moment any of it happens.\u003C\u002Fp>\n\u003Cp>\n\u003Ccode>production trace\u003C\u002Fcode> → \u003Ccode>failure detection\u003C\u002Fcode> → \u003Ccode>regression test\u003C\u002Fcode> → \u003Ccode>CI gate\u003C\u002Fcode> → \u003Ccode>alert\u003C\u002Fcode>\n\u003C\u002Fp>\u003Cp>\u003Ca href=\"https:\u002F\u002Ftracely-ai.com\" rel=\"nofollow ugc noopener\">\u003Cstrong>Website\u003C\u002Fstrong>\u003C\u002Fa> · \u003Ca href=\"https:\u002F\u002Fdoc.tracely-ai.com\" rel=\"nofollow ugc noopener\">\u003Cstrong>Docs\u003C\u002Fstrong>\u003C\u002Fa> · \u003Ca href=\"https:\u002F\u002Fdoc.tracely-ai.com\u002Fproduct\" rel=\"nofollow ugc noopener\">\u003Cstrong>Product guide\u003C\u002Fstrong>\u003C\u002Fa> · \u003Ca href=\"#teach-your-coding-agent-tracely\" rel=\"nofollow ugc noopener\">\u003Cstrong>Agent skill\u003C\u002Fstrong>\u003C\u002Fa> · \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FJwuthri\u002Ftracely-ai\u002Fblob\u002FHEAD\u002Fguides\u002FOVERVIEW.md\" rel=\"nofollow ugc noopener\">\u003Cstrong>Guided tour\u003C\u002Fstrong>\u003C\u002Fa> · \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FJwuthri\u002Ftracely-ai\u002Fblob\u002FHEAD\u002Fguides\u002FDEMO.md\" rel=\"nofollow ugc noopener\">\u003Cstrong>2-min demo\u003C\u002Fstrong>\u003C\u002Fa> · \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FJwuthri\u002Ftracely-ai\u002Fblob\u002FHEAD\u002Fdesign\u002FREADME.md\" rel=\"nofollow ugc noopener\">\u003Cstrong>Design dossier\u003C\u002Fstrong>\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fgithub.com\u002FJwuthri\u002FTracely-ai\u002Factions\u002Fworkflows\u002Fci.yml\" rel=\"nofollow ugc noopener\">\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002FJwuthri\u002FTracely-ai\u002Factions\u002Fworkflows\u002Fci.yml\u002Fbadge.svg\" alt=\"CI\" \u002F>\u003C\u002Fa> \u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Ftracely-ai\u002F\" rel=\"nofollow ugc noopener\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Ftracely-ai?logo=pypi&amp;logoColor=white\" alt=\"PyPI\" \u002F>\u003C\u002Fa> \u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Ftracely-ai\u002F\" rel=\"nofollow ugc noopener\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpython-3.10%2B-blue?logo=python&amp;logoColor=white\" alt=\"Python\" \u002F>\u003C\u002Fa> \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FJwuthri\u002Ftracely-ai\u002Fblob\u002FHEAD\u002FLICENSE\" rel=\"nofollow ugc noopener\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-green.svg\" alt=\"License: MIT\" \u002F>\u003C\u002Fa> \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FJwuthri\u002FTracely-ai\u002Fstargazers\" rel=\"nofollow ugc noopener\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002FJwuthri\u002FTracely-ai?style=flat&amp;logo=github\" alt=\"Stars\" \u002F>\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Self-host the whole stack in one click\u003C\u002Fstrong> — API, worker, UI, Postgres, ClickHouse, Redis and MinIO:\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Frailway.com\u002Fdeploy\u002Fn5n_LE?referralCode=WCq5Cn&amp;utm_medium=integration&amp;utm_source=template&amp;utm_campaign=generic\" rel=\"nofollow ugc noopener\">\u003Cimg src=\"https:\u002F\u002Frailway.com\u002Fbutton.svg\" alt=\"Deploy on Railway\" \u002F>\u003C\u002Fa>\u003C\u002Fp>\n\u003Cbr \u002F>\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FJwuthri\u002Ftracely-ai\u002FHEAD\u002F.github\u002Fassets\u002Fdashboard.png\" alt=\"Tracely dashboard — trace and failure counts, the biggest failure clusters, recent traces and regression cases\" width=\"100%\" \u002F>\u003Cp>\u003Csub>\u003Ci>One workspace: what ran, what broke, what is already pinned as a test.\u003C\u002Fi>\u003C\u002Fsub>\u003C\u002Fp>\n\u003C\u002Fdiv>\u003Chr \u002F>\n\u003Ch2>Why another agent-observability tool?\u003C\u002Fh2>\n\u003Cp>Because observability stops at the dashboard. You can see that your agent broke — then what?\u003C\u002Fp>\n\u003Cp>Every eval tool asks you to \u003Cstrong>hand-author a dataset\u003C\u002Fstrong>: sit down, invent questions, write ideal\nanswers, keep them current as the product changes. That dataset is a guess about what might break.\u003C\u002Fp>\n\u003Cp>Production already handed you the real thing: a trace of the exact run that failed, with the exact\ninput, the exact tool calls, the exact model responses.\u003C\u002Fp>\n\u003Cblockquote>\n\u003Cp>\u003Cstrong>The recorded run \u003Cem>is\u003C\u002Fem> the test.\u003C\u002Fstrong> Tracely freezes that trace into a hermetic regression case and\nreplays it on every PR. Everything else — quality scores, failure clusters, suggested fixes, CI\nverdicts, trends, alerts — is \u003Cstrong>derived from the trace\u003C\u002Fstrong>. There are no hand-authored datasets.\u003C\u002Fp>\n\u003C\u002Fblockquote>\n\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>\u003C\u002Fth>\n\u003Cth>Dataset-first tools\u003C\u002Fth>\n\u003Cth>Tracely\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>Where tests come from\u003C\u002Ftd>\n\u003Ctd>You write them\u003C\u002Ftd>\n\u003Ctd>Promoted from real failing traces\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Fidelity to production\u003C\u002Ftd>\n\u003Ctd>A guess\u003C\u002Ftd>\n\u003Ctd>The exact failing run, byte for byte\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Cost to replay in CI\u003C\u002Ftd>\n\u003Ctd>Live model calls\u003C\u002Ftd>\n\u003Ctd>\u003Cstrong>$0\u003C\u002Fstrong> — recorded tool\u002FLLM fixtures\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>What happens on regression\u003C\u002Ftd>\n\u003Ctd>A dashboard number moves\u003C\u002Ftd>\n\u003Ctd>\u003Cstrong>The PR is blocked\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>How you find out\u003C\u002Ftd>\n\u003Ctd>You go and look\u003C\u002Ftd>\n\u003Ctd>\u003Cstrong>It comes to you\u003C\u002Fstrong> — Slack, email, your own webhook\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003Chr \u002F>\n\u003Ch2>The loop\u003C\u002Fh2>\n\u003Cp>Five steps, five pages in the app.\u003C\u002Fp>\n\u003Ch3>1 · Observe — every run, hierarchically\u003C\u002Fh3>\n\u003Cp>Traces arrive over plain OTLP. Agent semantics (\u003Ccode>agent.id\u003C\u002Fcode>, \u003Ccode>conversation.id\u003C\u002Fcode>, \u003Ccode>turn\u003C\u002Fcode>, \u003Ccode>step\u003C\u002Fcode>) are\npromoted to first-class indexed columns, so runs group into conversation threads instead of a flat\nspan soup. The waterfall shows agent → thinking → skill → generation → hand-off, with the failing\nspan in red and its I\u002FO beside it.\u003C\u002Fp>\n\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FJwuthri\u002Ftracely-ai\u002FHEAD\u002F.github\u002Fassets\u002Ftrace-timeline.png\" alt=\"Trace timeline — agent, thinking, skill, generation and delegate spans, with a nested sub-agent and the span's input\" width=\"100%\" \u002F>\u003Cp>Evaluators are \u003Cstrong>columns on the trace table\u003C\u002Fstrong>, not a separate tab — each one grades at conve\u003C\u002Fp>\n",1787581369215]