Maple Local · free · works offline
Point any OpenTelemetry exporter at localhost and see traces, logs, metrics, errors, sessions, and a service map while you build. One process instead of a compose file. No containers, no account, no cloud — and nothing to sign up for, ever.
brew install Makisuo/tap/maple maple start 🍁 maple · local mode● listening on http://127.0.0.1:4318OTLP/HTTP POST /v1/{traces,logs,metrics}query POST /local/querydashboard https://local.maple.devdata ~/.maple/datapid 48213 · stop with `maple stop`
1 process1 port0 containers0 accounts
The usual local setup is a collector, one backend per signal, and a dashboard on top: five containers, five config files, and three different UIs. Maple Local is one process that does all of it, started with one command, on one port.
docker-compose.yml one process otel-collector :4317 :4318 collector.yaml jaeger :16686 own UI prometheus :9090 scrape config, own UI loki :3100 loki.yaml grafana :3000 datasources, provisioning, own UI maple start Every row on the left, plus errors, sessions, and a service map, from a single process.
Light describes the running footprint: one process, one port, nothing to orchestrate before your app starts. The download itself is not small; the embedded database engine is a few hundred megabytes on disk.
Maple Local is not a trial, a free tier, or a client for a hosted service. It is the complete product running on 127.0.0.1, and it stays complete whether or not you ever touch anything else Maple makes.
There is no sign-up, login, or license key. maple start is the whole onboarding, and nothing in the binary asks you to create anything.
Ingest, storage, and every query run on 127.0.0.1. The dashboard page loads from local.maple.dev by default so UI fixes ship without a new binary — your data never goes there. Pass --offline and the UI is served from the binary too.
With --offline everything, including the UI, comes out of the binary. The only other network call is a once-a-day check for a newer release — skipped for Homebrew installs, off with MAPLE_NO_UPDATE_CHECK=1.
Everything lives under ~/.maple. Seal a day into Parquet with maple archive and query it with DuckDB; uninstalling removes the binary and leaves your data directory alone.
The same engine and views that run the hosted service: traces with correlated logs, log patterns, metrics, errors grouped by fingerprint, browser sessions, and a service map.
The whole platform is on GitHub under the Functional Source License, converting to Apache 2.0. Read the ingest path, the schema, and the installer before you trust them.
Six views, one dashboard, all reading your local store. The same screens you'd want in production, with your development traffic in them.
Search spans by service, duration, or error, then drill into any trace for its complete waterfall and the log lines emitted alongside it.
Filter by service, severity, text, or trace ID — or run
log-patterns
to cluster lines into templates and surface the noisiest sources at a glance.
Dependency edges with call counts, error rates, and latency — reconstructed from the spans you've sent, entirely on your machine.
The same binary is a query CLI. Every command runs against the local server and prints
JSON by default — add
--format table
for an aligned table, or
--debug
to see the query it ran.
maple traces --service api --errors --since 5m Pull the failing request's trace instead of adding console.logs. maple compare --around "2026-09-06 14:00:00" Latency, error rate, and throughput before and after, side by side. maple diagnose api --since 15m Health, top errors, and recent traces as JSON a coding agent can read. maple services throughput, error rate, P95 per service maple diagnose <svc> health, top errors, recent traces and logs maple service-map dependency edges with call and error rates maple top-ops <svc> operations ranked by a metric maple traces search spans by service, duration, error maple trace <id> full span tree with correlated logs maple slow-traces the slowest traces with duration stats maple errors error groups by fingerprint maple error <hash> one group: sample traces and a timeseries maple logs search by service, severity, text, trace maple log-patterns cluster logs into templates maple timeseries time-bucketed latency, error rate, apdex maple breakdown top-N by service, span, status, or method maple compare two windows side by side maple metrics list available metrics maple attributes keys discover attribute keys and values maple query "<sql>" raw SQL against the local store
Homebrew downloads the bundle for your platform from the latest GitHub release,
verifies its checksum, and links the binary onto your PATH. Upgrades and removal are the
Homebrew commands you already know, and uninstalling leaves your data directory in
place. Prefer a script? The curl installer does the same thing into
~/.maple/bin.
One install, one command, and your next request shows up as a trace. No trial clock, no account, nothing to cancel later.
brew install Makisuo/tap/maple
or curl -fsSL https://maple.dev/cli/install | sh
Shipping to production later? The same CLI and the same endpoint swap work against
Maple Cloud.
maple auth login switches a command over and
--local switches it back. Entirely optional.