What is Kanshi?
Kanshi is an open-source, self-hosted observability platform. A lightweight Go agent collects CPU, memory, disk, and network metrics from your hosts. Optional process telemetry adds per-process CPU and resident memory. Instrumented applications send traces and correlated logs through an OpenTelemetry Collector. A central core stores telemetry in TimescaleDB, serves the real-time React dashboard, evaluates alert rules, and delivers firing and resolved transitions to webhooks.
The pieces
Section titled “The pieces”| Component | What it does | Runs as |
|---|---|---|
| agent | Samples host and optional process metrics, batches them, ships them over gRPC | One binary per monitored host |
| core | Ingests metric batches, persists them to TimescaleDB, exposes a REST API | One service (gRPC :50051, REST :8080) |
| dashboard | Real-time charts per agent and fleet overview | Static React app (Nginx in Docker) |
| OpenTelemetry Collector | Batches, authenticates, and forwards application traces and logs | One private container or service |
The current stable Agent, Core, and Dashboard release is v1.3.1.
Design principles
Section titled “Design principles”- Small surface area. One agent, one core, one dashboard. No message broker, no sidecar zoo, no external SaaS dependencies.
- Time-series native. Storage is TimescaleDB, PostgreSQL with
time_bucketrollups, so range queries stay fast as history grows and you can query up to seven days of host history with plain SQL. - Self-hosted. Your metrics never leave your infrastructure.
- Private by default. Process telemetry is disabled until you explicitly enable it. Shared OTLP identity attributes support navigation and are not an authorization boundary.
Next steps
Section titled “Next steps”- Quickstart: get the stack running locally.
- Installation: self-host the server with Docker and install agents.
- Configuration: every knob on the agent and core.
- Architecture: how the pieces fit together.
- Alerting: rules, evaluation, and webhook delivery.