Skip to content
tanisheeshPublic

About

Self-hosted API monitoring that tells you what broke, when, and which deploy did it — for Python, Node.js and any OpenTelemetry stack.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Reqly

Self-hosted API monitoring that tells you what broke, when, and which deploy did it — for Python, Node.js and any OpenTelemetry stack.

Live Demo Website Docs PyPI npm Python TypeScript FastAPI React TimescaleDB OpenTelemetry Groq Docker License: AGPL-3.0, SDKs MIT

What is Reqly?

Reqly watches every request your APIs serve and explains problems instead of just charting them: when a route starts failing it says which release was running, which host or client the errors came from, and whether you are burning your error budget — and you can ask it why in plain English. It is a lightweight, self-hosted alternative to Datadog-style APMs for teams that want their data on their own Postgres: one docker compose up (or helm install), a one-line SDK, or plain OpenTelemetry.

import reqly
reqly.instrument(app, service_name="checkout-api")   # FastAPI, Flask, Django, Starlette, Litestar

Live demo → reqly-eventflow-dashboard.onrender.com — metrics from the EventFlow demo app (log in there as admin@eventhub.com / Admin@123 to make some traffic).

What you get

  • Metrics that are right — p50/p95/p99 per route and per service from mergeable percentile sketches, error rates, status codes, deploy markers and per-release health
  • It explains what broke — hourly alerts to Slack/Discord/webhooks against a weekday × hour baseline, with the release that was running, root-cause leads ("92% of errors came from pod-7") and the clients that were hit; a weekly AI report narrates the findings
  • Ask Reqly — "why did /orders start failing?" answered from the collector's own data through read-only query tools, with every query shown and any number not found in the results flagged
  • API-level depth — SLOs with burn-rate alerts, OpenAPI drift (undocumented, unused and deprecated-but-used endpoints), API consumers, and LLM token cost per route with alerts when it spikes
  • Any stack, small footprint — Python SDK, Node.js SDK (Express, Fastify, Hono, Koa, NestJS) or OTLP from any language; the SDKs add ~5–33 µs per request (benchmark) and never crash your app; projects, per-team API keys and sign-in for shared collectors

Stack

Layer Tech
SDKs Python 3.9+ (pure ASGI/WSGI middleware, httpx) · Node.js 20+ (TypeScript, zero dependencies) · OTLP/HTTP
Collector FastAPI · asyncpg · APScheduler · Pydantic v2 · argon2
Database TimescaleDB (pg16, Toolkit) · hypertables · continuous aggregates · UddSketch
Dashboard React 19 · Vite · TypeScript · Tailwind CSS 4 · Recharts · TanStack Query
AI Groq API · gpt-oss-120b (tool calling) · statistics-first anomaly detection
Infra Docker Compose · Helm chart · EC2 (TimescaleDB) · Render · GHCR images · PyPI / npm trusted publishing

Engineering Decisions

Why statistics before the LLM? Anomalies come from a Poisson / z-score test against each route's weekday-hour baseline; the LLM only narrates confirmed findings. Detection stays deterministic and auditable, and nothing is sent to a model when nothing is wrong.

Why mergeable percentile sketches instead of storing p95s? Percentiles can't be averaged. A UddSketch per route-minute merges exactly across routes and time, so a service's 7-day p95 is a real p95 (within ~0.2%), not the max of per-minute p95s that overstated latency.

Why fixed query tools for Ask Reqly, not text-to-SQL? The read key ships in the dashboard, so generated SQL would make it a SQL console. Nine validated, read-only tools return rounded aggregates, and every number in the answer is checked against what they returned.

Why measure SDK overhead? "Zero overhead" was a claim; the benchmark made it a number — and found a Node bug that sent one collector request per app request under steady traffic, plus Python work that could move off the request path (overhead halved).

What would you do differently in v2? Build the alert and SLO evaluation for several collector instances from the start: the scheduler and rate limits assume one instance today, which is fine for self-hosting but caps horizontal scaling.

Docs

Using Reqly? Start with the documentation site: quickstart, SDK guides, features, self-hosting and the HTTP API. The documents below are about how Reqly is built.

Document Description
PRD Product requirements — goals, user stories, non-goals
Architecture System design, data flow, component breakdown
Decisions Every major technical decision and why
Setup Run the repository locally, env vars
Deploy Production deployment, releases, rollback
Benchmarks SDK overhead per framework and how it's measured
Contributing How to propose changes
Changelog What changed in each release
Security How to report a vulnerability

License

Part License
Collector, dashboard, Helm chart and everything else in this repository AGPL-3.0
Python SDK (sdk/, pip install reqly) MIT
Node.js SDK (sdk-node/, npm install reqly-node) MIT

The SDKs run inside your app, so they're MIT: use them in any project, open or closed. The server is AGPL-3.0: run, modify and self-host it freely; if you offer a modified version as a service, share its source.


Tanish Poddar

Website LinkedIn GitHub Email

About

Self-hosted API monitoring that tells you what broke, when, and which deploy did it — for Python, Node.js and any OpenTelemetry stack.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Packages

Used by

Contributors

Languages