Skip to content
sigiro

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.

factory loop · five stages
Detect, step 1 of 5

Detect · sigiro

$ sigiro anomalies

SERVICE SIGNAL BASELINE NOW SHIFT INCIDENT

checkout error_rate 0.4% 19.2% +0.96 checkout@18:35

checkout latency_p95 180ms 30.0s +0.99 checkout@18:35

2 shifts · 1 incident · since 18:35

Diagnose · sigiro

$ sigiro diagnose checkout

suspect deploy 9f2c1ab, landed 18:33

failing POST /api/orders

failure mode timeout 246 · server_error 6

errors_total 1284

drill_down_sql SELECT trace_id, duration, status_message

FROM sigiro_spans WHERE service_name = 'checkout' …

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

$ sigiro anomalies --service checkout

SERVICE SIGNAL BASELINE NOW SHIFT INCIDENT

no shifts · checkout · last 7d

Learn · your memory

$ cat playbooks/checkout-upstream-timeout.md

## checkout · upstream timeout

detected error_rate +0.96, latency_p95 +0.99

cause unbounded upstream call, shipped in 9f2c1ab

fix 5s deadline on the orders client

watch the same shape on any service calling orders

Free when you install it. sigiro sends no data to us.

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.

Connect, step 1 of 4
Connect1 of 4
$ 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
$

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 -sX POST localhost:9999/v1/diagnose -d '{"service":"checkout"}'
{
  "summary": "two signals moved together on checkout at 18:35",
  "suspect": "deploy 9f2c1ab, landed 18:33",
  "failing": "POST /api/orders",
  "how": { "timeout": 246, "server_error": 6 },
  "errors_total": 1284,
  "query": "SELECT * FROM spans WHERE service = 'checkout' AND ..."
}

$ 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

$ sigiro query --sql-file models.sql
MODEL           CALLS  SLOWEST
gpt-5.2-mini      246    30.0s
claude-haiku-4.6   31     2.1s

$ curl -s localhost:9999/v1/diagnose -d '{"service":"checkout"}' > answer.json
$ jq .operation_summaries[0] answer.json
{
  "operation": "POST /api/orders",
  "errors": 246,
  "error_rate": 0.19,
  "drill_down_sql": "SELECT trace_id, duration, status_message FROM …"
}

$ jq -r .operation_summaries[0].drill_down_sql answer.json > drill.sql
$ sigiro query --sql-file drill.sql
TRACE_ID       DURATION  STATUS_MESSAGE
9f2c1ab4e77d      30012  context deadline exceeded
3b81fe0a2c56      30004  context deadline exceeded
c40d9e73aa18      29997  context deadline exceeded

01

Discover. Your agent reads the API description without help.

One public document describes all of the endpoints.

GET /openapi.json · public, no key
[
  "/v1/anomalies",
  "/v1/diagnose",
  "/v1/query",
  "/v1/services",
  "/v1/traces/{trace_id}"
]

what you get

No migration. sigiro connects to the tools you use.

Send telemetry from

  • OpenTelemetry
  • Node.js
  • Python
  • Go
  • Java
  • .NET
  • Ruby
  • Rust
  • Claude Code
  • Codex
  • Vercel AI SDK
  • LangChain
  • Ollama

Run it on

  • Docker
  • Kubernetes
  • Fly.io
  • Railway
  • Render
  • Cloudflare

Read by

  • Claude Code
  • Cursor
  • Codex
  • Anything that speaks SQL
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.