Get Kalibr running locally and view your first traced LLM call in under five minutes.
python --version)git clone https://github.com/kalibr-ai/kalibr.git
cd kalibr
docker compose up -d
This launches:
| Service | Port | Purpose |
|---|---|---|
| ClickHouse | 9000 | Trace + cost analytics |
| MongoDB | 27017 | Metadata store |
| Backend API | 8001 | FastAPI REST API |
| Dashboard | 3000 | React UI |
| OTel Bridge | background | Syncs spans → ClickHouse |
Verify health:
curl http://localhost:8001/api/health
# {"status":"ok","clickhouse":"connected","mongodb":"connected"}
For most users:
pip install kalibr
For local development:
pip install -e sdk/python
Confirm:
python -c "import kalibr; print(kalibr.__version__)"
Create example.py:
import os, kalibr
from openai import OpenAI
os.environ["OPENAI_API_KEY"] = "sk-..."
client = OpenAI()
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": "Say hello in 5 words"}]
)
print("Response:", response.choices[0].message.content)
print("Trace ID:", kalibr.get_trace_id())
Run:
python example.py
Expected:
Response: Hello, how can I help?
Trace ID: dd88823c-745d-4ea1-bd17-0f8437f1b478
Visit http://localhost:3000
curl http://localhost:8001/api/otel/spans | jq .
cat /tmp/kalibr_otel_spans.jsonl | jq .
docker exec -it kalibr-clickhouse clickhouse-client
SELECT trace_id, provider, model_name, cost_usd, duration_ms
FROM kalibr.traces
ORDER BY timestamp DESC
LIMIT 5;
/tmp/kalibr_otel_spans.jsonldocker ps | grep otel-bridgecurl http://localhost:8123/pingcd sdk/python && pip install -e .
sudo chmod 666 /tmp/kalibr_otel_spans.jsonl
docker compose logs backend
docker compose down && docker compose up -d