open source · MCP-native · ~25MB RAM

Your logs are a wall of noise. The errors aren't.

Open-source log and error tracking for your apps. It groups your errors into issues, and your coding agent reads them over MCP.

View on GitHub
$ docker run ghcr.io/agenterr/agenterr
pq: connection refused ×37 24h · 56,477 records · 1 issue that matters

The usual options don't fit.

Most error tracking is built for platform teams, so a side project ends up carrying the same weight and paying the same bills.

Sentry is too heavy

Self-hosting it means a dozen containers and gigabytes of RAM — for a side project's stack traces.

Datadog is priced for platform teams

Per-GB ingest pricing makes sense at platform scale. On a side project it means one crash loop can quietly turn into a bill.

MCP as an afterthought

Most trackers have bolted an MCP server onto a product built for dashboards. Agenterr was designed around the agent from the start, so every tool returns something your agent can actually work with.

Works with the logs you already write

Send JSON, logfmt, or plain text and there's nothing to instrument — severity, message, and fields are lifted at ingest, and errors get grouped into issues.

See how ingest works

Quiet down noisy services

Set severity floors, drop by match, or sample 1-in-N per project. Every dropped record is counted, and rules fail open by default.

See noise controls

Built around your agent

Seventeen MCP tools let your agent read issues and tune the pipeline itself, without you copying anything into the chat.

See the MCP tools

Your logs already have everything it needs.

No SDK to add. It reads the JSON, logfmt, or plain-text logs your services already write — level, message, and fields like request_id lifted automatically, on by default.

your servicescheckout-apistdout · jsonworkerfile · logfmttraefikdocker · plainagenterrsingle binary · sqlite▸ parse json / logfmt / text▸ group errors → issues▸ noise rules · alert rules~25MB RAMmcp · 21 toolsyour agentclaude code · cursor · codexlist_issues · add_rule …alert webhook → ntfy / slackany format

When you want to look yourself.

The built-in web UI shows the same issues your agent sees — dense tables, full-text search, and filters for environment and release.

errors.example.com/checkout/issues
checkout env: production release: v1.8.2 status: open
  • pq: deadlock detected — orders/repo.go:142 ×312
  • stripe: card_declined unhandled — payment.go:88 ×41
  • retrying webhook delivery — hooks/send.go:61 ×18
  • context deadline exceeded — search/client.go:207 ×9
  • redis: connection pool exhausted — cache/pool.go:33 ×127
pq: deadlock detected — orders/repo.go:142 open ×312

first_seen: 2026-08-06 09:12:04.117 · last: 2026-08-06 11:58:41.093 · release: v1.8.2 · env: production

INFO checkout started · order_id=9f21 · user=4481

WARN inventory lock slow · waited=412ms

ERRO pq: deadlock detected · orders/repo.go:142

ERRO transaction rolled back · order_id=9f21

Tune out what you don't need.

Each project gets its own ingest rules, applied after parsing and before storage. Every drop is counted, so you always know what a rule is doing.

Severity floor, per service

Drop traefik below WARN and the health-check chatter disappears while real errors still come through.

Drop by match, or sample

Match a substring and drop it outright, or keep 1-in-N of a noisy band instead of all of it.

A report shows what got dropped

The noise report lists your top services by volume and how much each rule dropped. Rules fail open by default, so a bad one keeps records instead of eating them.

noise report

last 24h
serviceeventsdroppedrule
traefik41,32038,904severity < WARN
checkout-api12,041602sample 1-in-20 "GET /healthz"
worker3,1160
total dropped: 39,506

Built for indie devs with more projects than servers.

Six side projects on one VPS, and none of them big enough to deserve an observability stack.

A coding agent doing half the work — it should see production errors the way it sees your code.

No appetite for a monitoring bill that scales faster than the products it watches.

Connect whatever agent you use.

Your agent gets 21 tools covering issues, events, search, configuration, and alerting, and it can call them all directly.

Agent session mcp

> why is checkout failing in prod?

agenterr — list_issues (project: checkout, status: open)

pq: deadlock detected — orders/repo.go:142 ×312 2m ago

