How metr/vivaria works
Vivaria is a web application and CLI for setting up task environments, running agents, and studying their trajectories. The main workflow spans user requests, server APIs, task/container execution, trace persistence, and run review or annotation; the playground and Inspect-log import are additional documented capabilities. The README and sampled excerpts support these broad connections, but not every route or service call, so uncertain wiring is omitted.
Main entry points: index.ts API routes · RunPage.tsx Web UI · DriverImpl.ts Execution drivers · DBTraceEntries.ts Trace entries
Components 22
Server API
- Web server
server/src/web_server.ts - API routes
server/src/routes/index.ts - Agent hooks API
server/src/routes/hooks_routes.ts - Task routes
server/src/routes/raw_routes.ts
Task and agent execution
- Task setup
server/src/docker/tasks.ts - Container runner
server/src/docker/TaskContainerRunner.ts - Execution drivers
server/src/DriverImpl.ts - Run queue
server/src/RunQueue.ts - LLM API proxy
server/src/services/PassthroughLabApiRequestHandler.ts - LLM forwarding
server/src/services/Middleman.ts
Research and results
- Interventions
server/src/routes/intervention_routes.ts - PostgreSQL
server/src/services/db/db.ts - Trace entries
server/src/services/db/DBTraceEntries.ts - Run review
ui/src/run/RunPage.tsx - Prompt playground
ui/src/playground/PlaygroundPage.tsx - Inspect importer
server/src/inspect/InspectImporter.ts - Inspect event conversion
server/src/inspect/InspectEventHandler.ts - Runs analysis
ui/src/runs/RunsPage.tsx
Other components
- Researcher
- Auth0
Connections 27
- Researcher → Web UI: uses
- Researcher → CLI: uses
- Web UI → Auth0: authenticates with
- Web UI → Web server: requests
- CLI → Web server: calls API
- Web server → API routes: dispatches
- API routes → Task setup: prepares tasks
- API routes → Run queue: schedules runs
- API routes → PostgreSQL: reads and writes
- Task setup → Execution drivers: gets setup data
- Task setup → Container runner: builds task image
- Container runner → Execution drivers: runs task
- Execution drivers → Agent hooks API: agent calls
- Agent hooks API → Trace entries: records entries
- Trace entries → PostgreSQL: persists entries
- Execution drivers → LLM API proxy: requests generations
- LLM API proxy → LLM forwarding: forwards requests
- LLM API proxy → Trace entries: records API activity
- Web UI → Run review: renders run view
- Run review → API routes: loads run data
- Run review → Interventions: submits annotations
- Web UI → Prompt playground: opens
- Prompt playground → API routes: uses API
- Web UI → Runs analysis: opens
- Runs analysis → API routes: queries runs
- Inspect importer → Inspect event conversion: converts events
- Inspect importer → Trace entries: imports entries