Skip to content

Why ErrPulse?

ErrPulse is a free, local-first error monitoring tool for developers who want instant visibility into errors without vendor lock-in, cloud accounts, or configuration files.

Comparison

FeatureErrPulseSentryLogRocket
Setupnpx errpulseAccount + DSN + configAccount + SDK + config
PricingFree foreverFree tier, then paidFree tier, then paid
Data locationYour machineTheir cloudTheir cloud
Config filesNone neededsentry.properties, .env.env
AccountsNoneRequiredRequired
Backend errorsYesYesLimited
Frontend errorsYesYesYes
HTTP request trackingYesPartialYes
Real-time updatesWebSocketPollingPolling
Plain-English explanations46 built-in patternsAI-suggestedNo
Error correlationFrontend ↔ BackendPartialFrontend only
Self-hostedBy designEnterprise onlyNo

Key Differentiators

Zero Config

There is no configuration file. npx errpulse starts a server. Import the SDK and it works. No DSN, no API keys, no environment variables required.

Local-First

Your error data stays on your machine in a SQLite database at ~/.errpulse/errpulse.db. No data leaves your network unless you choose to deploy the server externally.

Free Forever

ErrPulse is MIT-licensed open source. There are no usage limits, no paid tiers, and no feature gates.

One Command

The entire stack — API server, SQLite database, WebSocket server, and React dashboard — starts with a single command.

What Gets Caught

Backend (@errpulse/node)

Error TypeCaptured By
Uncaught exceptionsprocess.on("uncaughtException")
Unhandled promise rejectionsprocess.on("unhandledRejection")
Express route errors (4xx/5xx)expressErrorHandler() middleware
Next.js API route errorswithErrPulse() wrapper
console.error callsConsole interceptor
Memory threshold warningsMemory monitor (configurable)
All HTTP requestsexpressRequestHandler() middleware

Frontend (@errpulse/react)

Error TypeCaptured By
JavaScript runtime errorswindow.onerror
Unhandled promise rejectionswindow.onunhandledrejection
React component crashesError boundary
Failed fetch requestsFetch interceptor
Failed XHR requestsXHR interceptor
console.error callsConsole interceptor
Resource load failures (img, script, css)Capture-phase event listener

Error Correlation

ErrPulse correlates frontend and backend errors using a correlation ID:

  1. The React SDK generates a unique X-ErrPulse-Correlation-ID header for every outgoing fetch request
  2. The Node.js SDK reads this header from incoming requests
  3. If a backend error occurs during that request, both the frontend request and backend error share the same correlation ID
  4. The dashboard links them together, so you can trace a user action to the server error it caused

This happens automatically — no configuration required.

Released under the MIT License.