langprobe
Getting Started

Quickstart

Self-host the whole stack locally, bootstrap the first account, and mint an API key — five minutes, two terminals.

langprobe self-hosts as one docker compose file: Postgres for the control plane, ClickHouse for runs and spans, Redis for the ingest queue, and the web UI. Boot it, bootstrap the first account, and mint a key.

1. Boot the stack

cp infra/.env.example infra/.env
# generate the session secret (no default — by design)
echo "SESSION_SECRET=$(openssl rand -hex 32)" >> infra/.env

docker compose -f infra/docker-compose.yml up --build

Wait for the web and api containers to settle. Three services come up locally:

ServiceURLRole
webhttp://localhost:7090Product UI
apihttp://localhost:7081Control plane (auth, CRUD, replay)
ingest-apihttp://localhost:7080Trace + run intake

2. First-run setup

Open http://localhost:7090. An unbootstrapped instance routes you to the setup wizard, which calls POST /v1/setup on the api service:

curl -X POST http://localhost:7081/v1/setup \
-H 'content-type: application/json' \
-d '{"email": "you@example.com", "password": "change-me-later", "org_name": "Default"}'

That single call creates a root user, a default org, a default workspace, and a default project, and hands back a session cookie. Once it succeeds the endpoint locks itself — future POSTs return 409 Conflict.

3. Mint an API key

In the UI, open API keys → New key. Name it local-dev, scope it ingest:write, and copy the lt_<public_id>.<secret> value once — it's hashed on save. Lose it and you mint another.

Keep this key handy: on the next page you paste it into the playground and send your first trace.

What's next

On this page