MIT licensed Self-hosted Sentry SDK compatible

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.

No seat pricing No event quota No telemetry
argus · storefront · unresolved issues

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

Issue 24h Events Users Last
TypeError unhandled production

Cannot read properties of undefined (reading 'id')

src/composables/useCheckout.ts in loadCustomer · storefront@2.8.0

1.2k events318 users2m ago
1.2k 318 2m
FetchError production staging

POST /api/checkout/confirm failed with 500

server/api/checkout/confirm.post.ts in handler · api@1.19.2

486 events204 users14m ago
486 204 14m
UnhandledRejection unhandled production

Payment intent expired before confirmation

src/pages/checkout/confirm.vue in onConfirm · storefront@2.8.0

92 events61 users1h ago
92 61 1h
loadCustomer in app src/composables/useCheckout.ts:48:22

45const response = await checkoutApi.getCustomer(cartId)

46const customer = response.data.customer

48return customer.id

49}

browser Chrome 140 os macOS 15.5 release storefront@2.8.0 user usr_1042

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.
What you get

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.

Performance tracing

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.
GET /checkout/:id 842 ms
http.server842 ms
db.query · select cart38 ms
http.client · payments.api604 ms
db.query · update order52 ms
view.render96 ms

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.

JavaScript React Vue Nuxt Next.js Svelte Angular Node.js PHP Laravel Symfony Python Django Flask Ruby Rails Go .NET
Honest comparison

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.

 ArgusSentry
LicenseMIT, free foreverPaid SaaS, BUSL source
What you runNuxt app + Postgres20+ services to self-host
Where events liveYour databaseTheir cloud, or your cluster
Event quotaYour diskPer-plan quota and overage
SDKsThe official Sentry SDKsThe official Sentry SDKs
Error trackingYesYes
Performance tracingYesYes
Session replay, profiling, cronsNot supportedYes
Alerting and integrationsNot supportedYes

Comparison covers Sentry's hosted plans and its official self-hosted distribution at the time of writing.

Self-host

Running in three steps

No cluster, no queue, no vendor account. Clone, start, point your SDK at it.

1

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
2

Create a project

Open localhost:3000, create your account and team, then copy the project DSN.

http://PUBLIC_KEY@localhost:3000/sentry/1
3

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
})
FAQ

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.