The data layer for software that repairs itself.
Send OpenTelemetry to sigiro. When a service fails, you get ranked results, the suspect deploy, and the query for each result.
Detect · sigiro
$ curl -sS -X POST localhost:9999/v1/query --data-binary "SELECT count(*) AS failed_spans FROM sigiro_spans WHERE service_name = 'checkout' AND status_code = 2 AND timestamp > CURRENT_TIMESTAMP - INTERVAL '30 minutes'"
[{ "failed_spans": 246 }]
Diagnose · sigiro
$ curl -sS -X POST localhost:9999/v1/query --data-binary "SELECT span_name, count(*) AS failures FROM sigiro_spans WHERE service_name = 'checkout' AND status_code = 2 AND timestamp > CURRENT_TIMESTAMP - INTERVAL '30 minutes' GROUP BY span_name ORDER BY failures DESC LIMIT 5"
[{ "span_name": "POST /api/orders", "failures": 246 }]
Fix · your agent
$ claude "checkout times out since 9f2c1ab"
read src/orders/upstream.ts
edit src/orders/upstream.ts +4 −1
test 42 passed
push fix: bound the orders upstream call at 5s
Verify · your pipeline, on our evidence
$ curl -sS -X POST localhost:9999/v1/query --data-binary "SELECT count(*) AS errors_last_5m FROM sigiro_spans WHERE service_name = 'checkout' AND status_code = 2 AND timestamp > CURRENT_TIMESTAMP - INTERVAL '5 minutes'"
[{ "errors_last_5m": 0 }]
Learn · your memory
$ cat playbooks/checkout-upstream-timeout.md
## checkout · upstream timeout
observed 246 failed checkout spans in a 30-minute window
cause unbounded upstream call, shipped in 9f2c1ab
fix 5s deadline on the orders client
watch the same shape on any service calling orders
how you use it
Four steps. You connect, ask, correlate, and prove.
You send OpenTelemetry to sigiro. You ask one question. Each step below is one shell session.
sigiro uses standard OTLP on the standard ports.
$ curl -fsSL https://sigiro.com/install | sh
installed ~/.local/bin/sigiro
$ sigiro serve &
[1] 41802
listening on 4317, 4318, 9999
$ export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318
$ export OTEL_SERVICE_NAME=checkout
$ npm start &
[1] 41823
checkout listening on :3000
$ sigiro status
ready · OTLP 4317 and 4318 · service checkout · 18,402 spans in 5 min
$ curl -sS -X POST localhost:9999/v1/query --data-binary "SELECT span_name, count(*) AS calls FROM sigiro_spans WHERE service_name = 'checkout' AND timestamp > CURRENT_TIMESTAMP - INTERVAL '30 minutes' GROUP BY span_name ORDER BY calls DESC LIMIT 5"
[
{ "span_name": "POST /api/orders", "calls": 1284 },
{ "span_name": "GET /api/cart", "calls": 342 }
]
$ cat models.sql
SELECT model, count(*) AS calls, max(duration) AS slowest
FROM spans JOIN logs USING (trace_id)
WHERE service = 'checkout' AND status = 'error'
GROUP BY model ORDER BY slowest DESC
$ curl -sS -X POST localhost:9999/v1/query --data-binary "$(cat models.sql)"
MODEL CALLS SLOWEST
gpt-5.2-mini 246 30.0s
claude-haiku-4.6 31 2.1s
$ curl -sS -X POST localhost:9999/v1/query --data-binary "SELECT trace_id, duration, status_message FROM sigiro_spans WHERE service_name = 'checkout' AND status_code = 2 AND timestamp > CURRENT_TIMESTAMP - INTERVAL '30 minutes' ORDER BY timestamp DESC LIMIT 3"
[
{ "trace_id": "9f2c1ab4e77d", "duration": 30012, "status_message": "context deadline exceeded" },
{ "trace_id": "3b81fe0a2c56", "duration": 30004, "status_message": "context deadline exceeded" }
]Start
Installs a single binary to ~/.local/bin/sigiro. Reads the script first if you would rather: sigiro.com/install.
Paste into Claude Code, Codex, Cursor or any MCP-capable agent. It installs sigiro, starts it, and connects over /mcp.
Discover. Your agent reads the API description without help.
One public document describes all of the endpoints.
[
"/v1/query",
"/v1/services",
"/v1/traces/{trace_id}"
]what you get
No migration. sigiro connects to the tools you use.
Send telemetry from
Run it on
Read by
- Prove it yourself
- Each result contains the query that made it.
- Nothing to maintain
- You set no thresholds and no rules. sigiro uses the history of each service.
- Installation in five minutes
- One command and two environment variables. You change no code.
- Free when you install it
- No fees for hosts, seats or data. Talk to us if you want us to run it for you.
- Your data stays with you
- You install sigiro on your servers. sigiro sends no data to us.
- sigiro monitors sigiro
- sigiro sends its telemetry to sigiro. This is how we find our own failures.