The smallest useful APM.

A single-binary, self-hosted APM and error tracker built on OpenTelemetry. Designed for small teams, side projects, and production systems that don't need a platform.

MiniAPM Dashboard
~4MB Single binary
SQLite Zero-config storage
OTLP/HTTP OpenTelemetry native
Free No limits, no tiers
~18MB Docker image
Rust Fast & reliable

Observability shouldn't require a platform team

Most APM tools today are either expensive SaaS platforms or require assembling multiple components. For many teams, both are overkill.

What you get with MiniAPM

  • Real visibility into production behavior
  • Traces and errors in one place
  • Setup in minutes, not days
  • Predictable resource usage
  • Full control over your data
  • No surprise bills, ever

What you don't need

  • An agents zoo
  • Kubernetes or complex infrastructure
  • A dedicated platform team
  • Monthly cost calculations
  • Vendor lock-in
  • Data leaving your servers

What you get

Concrete features. No fluff.

Distributed Tracing

Full request-to-response visibility with waterfall visualization.

  • OTLP/HTTP ingestion
  • Span timeline with parent/child relationships
  • Database queries with statements
  • External HTTP calls
  • Filter by web, jobs, or commands

Error Tracking

Exceptions with full context, automatically grouped by fingerprint.

  • Stack traces with source context
  • Smart grouping by location and message
  • Status management (open / resolved / ignored)
  • Occurrence trends over time
  • Jump from error to related traces

Route Performance

Know which endpoints need attention.

  • P50, P95, P99 latencies
  • Request counts and throughput
  • Error rates per route
  • Database time breakdown
  • Sort and filter by any metric

N+1 Query Detection

Automatically identifies repeated query patterns in your traces.

  • Query pattern normalization
  • Configurable threshold (default: 5+)
  • Total time impact calculation
  • Per-trace detection

Deploy Tracking

Correlate releases with performance and errors.

  • Simple deploy API: POST /ingest/deploys
  • Git SHA and version tracking
  • Deploy markers on dashboard
  • Compare before/after metrics

MCP Integration

Built-in Model Context Protocol server for AI assistants.

  • Connect Claude or other AI tools directly
  • Tools: list_errors, slow_routes
  • Stdio mode for local use
  • HTTP mode with API key auth

Get started in 2 minutes

Run MiniAPM, point your OpenTelemetry exporter at it, done.

# 1. Run MiniAPM
docker run -d -p 3000:3000 -v miniapm_data:/data ghcr.io/miniapm/miniapm

# On first run, you'll see your API key:
INFO miniapm::server: Single-project mode - API key: proj_abc123...

# 2. Configure your app to send traces
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:3000/ingest
OTEL_EXPORTER_OTLP_HEADERS=Authorization=Bearer proj_abc123...

# 3. Open http://localhost:3000 — that's it

Using Rails? Add our miniapm gem for zero-config instrumentation.
The API key is printed on every server start for easy access.

Who this is for

MiniAPM is a good fit if you value simplicity and control.

🚀

Side Projects

Production visibility without production costs

🏢

Small Startups

Focus on building, not configuring

🔧

Internal Tools

Keep everything on your infrastructure

💼

Agencies

Deploy per-client with zero marginal cost

🎯

Indie SaaS

Professional observability, indie budget

😤

Platform Refugees

Tired of heavyweight stacks

What MiniAPM intentionally does not do

If you need these, great tools exist already. MiniAPM focuses on making production behavior understandable, quickly.

High-cardinality metrics Years of retention Compliance dashboards Enterprise SLO/SLA Multi-region pipelines

Free. Open. Self-hosted.

Your data stays on your machine.

Free to use
Open source
No "open core"
No artificial limits
No telemetry about your telemetry