Self-hosted/ Source-available/ OpenTelemetry in
Observability your coding agent can read.
Logs, traces and metrics on hardware you own, with no per-gigabyte bill. From “something is wrong” to the exact line or span that explains it in seconds — and your coding agent gets the same view: connect Claude Code, Cursor or any MCP client in one line.
01 Investigate
See the whole request. Then find the line that explains it.
One trace id joins the waterfall and the stream. The investigation stays in one place, and each view is one click from the other.
Traces
Where the request spent its time
Every span in order, durations to scale, services separated, and the failure marked. Select a span to read its attributes or jump straight to its logs.
- INFO billing Invoice finalized for team acme-inc (amount: 4900)
- DEBUG api Cache miss for plan:pro — reading from SQLite
- INFO api POST /v1/subscriptions 201 in 91ms
- INFO worker Job "export-csv" restarted after OOM kill
- FATAL worker Out of memory processing job "export-csv" (2048MB limit)
- TRACE worker Heartbeat ok, queue depth 0
- INFO api GET /v1/logs?window=1h 200 in 142ms
- DEBUG auth Session refreshed for user 4821
- INFO worker Processed 1 job in 8ms (queue: default)
- ERROR api POST /v1/checkout 500: Undefined array key "currency"
- INFO ingest Accepted 247 log records for project acme-web
- WARN ingest Batch contained 3 malformed records, skipped
Logs
What the code said about it
Search every line, narrow by time, project, service or severity, and leave a live tail open while the deploy goes out. Every search is a URL you can share.
02 Connect
Works with the stack you already run.
Point the OpenTelemetry exporter you already have at a new endpoint and add a key. Plain JSON covers everything else, and existing Sentry SDKs report straight in.
{"accepted":1,"skipped":0}
$ claude mcp add --transport http bilis https://bilis.app/mcp
› Why did checkout fail in the last hour?
bilis · error-summary
bilis · get-trace 4bf92f35…
Eight declines since 15:16, all from payments in
release 1.5.1. The issuer call fails after 590 ms, and
chargeCard() does not handle insufficient funds.
An illustrative session. The tools are the real ones — ten of them, all read-only.
Or any client that speaks MCP over Streamable HTTP. Claude is a trademark of Anthropic, ChatGPT of OpenAI, Gemini of Google, Cursor of Anysphere and GitHub Copilot of GitHub; Bilis is not affiliated with any of them.
A malformed record is skipped and counted, and the rest of the batch is still accepted. Point Claude Code's own telemetry at Bilis →
03 Own it
Keep the data. Lose the telemetry tax.
Bilis is built for the team that owns the box, reads its own incidents, and does not want observability to become another platform to operate.
- Your data never leaves the building
- You own the box, so you own the logs — all of them, for as long as your disk allows. Retention costs the disk you already pay for, and a noisy deploy never shows up on an invoice.
- Small enough to run yourself
- The whole deployment is one app and one database. You can set it up in an afternoon and keep it healthy without a platform team.
- Nothing to migrate away from
-
Standard OpenTelemetry in, standard tables underneath. Your scripts, queries
and AI tools work on the data today, and walking away is a
SELECT, not a migration. The code is public.
04 Status
Logs, traces and metrics today. Alerting next.
Self-hosting stays first-class through all of it. eBPF collection, S3 tiering, replication and OTLP over gRPC stay a bigger platform's job.
- Ingest OTLP logs, traces and metrics · plain JSON · Sentry-compatible SDKs Shipped
- Search Fast full-text search across every log body Shipped
- Traces Span waterfall, linked to logs in both directions Shipped
- Metrics OTLP metrics charted as rates, levels and percentiles; hosts from one installer Shipped
- Issues Exceptions grouped, with stack, breadcrumbs and regressions Shipped
- MCP Coding agents search all of it, read-only, behind OAuth Shipped
- Autofix An agent drafts the fix, with the failing trace attached Shipped
- Alerting So the stack tells you when to look Next
Start
Bilis is early. The product is not hypothetical.
Run it on your own box today — free, with no plan — or sign up on bilis.app, where the Free plan has published limits and no card. See pricing. The source is on GitHub, so you can read exactly what it does with your telemetry before you point anything at it.