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