Coming soon · self-hosted with Docker

Observability for your entire software system

Traces, logs, metrics and errors from every service in one place, so your team finds and fixes issues before customers notice. Predictable costs, and your data stays on your own infrastructure.

  • No per-seat pricing
  • Built on OpenTelemetry
  • Works with your AI assistant

Self-hosted with Docker

Your whole observability stack is two containers

knotel is one Bun app next to ClickHouse. Ingest, dashboard and MCP run in the app container; spans, logs and web analytics go to ClickHouse. Run it on any machine with Docker, behind the proxy you already use.

Your apps
Websites
6.5 KB script, /t.js
Cloudflare Workers
Workers SDK
Anything else
Any OTel SDK or Collector
Your server
knotel app
Ingest
/v1/traces · /v1/logs · /v1/metrics
Dashboard
the app
MCP
/mcp
ClickHouse
Spans, logs, web analytics
SQLite
Accounts, projects, alerts
Retention
ClickHouse TTL, per project
Your team
You
Traces, errors, latency
Your AI assistant
Claude and friends, over MCP

Your data stays yours

Spans, logs and sessions are written to ClickHouse on a machine you run. There is no vendor in the middle to trust, sign a DPA with or lose.

Priced by the machine

It costs whatever the server costs. No per-span, per-request or per-seat billing, and one vCPU handles tens of millions of spans a day.

Two containers, not a cluster

docker compose up starts the app and ClickHouse. Accounts, projects and settings live in one SQLite file beside them.

One store for everything

ClickHouse compresses spans tenfold or better and aggregates raw spans fast, so there are no rollups, no sampling and no separate archive.

In production

Filum.ai traces its whole platform with knotel, from one instance it runs itself.

Web apps, the mobile app and backend services all report to the same instance. When a page slows down or a request starts failing, the team opens the trace, or asks their assistant about it.

filum.ai
8M
requests on a busy day
39
projects on one instance
30M
spans stored a day
1
shared vCPU under all of it

Footprint

It runs on one vCPU

Not a benchmark on a machine nobody rents. The Filum.ai instance above - 89 services across 39 projects, 30 million spans a day - is a single shared vCPU with 2 GB of memory.

1,229spans/sec
sustained through the busiest hour - 4,424,411 spans
1.3GiB
memory for the whole stack at most - ClickHouse held to 1.1 GB, the app ~250 MiB on a busy day
40bytes
what one span costs on disk, compressed 14×
46MB
the whole image, pulled

Sampling is a tax you pay for someone else's margin

Vendors bill per span, so they teach you to drop 90% of them - and the one trace you needed at 2 a.m. is the one that got dropped. At 40 bytes a span, a year of every request Filum serves fits on a disk that costs less than a month of most plans. Keep all of it.

Small because it does little

The app parses a batch, filters it and hands it to ClickHouse, which is the part that is good at columns. There is no queue, no agent on every host and no cluster to keep quorum in - two containers, and one of them is the database.

Read off the instance on 28 September 2026, a Monday. One shared vCPU (Xeon Platinum 8558P), 2 GB of memory, 47 GB disk.

Features

Everything you reach for when something breaks

The pages you open at 2 a.m., built to load fast and stay out of the way.

Trace waterfalls

Every span of a request in one view, from page load to the slowest database call, with attributes, events and stack traces.

Service health

Requests, error rate and p50/p95/p99 latency per service, over the last 15 minutes or 30 days.

Errors

Failed spans and exceptions grouped by fingerprint, with trends, stack traces and example traces.

Source maps

Upload your build's maps and a minified production stack reads as your own files and lines, with the source beside them. Resolved when you open the error, so uploading later fixes errors you already have.

Logs

OTLP logs, searchable by service, level and message, and shown under the trace that wrote them.

Sessions

Browser visits and the people behind them, stitched together from session and user ids.

AI agents

Agent runs with their tokens, tool calls and cost, from gen_ai spans.

Alerts

Thresholds on any metric the dashboard computes, sent to Slack or any webhook.

Retention per project

Keep a day, a week or a few months per project. Past that, ClickHouse deletes the data instead of hiding it.

Ask AI and MCP

Ask in plain words, not a query builder

Ask AI is a chat in the app that answers with your own model: OpenAI, Anthropic, Gemini, Azure, OpenRouter or a local Ollama. It reads latency, errors, logs and traces the way you do, draws charts, and waits for your approval before it changes an alert or a setting. The same tools are served over MCP at /mcp, for Claude or any other assistant.

compare_periodsfind_tracesget_tracerun_querytimeserieslist_errorsfind_outlierssearch_logsservice_map
Read a few chats in the demo

How it works

From deploy to first trace

It’s two containers, not a cluster, but it’s still infrastructure you own. This is what setting it up involves.

Try the live demo
  1. 1

    Start the containers

    Save one Compose file, set two secrets and run docker compose up. Then open /setup: the first account you create owns the instance.

    docker compose.env/setup
  2. 2Optional

    Invite your team

    Add teammates from Settings with a one-time link. Each picks a password, and can add a passkey too.

    Settings → Memberspasskeys
  3. 3

    Instrument your apps

    Add the browser script to your sites, wrap your Workers with the SDK, or point any OpenTelemetry exporter at the instance.

    /t.jsinstrument()/v1/traces
  4. 4

    Explore, or just ask

    Open a slow trace, compare latency across services, or ask why checkout got slower today: in Ask AI with your own model key, or from Claude over MCP.

    Ask AI/mcp
Status

Opening soon

knotel isn’t public yet. Until it is, the live demo is the real app on a week of sample data: click around as much as you like.

Source code
Private
Sign-ups
Not open yet
Live demo
Open
Try the live demo