Provon Quickstart
By the end of this guide you will have one agent trace in the Workbench, diagnostic Rules ready to produce Findings, and an optional repair handoff.
If you have not installed Provon yet, see Install Provon. If you prefer to follow the built-in Workbench setup flow, see Workbench onboarding.
Prerequisites#
- A Provon project in the hosted Workbench or a local/self-hosted deployment. See Install Provon.
- A model-provider API key if you use the Gateway path.
- A GitHub token or OAuth app if you want to create repair issues.
- Open Provon
Open
https://app.provon.devand sign in. The Workbench onboarding walks you through creating an organization, project, and API key.For a one-line self-hosted install:
curl -fsSL https://provon.dev/install.sh | shThen source the generated environment file and start the server. The installer output tells you the exact command.
For source development:
git clone https://github.com/provon/provon cd provon pnpm install pnpm devThen open
http://127.0.0.1:3000. The local development server runs the API on port3001by default; the Workbench is on port3000.Port depends on how you run Provon:
Mode Workbench API / Gateway origin Installer production ( provon-server)http://127.0.0.1:3000http://127.0.0.1:3000(single origin)Source development ( pnpm dev)http://127.0.0.1:3000http://127.0.0.1:3001The
PROVON_API_URLandPROVON_GATEWAY_URLexamples below default to3001(thepnpm devsplit). On the installer single origin, setPROVON_API_URL=http://127.0.0.1:3000andPROVON_GATEWAY_URL=http://127.0.0.1:3000/gateway/v1.The local runtime stores metadata in libSQL/SQLite, telemetry in DuckDB, and blobs on the local filesystem under
.provon/. - Create a project API key
During onboarding the Workbench creates a project and shows an API key. If you skipped that step or need another key:
- Open API keys in the project sidebar.
- Select Create API key.
- Copy the secret when it is shown. It cannot be retrieved later.
Important
The secret is shown only once at creation. Store it in a secret manager before leaving the page; if it is lost you must rotate the key.
Set the key and the API origin for the following examples:
export PROVON_API_KEY="your_project_api_key" export PROVON_API_URL="https://api.provon.dev"# Source development (split ports) export PROVON_API_KEY="your_project_api_key" export PROVON_API_URL="http://127.0.0.1:3001" # Installer production (single origin) # export PROVON_API_URL="http://127.0.0.1:3000"The CLI appends the
/v1API prefix itself; do not add a/v1suffix toPROVON_API_URL.A default project key carries six read/invoke capabilities:
telemetry:ingest,telemetry:read,diagnostics:read,gateway:invoke,model-pricing:read, andworkspace:read. Mutation capabilities such asdiagnostics:write,gateway:manage, andworkspace:writeare not granted by default. Workbench actions such as changing Rules or creating a repair issue use your signed-in project permissions; see API keys for the full capability list. - Capture trace evidence
Choose one primary path. All paths produce project-scoped trace evidence.
Open Providers, select a provider, and add its API key. Set the Gateway origin for your environment:
export PROVON_GATEWAY_URL="https://gateway.provon.dev/v1"# Source development (split ports) export PROVON_GATEWAY_URL="http://127.0.0.1:3001/gateway/v1" # Installer production (single origin) # export PROVON_GATEWAY_URL="http://127.0.0.1:3000/gateway/v1"Then send an OpenAI-compatible request:
curl "$PROVON_GATEWAY_URL/chat/completions" \ -H "Authorization: Bearer $PROVON_API_KEY" \ -H "Content-Type: application/json" \ -H "x-otel-gen-ai-conversation-id: quickstart-conversation-1" \ -H "x-otel-gen-ai-agent-id: quickstart-agent" \ -d '{ "model": "replace-with-your-configured-model", "messages": [ { "role": "user", "content": "Summarize why production evidence matters for coding agents." } ] }'Replace
<configured-model-id>with a model bound on the Providers page. The response should use the familiar OpenAI shape. Provon records the request, response, provider attempt, latency, tokens, cost, and errors according to the project's trace-capture settings.See the Gateway quickstart for first-request and evidence verification, then use the migration guide for a staged production change, SDK integrations for client configuration, and the Gateway overview to find routing, governance, production, and API reference pages. You can also run the curl examples in
examples/gateway-endpoints.Point an existing OTLP/HTTP exporter at Provon. Set the OTLP origin for your environment:
export PROVON_OTEL_URL="https://otel.provon.dev/v1"# Source development (split ports) export PROVON_OTEL_URL="http://127.0.0.1:3001/v1" # Installer production (single origin) # export PROVON_OTEL_URL="http://127.0.0.1:3000/v1"Configure the exporter:
export OTEL_EXPORTER_OTLP_TRACES_ENDPOINT="$PROVON_OTEL_URL/traces" export OTEL_EXPORTER_OTLP_HEADERS="Authorization=Bearer $PROVON_API_KEY" export OTEL_EXPORTER_OTLP_PROTOCOL="http/protobuf"Run your instrumented agent once. Provon accepts
POST /v1/tracesat the OTLP origin.Use the Tracing quickstart for a transparent first OTLP trace. See OpenTelemetry setup for Python, Node.js, Collector, and SDK configuration. Use the OTLP/HTTP API for transport, response, limit, and retry details. Runnable observability examples are in
examples/agent-observability-*.Project an existing Claude Code, Codex, or Pi transcript with the Provon CLI.
If you installed Provon through the self-hosted installer or package manager:
provon ingest sync ~/.claude/projects --once --dry-run --print-sampleIf you are working from the source repository:
pnpm --filter @provon/cli build node cli/dist/bin.js ingest sync ~/.claude/projects --once --dry-run --print-sampleReview the sample output, then remove
--dry-runto upload. Common transcript directories include:~/.claude/projects ~/.codex/sessions ~/.pi/agent/sessionsUse
--include-tool-output noneif tool outputs contain private data you do not want to upload. See Agent transcript sync for source detection, continuous sync, sanitization, and tool-output controls. - Verify the trace
Open Traces in the Workbench and select the new trace.
Verify that:
- the service and operation names identify the agent workload;
- model and tool spans preserve their parent-child order;
- a stable
gen_ai.conversation.idis present for multi-turn diagnosis; - token, cost, latency, status, and error fields appear when the source emitted them.
Telemetry ingestion is successful when the trace is visible. A healthy trace does not need to produce a Finding.
Tip
If the trace does not appear, confirm the API key is project-scoped and the endpoint matches
PROVON_GATEWAY_URLorPROVON_OTEL_URL. See troubleshooting for the full checklist. - Enable diagnostics
If you followed Workbench onboarding, you already analyzed your latest conversation in the Discover step. Continue here to enable ongoing diagnosis.
Open Findings:
- Leave the five built-in Rules enabled, or open Rules to configure them. Automatic diagnosis is on while at least one Rule is enabled.
- Run real agent conversations that include tool use and a clear user goal.
Automatic Runs are queued after a conversation has been inactive for 10 minutes. For existing telemetry, open Rules and run an enabled Rule through the backfill dialog. The dialog offers a range (last 24 hours, 7 days, 30 days, 90 days, or all time) and defaults to the last 30 days.
Provon publishes only candidates that pass the Rule's signal and confidence thresholds. The default Rules cover runtime reliability, tool correctness, task fulfillment, answer grounding, and safety.
See Diagnostic rules for Rule configuration, confidence thresholds, and signal overrides, and Findings for review states and evidence.
- Hand off a Finding to GitHub
This step requires at least one supported Finding.
- On the Findings page, open the issue tracker menu and choose GitHub.
- Connect with OAuth or enter a token manually.
- Set Default owner and Default repo, then enable the connector.
- Return to Findings, expand a Finding, and select Create repair issue.
Provon creates a GitHub Issue with:
- a focused repair goal;
- the Finding summary and cause assessment;
- trace and span evidence links;
- a remediation hint;
- the
provon-repairlabel and hidden correlation metadata.
The Finding becomes Confirmed and Handed off. Provon later records a merged pull request or closed issue as the external resolution; it does not edit the repository itself.
Success Check#
provon auth statusshows the active project, or the Workbench API keys page lists the key.- Traces lists at least one trace from the chosen capture path with a stable conversation id.
- Findings produces candidates only when the conversation crosses a Rule threshold; an empty list on healthy traffic is expected.
- A handoff work item opens in the tracker with the Finding id and evidence links.
Troubleshooting#
| Symptom | Fix |
|---|---|
Gateway call returns 401 / 403 |
Key lacks gateway:invoke; create a key with the default capabilities and bind a model in Providers |
OTLP returns 401 |
Use a project key with telemetry:ingest; provider keys and GitHub tokens are not valid here |
| Trace missing after capture | Confirm the endpoint and project; see Troubleshooting |
| No Finding appears after traces | Wait the 10-minute idle delay, run a Rule backfill, or lower thresholds; see Troubleshooting |
Optional: Use a coding agent to connect#
If you use Claude Code, Codex, or Cursor, copy the project-specific setup prompt from the Workbench Connect step and hand it to your coding agent. The prompt tells the agent to inspect the codebase, recommend the best capture path, and implement it using repository conventions. The agent waits for your confirmation before making changes.
This is the fastest way to connect an existing codebase without writing the first integration yourself.
Optional: Seed a demo product tour#
To inspect the Workbench without generating your own workload, seed an empty database before starting the server:
pnpm seed:demo
pnpm devThe seed command prints the demo account, project API key, and inserted record counts. It refuses to write into non-empty metadata, metering, or telemetry databases.
Sign in with demo@provon.dev and password provon123.