Bilge
Sentry SDKs Already on Sentry? Change one line.

Catch what leaks before it sinks you.

Errors, traces, logs, session replays, queues and crons from every stack, grouped into issues you can actually fix, and routed to the one person who should be woken up.

  • 100k events a month free
  • No credit card
  • Sentry SDKs work as-is
acme / checkout · production live
IssueEvents
TypeError: Cannot read properties of undefined checkout.js:88New
1,204
QueryException: duplicate key value OrderController.php:142Regressed
486
TimeoutError: upstream exceeded 30s worker/sync.py:51Ongoing
210
NullPointerException in CartViewModel CartViewModel.kt:203Resolved
74
#alerts-webjust now

New issue: TypeError in checkout.js:88

312 users affected · release 4.2.0

Fix PR opened+3 −1
- const total = cart.items.length;
+ if (! cart?.items) return 0;
+ const total = cart.items.length;

1 line

to move from Sentry: swap the DSN, keep your SDK

19

signal types through a single ingest key

100k

events a month on Starter, free forever

$0

to start. No card, no sales call

  • Errors
  • Traces
  • Session replay
  • Logs
  • Queue jobs
  • Batches
  • Cron check-ins
  • Web vitals
  • Profiles
  • Metrics
  • Mail
  • Notifications
  • Model changes
  • Gate checks
  • Auth events
  • Domain events
  • Dumps
  • User feedback
  • Release health

01 / Install

Two minutes from signup to your first issue.

Bilge speaks the Sentry protocol, so the SDK you already ship keeps working. Point its DSN here and errors, messages and release health come straight over. No SDK? One POST from any language does it.

On Laravel? Laravel error tracking with one-line install →

app.js
import * as Sentry from "@sentry/browser";

Sentry.init({
  dsn: "https://<key>@bilge.sh/1",
});
app.py
import sentry_sdk

sentry_sdk.init(
    dsn="https://<key>@bilge.sh/1",
)
terminal
composer require bilgesh/tracing
php artisan bilge:install

# Paste your DSN when asked:
# https://<key>@bilge.sh
terminal
curl -X POST https://bilge.sh/api/ingest \
  -H "X-Api-Key: <key>" \
  -H "Content-Type: application/json" \
  -d '{"message":"Payment failed","level":"error"}'

02 / Product

Everything below the waterline, in one place.

Stop stitching together an error tracker, an APM, a log viewer and a cron monitor. Bilge keeps them on one timeline, so the trace, the replay and the log line are one click from the stack trace.

Grouping that kills the noise

Thousands of occurrences fold into one issue by fingerprint. See who's affected, which release did it, and whether it's new, ongoing or back from the dead.

TypeError checkout.js:88 #1197 TypeError checkout.js:88 #1190 TypeError checkout.js:88 #1183 TypeError checkout.js:88 #1176 TypeError checkout.js:88 #1169 TypeError checkout.js:88 #1162

TypeError: Cannot read…

1 issue

×1,204

312 users · 4.2.0

Session replay

Watch the clicks that led to the crash, attached to the error. Replays don't count against your quota.

Traces that point at the slow part

Follow a request across services. Bilge flags N+1 query patterns automatically and opens them as issues.

From stack trace to pull request

Connect GitHub and Bilge explains the error with your source in view, suggests a fix, and can open it as a pull request for review.

Alerts that respect on-call

Thresholds over 1h or 24h windows to email, Slack or webhooks. Spike protection steps in when a bad deploy floods ingest.

Queues, crons and logs

Failed jobs, missed cron check-ins and the log lines around them, next to the errors they caused.

Real-user web vitals

LCP, INP and CLS from real browsers, by page and by release, so you see the regression the day it ships.

Status pages and share links

Publish a public status page per project, or share a single error with a contractor through a read-only public link.

Ask your editor about production

Bilge ships an MCP server, a REST API and a CLI. Let your AI assistant pull the latest issue, its stack trace and its replay without leaving the editor.

03 / How it flows

From leak to fix, without the 3am guesswork.

  1. 1

    Thrown

    Your app throws. The SDK ships the stack, breadcrumbs, release and user, with the replay and trace attached.

  2. 2

    Grouped

    Bilge fingerprints it, folds it into an existing issue or opens a new one, and spots regressions.

  3. 3

    Paged

    Only the owner hears about it, on the channel they picked, once the threshold is crossed.

  4. 4

    Fixed

    Read the trace, watch the replay, ship the suggested fix, and mark it resolved in the next release.

04 / Pricing

Start free. Pay when it's worth it.

Every signal counts as an event. Replays and release-health sessions are free.

Starter

Prove the pipeline.

$0

forever

  • 100k events / month
  • 1 project
  • 3 members
  • 14-day retention
Start free
Most teams

Standard

For client projects and in-house apps.

$29 $319

per monthper year

  • 1M events / month
  • Unlimited projects
  • Unlimited members
  • 30-day retention
Choose Standard

Growth

For SaaS products with real traffic.

$79 $759

per monthper year

  • 5M events / month
  • Unlimited projects
  • Unlimited members
  • 90-day retention
Choose Growth

Need more than 5M events a month?

Higher volume, longer retention or invoicing: we'll put together a plan that fits.

Talk to us

Cancel anytime from Billing and keep access until the end of the period you've paid for. Monthly payments aren't refunded; yearly plans get a full refund if you ask within 14 days of purchase. Terms

05 / Questions

Before you cast off.

Still unsure? The docs go deep.

Do I have to rewrite my instrumentation?

No. Bilge accepts the Sentry protocol, so official Sentry SDKs work by changing only the DSN. Errors, messages and release-health sessions are stored today. For Laravel there is a native package that also covers traces, queues, crons and logs.

What counts as an event?

Each stored signal: an error occurrence, a span, a log line, a job run and so on. Sampled-out data, session replays and release-health sessions don't count.

What happens when I hit my limit?

You see it coming: the app shows usage against your plan and emails org owners as you approach the quota, so you can upgrade before anything is lost.

Can my whole team use it?

Yes. Organizations, teams, member roles and invitations are built in, with GitHub, Google and SSO sign-in. Starter includes 3 members; Standard and Growth have no member cap.

How long do you keep my data?

Retention follows your plan, from 14 days on Starter to 90 days on Growth. Data past retention is deleted, and owners can export all organization data or purge a project at any time.

Stop bailing.
Start fixing.

Set up in the time it takes to read the next incident report.