Project Info
Inspiration
AI teams have strong tools for collecting traces, prompts, latency, and token usage, but a failed agent run still leaves a developer manually searching events and guessing at the cause. We wanted to move beyond “here is the trace” to “here is the failure, the evidence, the fix, and a way to verify it.” AgentOps Studio explores what debugging looks like when GPT-5.6 is the reasoning engine while deterministic software remains responsible for verification.
What it does
AgentOps Studio turns a failed AI-agent execution trace into a complete debugging workflow. In our synthetic Build Week scenario, a customer-support refund agent finds a customer ID, sends customer_name to a tool that requires customer_id, retries the unchanged invalid call, and fails. GPT-5.6 analyzes the normalized trace and returns a structured diagnosis with: a root cause and contributing factors; observed facts separated from inferences; evidence strength and missing telemetry; a recommended developer-controlled action; and citations to exact trace-span IDs. A developer can jump from each claim to its supporting evidence, generate and review a declarative regression evaluation, and run that evaluation deterministically against the failed run. The developer then explicitly selects a prepared agent version and replays the scenario in a mocked sandbox. The same reviewed evaluation passes, and the UI calculates the before-and-after changes in latency, cost, tokens, spans, and tool calls. When telemetry is incomplete, AgentOps Studio returns an explicit insufficient-evidence result rather than inventing a root cause. If live model access is unavailable, the demonstration uses an honestly labeled, schema-validated cached result previously generated by the same GPT-5.6 workflow.
How we built it
AgentOps Studio is a single Next.js 16 App Router application written in strict TypeScript and React 19. Zod defines bounded contracts for normalized traces, diagnoses, and declarative evaluations. Synthetic fixtures provide deterministic broken, retry, fixed, and insufficient-evidence runs. The OpenAI TypeScript SDK connects to GPT-5.6 through a LiteLLM OpenAI-compatible Responses API endpoint with strict structured output. The application validates every cited span and rejects evaluation predicates outside a closed vocabulary. GPT-5.6 interprets evidence and drafts tests; TypeScript code owns pass/fail and every comparison metric. Reviewed evaluations, normalized runs, replay lineage, and results are persisted in DuckDB. Replay is deliberately constrained to one synthetic refund-agent workflow, with mocked tools that can record intent but cannot contact refund, email, payment, or customer systems. Vitest covers schemas, citation integrity, deterministic evaluation, replay safety, sanitization, configuration, and persistence. Playwright exercises the complete credential-free golden path. A standalone Debian-based Docker image provides a reproducible deployment target. How ChatGPT and Codex accelerated the build Before implementation, I used ChatGPT as a product-thinking partner to compare several possible Build Week directions: a broad agent platform, observability dashboards, evaluation tooling, replay, governance, and knowledge graphs. That brainstorming exposed the stronger product wedge: do not merely display a trace; explain the failure from evidence and prove whether a fix works. This narrowed the idea into the evidence-to-proof workflow implemented in AgentOps Studio. I then used two Codex threads with distinct responsibilities: Core developer thread (019f6216-1495-7071-a43f-8c1753bd8fa6): planning, architecture, implementation, tests, persistence, safety, and release work. Reviewer thread (019f6c2c-cfdb-7242-a672-e64a4a5da5e1): independent review of the plans and source code, evidence and claim checking, risk discovery, and demo critique. The two threads communicated asynchronously through repository-local Markdown. The core thread wrote the brainstorm, product plan, backlog, ADRs, typed contracts, implementation notes, and verification evidence. The reviewer read those artifacts alongside the code and returned structured critiques in review.md, review_v2.md, and review-demo-story-line.md. The core thread then reconciled the findings into TASKS.md, the implementation, tests, and final demo. Markdown acted as a shared protocol and left an auditable path from idea, through code review, to revision. Across that loop, Codex helped: turn the initial product thesis into a bounded vertical slice and dependency-aware backlog; document eight architecture decisions before implementation; scaffold the strict Next.js, TypeScript, ESLint, Prettier, Vitest, and Playwright environment; implement the trace schema, GPT-5.6 diagnosis boundary, closed evaluation DSL, deterministic evaluator, sandboxed replay, DuckDB adapter, and product UI; catch unsafe partial LiteLLM configuration and replace it with atomic key-and-endpoint selection; add trace redaction, truncation, cached fallback categories, spend controls, reset protection, and container packaging; and run iterative lint, type, unit, production-build, live-model, browser, and container verification loops. The reviewer loop drove a key product boundary: GPT may interpret and propose, but deterministic application code must verify. The detailed collaboration record is preserved in the repository’s Codex build log.
Challenges we ran into
The hardest challenge was preventing a convincing explanation from being mistaken for a correct one. We separated observed facts from inferences, required facts to cite real span IDs, and reject model output containing unknown citations. Missing telemetry became a first-class insufficient-evidence state. A second challenge was deciding where AI should stop. GPT-5.6 is excellent at interpreting a trace and proposing a regression test, but it should not decide whether its own test passes. We created a small declarative evaluation language and a deterministic evaluator. Finally, safe replay can easily become a generic orchestration platform. For Build Week we deliberately constrained replay to one synthetic workflow with mocked side effects. That made the end-to-end result testable, reproducible, and honest.
Accomplishments we're proud of
Diagnosis claims focus the exact supporting spans in the trace. Unsupported citations and evaluation predicates are rejected at the application boundary. Missing telemetry produces insufficient_evidence instead of a guessed root cause. One reviewed evaluation fails the broken run and passes the corrected sandbox replay. Before-and-after metrics are calculated from stored run data rather than supplied by the model. The complete workflow is deterministic, credential-optional, and demonstrated in 2 minutes 10 seconds. The trace, cited diagnosis, reviewed evaluation, replay lineage, and verified result become reusable run-level debugging knowledge.
What we learned
AI-native developer tools need stronger boundaries, not fewer. Structured output is only the start: model claims must be checked against domain evidence, and deterministic code should retain authority over verification and metrics. We also learned that a narrow, polished workflow communicates more value than a broad observability dashboard. Treating fixtures as stable product contracts let us iterate quickly without losing trust in the demo.
What's next
Today, knowledge is scoped to persisted runs and their replay lineage. Next, we want to add a bounded OpenTelemetry ingestion adapter and a cross-run context graph connecting runs, agent versions, prompts, tools, evaluations, and verified fixes. That would let teams ask: Have we seen this failure before? Which change caused it? Which fix actually held? After that: instrumentation adapters, prompt and configuration diffs, saved-evaluation CI checks, and additional agent-specific replay vocabularies. Generic replay and production integrations will come only after their safety boundaries are proven. Repository and testing Source code, MIT license, setup instructions, synthetic sample data, supported-platform notes, and a credential-free judge path are available at: https://github.com/afuyo/AgentOpsStudio
AgentOps Studio
From opaque agent failure to evidence-linked diagnosis and executable proof.
AgentOps Studio turns a failed AI-agent trace into an evidence-linked diagnosis, a reviewed deterministic regression evaluation, and a safe replay comparison. The hackathon build focuses on one synthetic refund-agent workflow and uses GPT-5.6 through a LiteLLM endpoint only for interpretation and evaluation drafting. Application code owns validation, pass/fail, replay, and metrics.
- Hackathon category: Developer Tools
- Repository: https://github.com/afuyo/AgentOpsStudio
- License: MIT
Judge Quick Start — No Credentials Required
The complete cached demo, deterministic evaluation, sandboxed replay, comparison, and browser test run without LiteLLM or OpenAI credentials.
pnpm install
cp .env.example .env
pnpm demo:reset
pnpm dev
Open http://localhost:3000. The example environment defaults to DEMO_MODE=true. Do not provide judges with private LiteLLM credentials.
Architecture
app/— Next.js UI and server API routes.src/domain/— bounded trace contract, evaluation engine, replay, and comparison.src/server/— LiteLLM configuration, demo guard, and DuckDB adapter.fixtures/— synthetic canonical traces and cached diagnoses.e2e/— credential-free Playwright golden path.docs/adr/— architectural decisions and constraints.
DuckDB stores normalized runs/spans, reviewed evaluations, and replay lineage. A single application replica owns one database file; this design is intentionally not a multi-writer production architecture.
Run Locally
Requirements: Node.js 22+, pnpm 10.30+, and Linux/macOS with a supported DuckDB native binary.
pnpm install
cp .env.example .env
pnpm demo:reset
pnpm dev
For optional live analysis, set DEMO_MODE=false and choose one provider:
-
LiteLLM (preferred): configure
LITELLM_API_KEY,LITELLM_BASE_URL, andLITELLM_MODEL=gpt-5.6-sol. -
Direct OpenAI: leave every
LITELLM_*value blank and configure:OPENAI_API_KEY=sk-your-key-here OPENAI_BASE_URL=https://api.openai.com/v1 OPENAI_MODEL=gpt-5.6-sol OPENAI_TIMEOUT_MS=60000
Never commit credentials. Live credentials are required only for Run live analysis, pnpm model:check, and pnpm quality:ai. Next.js loads .env for the application; export the same values into your shell before running the standalone model-check and AI-quality scripts.
Sample Data
All fixtures are synthetic:
| Run | Purpose |
|---|---|
run_refund_broken_v1 | Wrong identifier and unchanged retry |
run_refund_retry_v1 | Repeated lookup without changed input |
run_refund_fixed_v2 | Corrected expected behavior |
run_refund_unknown_failure_v1 | Insufficient telemetry; diagnosis must decline certainty |
Fixture IDs are stable test interfaces.
Supported Platforms
- Node.js 22+ with pnpm 10.30+
- Linux and macOS with a supported DuckDB native binary
- Docker on Linux, macOS, or Windows
- Chromium for the automated Playwright judge path
Native Windows development has not been verified; use Docker or WSL.
Verify
pnpm lint && pnpm typecheck && pnpm test && pnpm build
pnpm test:e2e:install # once
pnpm test:e2e
pnpm model:check and pnpm quality:ai make paid/live calls and require LiteLLM credentials. Unit and browser tests are deterministic and credential-free.
Three-Minute Judge Path
- Open
run_refund_broken_v1; inspect the cached evidence-linked diagnosis. - Generate the evaluation draft, review its closed JSON contract, and approve it.
- Run the evaluation and observe the expected failure with cited spans.
- Select
refund-agent-v2-resolve-customer-idand run the sandboxed replay. - Confirm no side effects, a passing evaluation, and the calculated Fail → Pass comparison.
Reset locally with pnpm demo:reset or POST /api/demo/reset. In production, the reset route requires x-demo-reset-token matching DEMO_RESET_TOKEN. GET /api/health reports storage and cached/live mode without exposing secrets.
Stop any running Next.js development server before pnpm test:e2e; Playwright starts an isolated server on port 3100.
Container Deployment
docker build -t agentops-studio .
docker volume create agentops-data
docker run --rm -p 3000:3000 -v agentops-data:/data agentops-studio
Deploy one replica to a container host with a durable /data volume. Configure LiteLLM variables only if live analysis is enabled; cached mode survives gateway/model unavailability.
Safety and Limitations
Trace input is validated, bounded, and redacted before persistence, rendering, or prompting. Refund and email tools only record sandboxed intent. Data is synthetic. The MVP supports one fixture-backed workflow, one deterministic template-backed prepared-version replay, one process-local live-call quota, and a single DuckDB writer. It does not claim generic replay, autonomous repair, or production-scale ingestion.
GPT-5.6 and Codex
GPT-5.6 performs structured evidence interpretation and drafts a closed regression contract through LiteLLM. The application validates structured citations and owns evaluation results and metrics. The live three-case quality suite passed with cached fallback disabled, including the case where missing telemetry must produce insufficient_evidence.
Codex converted the initial brainstorm into the plan, backlog, design contract, and architecture decisions; implemented the trace, diagnosis, evaluation, replay, persistence, safety, and release layers; and ran the unit, live-model, browser, and container verification loops. See docs/codex-build-log.md for concrete examples and decision history.
The product direction began as a ChatGPT brainstorming session. A core-development Codex thread and a separate reviewer thread then communicated asynchronously through Markdown plans, ADRs, implementation summaries, and adversarial reviews. Their roles, Thread IDs, and artifact handoff are documented in SUBMISSION.md.
Post-Hackathon Roadmap
The next ingestion boundary is OpenTelemetry:
Agent or observability platform → OpenTelemetry → AgentOps validation → DuckDB
A provider-neutral adapter would validate, redact, and project OTel spans into the existing bounded trace contract. The first increment will accept a deterministic OTel JSON export; a live OTLP endpoint and collector integration will follow.
Submission
Ready-to-paste project copy, judge evidence, and the remaining external fields are collected in SUBMISSION.md.
See docs/codex-build-log.md for where Codex accelerated delivery and where GPT-5.6 is used.
Analysis
View
Metric
- 1
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CSSIn code
- HTMLIn code
- Next.jsIn code
- OpenAIIn code
- ReactIn code
- TypeScriptIn code
- DockerClaimed
6 of 7 appear in the indexed code. 1 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
530 KB
Source files
71
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
afuyo/AgentOpsStudio
90 files · 3.2 MB · @ 6f38fb9
Structure
Interface
7 files · 8%Screens, components and styles rendered to the user.
API & routing
8 files · 9%Request entry points: routes, handlers and controllers.
Application logic
12 files · 13%Domain rules, services and shared utilities.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- Markdown32%
- YAML30%
- TypeScript27%
- HTML6%
- CSS5%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
package.json
npm · 17- @duckdb/node-api
- next
- openai
- react
- react-dom
- zod
- +11 more
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.