A hundred eyes on your production errors.
Argus is a free and open source error and performance tracker — the small, self-hosted alternative to Sentry. Keep the SDK you already ship, change one line, and every exception and trace lands grouped and readable in your own database.
Unresolved
14
122 resolved
New today
3
first seen in 24h
Events 24h
1.8k
94k all time
Users
583
affected
Events · last 24 hours
TypeError
unhandled
production
Cannot read properties of undefined (reading 'id')
FetchError
production
staging
POST /api/checkout/confirm failed with 500
UnhandledRejection
unhandled
production
Payment intent expired before confirmation
45const response = await checkoutApi.getCustomer(cartId)
46const customer = response.data.customer
48return customer.id
49}
Argus Panoptes, the hundred-eyed giant of Greek myth, was set to watch and never sleep with all his eyes at once. Fitting name for something that stares at production so you do not have to.
Sentry is great. It is also enormous.
Most teams adopt Sentry for one reason: to see the errors their users hit. Then they inherit replay storage, quotas, and a self-hosted stack of twenty-odd services. Argus keeps the part you wanted — errors and traces — and nothing else.
-
Two moving partsA Nuxt server and a Postgres database. Deploy it on the box you already have.
-
MIT, not source-availableFork it, change it, run it commercially. No license that expires into a paywall.
-
No lock-in either wayIt speaks the Sentry protocol. Switching to or from Argus is a DSN change.
Everything the SDK sent. Nothing it did not.
An error tracker that does the whole job of an error tracker, and stops there.
Grouped into issues
Repeated exceptions collapse into one issue, fingerprinted by type, message and the first in-app frame. Send your own fingerprint when you want different grouping.
Real stack traces
Full exception chains, in-app frames highlighted, surrounding source lines and frame variables when the SDK sends them.
Everything around the error
Breadcrumbs on a timeline, tags, request and user data, browser, OS, device and runtime contexts — plus the raw payload if you want to see it untouched.
Triage that keeps up
Search, filter by status, level, environment and release, sort by events, users or trend, select in bulk and resolve. Keyboard shortcuts, no mouse required.
Trends and distributions
24-hour and 30-day event charts per issue, affected user counts, and a breakdown of which browsers, releases, URLs, users and custom tags are hit.
Secrets filtered on the way in
Cookies, authorization headers, tokens and passwords are redacted during ingestion, before anything is written to your database.
Teams and projects
Organizations with invitations and roles. Every project belongs to a team, and issues stay scoped to it.
One app, one database
A Nuxt server and Postgres. No Kafka, no Clickhouse, no message brokers, nothing calling home.
Not just what broke. What got slow.
Set tracesSampleRate in the SDK you already configured and Argus stores the
transactions alongside your errors — same project, same database, no extra service.
-
Average, p95 and failure rateEvery endpoint ranked by throughput, latency or failures, over the time window you pick.
-
Span waterfallsOpen a slow transaction and see the child spans on a timeline — the database query, the HTTP call, the render — with their own durations and data.
-
Throughput and latency over timeCharts per project and per transaction, so a regression shows up as a shape rather than a support ticket.
-
Bounded storageTransactions are capped per project and the oldest roll off, so tracing cannot quietly fill your disk.
Keep your SDK. Change the DSN.
Argus accepts the standard Sentry envelope, so the official SDKs report to it unchanged — breadcrumbs, contexts, releases, custom tags and transactions included.
Where Argus fits
If you need the full observability suite, use Sentry — it is very good. If you wanted the error inbox and a look at your slow endpoints without the rest, that is this.
| Argus | Sentry | |
|---|---|---|
| License | MIT, free forever | Paid SaaS, BUSL source |
| What you run | Nuxt app + Postgres | 20+ services to self-host |
| Where events live | Your database | Their cloud, or your cluster |
| Event quota | Your disk | Per-plan quota and overage |
| SDKs | The official Sentry SDKs | The official Sentry SDKs |
| Error tracking | Yes | Yes |
| Performance tracing | Yes | Yes |
| Session replay, profiling, crons | Not supported | Yes |
| Alerting and integrations | Not supported | Yes |
Comparison covers Sentry's hosted plans and its official self-hosted distribution at the time of writing.
Running in three steps
No cluster, no queue, no vendor account. Clone, start, point your SDK at it.
Start it
The app and its database come up together. That is the whole stack.
git clone https://github.com/AVMG20/argus.git cd argus docker compose up -d
Create a project
Open localhost:3000, create your account and team, then copy the project DSN.
http://PUBLIC_KEY@localhost:3000/sentry/1
Point your SDK at it
The one line that changes. Everything else about your setup stays the same.
import * as Sentry from '@sentry/browser'
Sentry.init({
dsn: 'http://PUBLIC_KEY@argus.example.com/sentry/1',
environment: 'production',
tracesSampleRate: 0.2
})
Straight answers
Including the parts Argus deliberately does not do.
Is it actually free?
Yes. Argus is MIT licensed with no paid tier, no seat pricing and no event quota. You host it, you own the data, and there is nothing to upgrade to.
Do I have to change my application code?
Only the DSN. Argus speaks the Sentry envelope protocol, so the official Sentry SDK you already ship keeps working — same init, same integrations, same breadcrumbs.
What does Argus not do?
Session replay, profiling, cron monitoring, alert routing and chat integrations are not part of Argus. If you need the full observability suite, Sentry is genuinely good at it — Argus is for teams who wanted the error tracker and a look at their slow endpoints.
Where is my data stored?
In the Postgres database you point Argus at. Nothing is sent anywhere else, there is no telemetry, and sensitive fields — cookies, authorization headers, tokens, passwords — are redacted before the event is written.
How do repeated errors get grouped?
By exception type, message and the top in-app stack frame. If that is wrong for your case, send a fingerprint array with the event and Argus groups on exactly that instead.
How much disk does it use?
Errors grow with your traffic and are yours to prune. Performance transactions are capped per project — the oldest are deleted once the cap is reached — so tracing has a ceiling you can predict.
Watch production. Own the data.
Clone it, bring it up with one command, and connect your first project in a couple of minutes.