pandaprobe Technical Briefing

Clone: git clone https://github.com/moses-y/pandaprobe.git

The Problem AI agent deployments lack centralized observability. Teams building with frameworks like LangGraph or CrewAI face fragmented tracing and no standardized evaluation pipeline, making it difficult to debug failures or measure agent reliability across iterations.

What This Does PandaProbe is a full-stack platform comprising a Python backend (173 files) and a TypeScript/React frontend (149 files). It provides tracing infrastructure and a metric library for agent evaluation. The backend is architected around a FastAPI-style router (backend/app/api/v1/router.py) that dispatches to route handlers in backend/app/api/v1/routes/, including traces.py, evaluations.py, and sessions.py. Tracing data flows into an ORM layer defined in backend/app/infrastructure/db/models.py and is accessed via repositories in backend/app/infrastructure/db/repositories/. Evaluation metrics are implemented as modular Python classes under backend/app/core/evals/metrics/, covering trace coherence, step efficiency, and tool correctness, with schemas defined in sibling schema.py files. The LLM integration layer resides in backend/app/infrastructure/llm/, abstracting provider calls through engine.py and providers.py.

How It Is Wired

  • Entry Points: API requests route through backend/app/api/v1/routes/cli.py (CLI) or the main router. The frontend API client is at frontend/src/lib/api/cli.ts.
  • Call Graph: Ingestion $\rightarrow$ traces.py route $\rightarrow$ trace_repo (DB write) $\rightarrow$ trace_service $\rightarrow$ Dashboard display. Evaluation runs are triggered via eval_service (backend/app/services/eval_service.py), which iterates over metric definitions to compute scores stored in the eval_runs table (migrations reflect this evolution, e.g., 572b122d002a_refactor_evaluations_to_eval_runs_and_).
  • External Dependencies: The system integrates with Redis (caching/queues via backend/app/infrastructure/redis/) and Celery (backend/app/infrastructure/queue/celery_app.py) for background task processing. LLM providers are configured via backend/app/infrastructure/llm/providers.py.

How To Use It

  • Setup: Clone the repository. The project uses yarn as the package manager (frontend) and standard Python tooling (backend). Docker is required for self-hosting.
  • Configuration: Environment variables are defined in backend/.env.example. Key settings typically include database connection strings and LLM API keys.
  • Running it: The provided ./start.sh script orchestrates the stack via docker-compose.yml. Once running, the Dashboard is available at http://localhost:3000 and the API reference at http://localhost:8000/scalar.

Real-World Use A team iterating on a LangGraph agent can use the SDK integration (referenced in docs) to automatically emit traces to the local PandaProbe instance. As the agent runs, spans appear in the dashboard. The team can then define a custom metric—extending the patterns in backend/app/core/evals/metrics/trace/—to evaluate plan adherence or tool correctness on a dataset of historical runs, visualizing the trade-offs directly in the UI.

Code Health & Issues Static analysis of the structure indicates a mature SDLC: 488 files, 59 test files (unit and integration), and a complete CI/CD pipeline (GitHub Actions: build, lint, test-unit, test-integration, codeql). The license is Apache 2.0. No structural red flags were detected. The codebase is evenly split between Python and TypeScript/React, with a clear separation of concerns between infrastructure, services, and API routing.

The Bottom Line PandaProbe offers a functional, self-hostable stack for agent tracing and evaluation without the immediate complexity of a SaaS commitment. The code is well-organized around a router/service/repository pattern, and the metric framework is extensible. It is well-suited for teams already using LangGraph or CrewAI who need to add observability and eval loops to their existing pipelines. The primary trade-off is the operational overhead of self-hosting versus the cloud offering, though the Docker setup mitigates this significantly.