stripe: card_declined unhandled — payment.go:88 ×41 1h ago

agenterr — get_issue (issue: a3f1)

first_seen: 2026-08-06 09:12:04.117 · release: v1.8.2 · env: production

The deadlock started with v1.8.2 — two transactions lock orders and inventory in opposite order in repo.go:142.

$ claude mcp add agenterr
Claude CodeCursorCodexWindsurf

Your agent can see a noisy service, add a drop rule, and verify the volume fell — or flip a project setting — without a human in the loop. The shipped Claude Code skill teaches it the workflow.

Alerts with a cooldown built in.

New-issue, regression, and threshold rules fire as webhooks, and your agent manages them over MCP. Each rule has a cooldown — 15 minutes by default — so a crash loop wakes you up once and then stays quiet.

new_issue

A fingerprint's first appearance

regression

A resolved issue comes back

threshold

≥ N events in M minutes, scoped

cooldown

Delivery is a JSON webhook you point at ntfy, Slack, Discord, or anything with a URL. It never blocks ingest, retries with backoff, and matches any grouped issue — panics arrive joined into one record and land as FATAL.

The shipper is the same binary.

agenterr ship tails your Docker containers and sends everything home. There's no separate shipper to install and no config file to maintain.

ship

$ agenterr ship --docker --url https://logs.example.com --key agt_ingest_...

Same binary, new mode. Tails every container over the Docker socket; service names come from Swarm and Compose labels automatically. Exclude noisy containers with a flag or a label. Plain log files work too, with rotation handling (--file 'GLOB=service').

fixes logs at the source

Strips ANSI color codes and joins multiline stack traces, so a Go panic arrives as a single record instead of forty broken lines.

survives outages

Records spool to disk with checkpoints and resume when the server comes back, so delivery is at-least-once and every drop is counted. A bad key fails at startup with a clear message instead of looping on silent 401s. Configuration is flags and env vars only.

On the roadmap.

This is what we're building next. It isn't in the binary yet — watch the repo to hear when it ships.

Sentry-compatible ingest

A drop-in DSN endpoint — point existing Sentry SDKs at Agenterr without swapping libraries.

v2 web UI

A rebuilt web UI on the same data your agent already sees — issues, alerts, and noise rules in one place.

25MB

ram at idle

Runs beside the apps it watches.

1

process

Replaces a dozen containers.

0

external services

Nothing else to run.

9.4B

per log record

Measured on a real 317k-log day.

measured, not claimed

Faster on every query we measured.

One real production day — 317,229 logs — loaded into both systems and queried the same way. Log bodies are stored as a template plus its variables, so the structure every line shares gets written once.

agenterrOpenObserve
storage, all-in9.4 B/record10.9 B/record
scoped search10.9 ms37.0 ms
unscoped search14.8 ms34.4 ms
aggregate by service0.17 ms20.3 ms
ingest79k logs/s, fsync-acked213k logs/s, async-acked

The caveats, since they matter: OpenObserve's result cache flatters repeated queries by around 4×, so the harness pins use_cache=false for both. Its ingest number is higher because it acknowledges writes before they are durable, while agenterr fsyncs first. Run it yourself with make bench-vs-o2.

Read the full benchmark report

The lightweight alternative.

agenterr Sentry Datadog
RAM to run it~25MB idle16GB+ recommended (self-hosted)SaaS only
Pricing modelfree self-hostper-eventper-host + per-GB
Self-hostingone process, one filea dozen servicesnot available
Agent accessagent-first, MCP built inMCP add-onMCP add-on
LicenseAGPL-3.0, free foreverFSL (source-available)proprietary

agenterr vs Sentry · agenterr vs Datadog · agenterr vs OpenObserve · agenterr vs GlitchTip

Free to self-host, forever.

Self-host

Free, unlimited, AGPL-3.0. One process and one data file on the VPS you already have.

View on GitHub

Hosted

not yet available

Later we will run it for a flat monthly price. Nothing will ever be billed per event or per gigabyte.

What that means

Self-host in one command.

$ docker run ghcr.io/agenterr/agenterr

open source · MCP-native · ~25MB RAM