Self-hosted log storage and search
Your logs, on your own box.
Bilis takes logs over OTLP/HTTP, stores them in ClickHouse, and gives you a viewer built for finding one line among millions. One Laravel app and one database — no Grafana stack to operate, and no per-gigabyte bill at the end of the month.
Time range, project, service and severity filters, full-text search, and a live tail you can leave open during a deploy. Log lines shown are illustrative — Bilis is pre-launch.
Point anything that speaks OTLP at it
Standard OTLP/HTTP with standard OTel columns, so any exporter you already run works and the data can be taken elsewhere. If you would rather not run a collector, there is a plain JSON endpoint that takes one record or a list of them.
# 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"}' # Or the OTLP endpoint your exporter already knows. OTEL_EXPORTER_OTLP_LOGS_ENDPOINT=https://bilis.app/api/v1/logs
Ingest never blames the client: malformed records are skipped with a count rather than failing the batch. Writes are queued asynchronously, so a success means accepted, not yet durable.
The key comes from a project in the app — one key, one project, revocable any time:
Self-hosted, no per-GB pricing
You own the box and you own the data. What retention costs is disk, which you already pay for — not a metered bill that punishes a noisy deploy.
Simple to run
One Laravel app and one ClickHouse. That is the entire deployment. Operational simplicity is the product here, not a side effect of it.
OTel-native, no lock-in
Standard OTLP/HTTP ingest into an OTel-compatible schema. Nothing about your data is shaped so that leaving is hard, and the code that handles it is public.
What Bilis does, and what it deliberately does not
Being narrow is the point. Everything below the line is a thing you should use another tool for — and we would rather say so than imply it is coming.
In the product
- OTLP/HTTP JSON ingest, plus a simple JSON endpoint
- OTel-compatible ClickHouse logs table
- Time range, project, service and severity filters
- Full-text search across log bodies
- Live tail
- Teams, projects, and scoped API keys
Not in the product
- Traces and metrics
- Alerting and on-call
- Dashboards and saved searches
- eBPF collection
- S3 tiering and replication
Bilis is early
There is no hosted tier yet and nothing to buy. What exists is the product itself — run it on your own infrastructure and read your logs. If a hosted option lands later, self-hosting stays the first-class way to use it.
The whole thing is open on GitHub, so you can read exactly what it does with your logs before you point anything at it.