Logs, metrics and alerts for the apps you already run on Cloudflare — send OpenTelemetry metrics, or derive them from your logs — every app in one timeline, deployed into your own account on Workers + Durable Objects. If your apps aren't on Cloudflare, this isn't for you, and that's on purpose. Live tail in milliseconds, 30 days of searchable history, alerts to Slack/Discord/Telegram/email/webhook and incidents in PagerDuty/Opsgenie, and an MCP server so your AI agent reads your logs. From $5/mo — the Workers Paid floor — plus your own metered Cloudflare usage, with a meter that shows the deployment's own bill.
* $5/mo is the Workers Paid floor. Durable Object, D1, R2 and Queues usage meters on top at Cloudflare's published rates — our built-in meter estimates it, and we're validating that estimate against a full billing cycle before calling it final. Latency is a warm p50 from BENCHMARKS.md (worst observed 148 ms).
What it does
Everything a small team needs to know when production breaks — and to answer the question three weeks later. All of it in one Cloudflare account.
74 ms at the median from a log leaving your app to landing on your screen — push-based over hibernating WebSockets. When the buffer prunes ahead of you the stream says so, in the line count, rather than skipping quietly.
Instant match + rate-threshold rules to Slack, Discord, Telegram, email, webhook, PagerDuty and Opsgenie. Coalesced so a storm is one alert, not a thousand. Test any channel before you rely on it. PagerDuty and Opsgenie incidents open when it fires and close themselves once it goes quiet.
Search across all your apps at once — one filter, one time range, one newest-first list with an app pill per line — over the live buffer and 30 days of history, paging past the first screen to every match. Break any search down by level, service or any attribute, and click a value to filter by it.
Point an OpenTelemetry Collector at /v1/metrics — gauges, counters and histograms, JSON or protobuf. Or save a search as a metric (count, rate, error rate, estimated p95 from log-scale buckets) with no extra tokens. Turn on per-request lines for rate / errors / latency per route. Send traces to /v1/traces and open a request as a waterfall — built from the spans your search returned, so it says when a large trace is partial.
Errors grouped by message template with first/last seen, and deploy markers (from CI, a deploy attribute, or Workers Versions) so what started after the last deploy stands out. An exception recorded on a span becomes a searchable error line too, stack trace and all.
Logs archive hourly to your own R2 as portable gzip files — search back through them by text, level and attributes. Charts, filters and group-by cover the live 24-hour buffer, not the archive. Your logs are stored only in your own D1, R2 and Durable Objects; read the segments with zcat if you ever leave.
A built-in Model Context Protocol server. Your coding agent asks "what errors did api throw in the last hour?" and reads your real production logs — scoped, revocable tokens, no vendor in the loop.
Native JSON, OTLP/HTTP (logs and traces, JSON or protobuf), Loki push (JSON) and Vercel drains — gzip welcome. Point the OpenTelemetry Collector, any OTel SDK, Cloudflare Workers Traces, a Vercel drain, or Vector with compression: none at one URL. Promtail and Grafana Alloy send snappy-framed protobuf and aren't supported yet. Or tail any Cloudflare Worker in 2 minutes with zero code changes.
A built-in meter estimates the deployment's own Cloudflare bill against a ceiling you set, and a one-click kill-switch pauses ingest (HTTP 402) until you resume — you flip it; it does not trip itself yet. No per-GB metering, no seat pricing.
The honest answer
You should — for last week's debugging. Workers Logs is genuinely good: zero setup, a free tier, live tail one flag away. We use it too. Here's what it doesn't do, and still doesn't do in 2026:
And what built-in does better, in fairness: a query builder with percentiles over invocation fields, Workers Traces (automatic spans, metered per span from Oct 2026), OpenTelemetry export to any vendor, and Cloudflare's own MCP server for Workers observability. Buddyflare doesn't replace those — it adds the alerting, the 30-day memory, and the non-Worker sources they leave out. Distributed traces are not shipped here yet; we capture trace_id and pivot your logs by it.
Workers Logs is for last week's debugging. Buddyflare is for the alert at 3am and the question from three weeks ago — in the same Cloudflare account, on the same bill.
Who it's for
Attach a tiny tail worker to any Worker you already run — zero code changes to the observed app — and watch its logs stream, alert on errors, and keep 30 days. The gaps built-in observability leaves, filled.
The deployment lives on Cloudflare, but the apps it watches don't have to. Any backend that can POST JSON — or already speaks OTLP/HTTP, Loki push JSON, or Vercel drains — lands its logs in your own Cloudflare account. The only bill is Cloudflare's, at published rates, and there's no Buddyflare plan, tier or vendor between you and your logs.
Get started
Deploy to your own Cloudflare account, then send your first log. No cluster, no agent, no VM — it's serverless the whole way down.
# deploy into your own account git clone https://github.com/Dinesh-3018/buddyflare && cd buddyflare pnpm install # create the resources wrangler.jsonc binds, then deploy npx wrangler d1 create buddyflare npx wrangler r2 bucket create buddyflare-history pnpm run deploy # send your first log curl -X POST https://your-worker.workers.dev/ingest \ -H 'Authorization: Bearer <INGEST_TOKEN>' \ -d '{"level":"error","message":"it broke"}' # …and watch it stream in the dashboard, live.
Clone, create your D1 and R2, then one command — or use the Deploy-to-Cloudflare button. Migrations apply themselves.
curl, the JS or Python SDK, or your existing OTLP / Loki-JSON / Vercel exporter — or tail any Worker in 2 minutes, zero code changes.
Live tail, search 30 days, set alert rules. Connect your AI agent over MCP.
No surprises
A sharp tool with clear boundaries beats a vague one that claims everything. Here's exactly what you get — and what you don't.
Deploy it, run it, keep it — in the Cloudflare account you already have. Open source means there's no hosted service to deprecate, reprice, or shut down.