Features MCP Pricing Docs Blog

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.

Signals 3 in 1 logs, traces and metrics, linked
Per-gigabyte bill None self-hosted retention costs only disk
To run it 1 app and one database, an afternoon to set up
For your agent 10 tools read-only over MCP, one line to connect

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.

Tailing
1284 lines
  1. Invoice finalized for team acme-inc (amount: 4900)
  2. Cache miss for plan:pro — reading from SQLite
  3. POST /v1/subscriptions 201 in 91ms
  4. Job "export-csv" restarted after OOM kill
  5. Out of memory processing job "export-csv" (2048MB limit)
  6. Heartbeat ok, queue depth 0
  7. GET /v1/logs?window=1h 200 in 142ms
  8. Session refreshed for user 4821
  9. Processed 1 job in 8ms (queue: default)
  10. POST /v1/checkout 500: Undefined array key "currency"
  11. Accepted 247 log records for project acme-web
  12. Batch contained 3 malformed records, skipped
Illustrative lines, rendered and tailed in the page itself — not a screenshot.

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.

Your services
# The OTLP endpoint your exporter already knows.
OTEL_EXPORTER_OTLP_LOGS_ENDPOINT=https://bilis.app/api/v1/logs

# Or one log line, no collector, no SDK.
curl -X POST https://bilis.app/api/v1/ingest \
  -H "Authorization: Bearer bilis_…" \
  -H "Content-Type: application/json" \
  -d '{"severity":"error","service":"billing","message":"Stripe webhook timed out"}'
Response 202 Accepted
{"accepted":1,"skipped":0}
Your coding agent OAuth · read-only

$ 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.

A
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.
B
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.
C
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.