Introduction
A telemetry platform for developers who self-host - and want to stay sane when something breaks.
The problem
If you run applications on your own servers - a VPS, a bare-metal machine, a handful of cloud instances you manage yourself - you've lived this scenario: something breaks in production, and your first instinct is to open a terminal.
You SSH into the affected server, run htop, tail a log file,
check
journalctl. If you have multiple servers, you repeat this
across all of them, manually correlating timestamps across different shell
windows, hoping you find the signal before your users escalate.
This is the ops visibility gap. It's not that the data doesn't exist -
every Linux server exposes everything through /proc and writes
logs to disk. The problem is that the data is scattered, ephemeral, and unsearchable unless you've built infrastructure specifically to collect and centralize
it.
Enterprise teams solve this with Datadog, Grafana Cloud, or New Relic. These products are excellent. They are also priced for teams with a budget, require accounts with external vendors, and carry genuine complexity overhead - dashboards to configure, agents to manage, pipelines to wire up, retention policies to set.
For a solo developer or a small team running five servers, this is too
much. The alternative - doing nothing and relying on SSH and grep - is also not acceptable once you care about uptime.
How Raven solves it
Raven is a self-hosted telemetry platform designed specifically for this gap. Its design philosophy has three commitments:
Zero external dependencies. One docker compose up command starts everything: the central server, a metrics time-series database
(VictoriaMetrics), and a log storage engine (ClickHouse). No SaaS accounts.
No API keys for third parties. Your data stays on your infrastructure.
A minimal agent footprint. The agent is a single static Rust
binary. It reads /proc every 10 seconds for system metrics and
watches log files with kernel-level inotify notifications. It uses
roughly 10–20 MB of RAM and negligible CPU. It runs as a restricted system user.
If the central server is unreachable, it buffers data locally in a write-ahead
log and replays it on reconnect - no gaps in your timeline.
Useful out of the box. The dashboard gives you an agents overview with sparklines, per-host time-series charts, a log explorer with full-text search and live tail, and an alerting engine that sends to Discord, Slack, or email. There is nothing to configure before it works.
Architecture in brief
Each monitored server runs raven-agent, a Linux daemon that
collects metrics and tails log files. It streams data to the central raven-server over a persistent gRPC connection with TLS. The server routes metrics to VictoriaMetrics
and logs to ClickHouse, then exposes an HTTP API and WebSocket endpoint for
the dashboard.
The dashboard is a React application served as static assets directly by raven-server
- no separate web server needed. API calls are same-origin.
Getting started
The fastest path to a working Raven setup is the installation guide, which walks through deploying the central server with Docker Compose, generating an agent token from the dashboard, and installing the agent on a target machine.
Go to installation guide