Crash reporting on your own Cloudflare account

crashyard is an open-source, Sentry-compatible crash, error and log reporter. It runs as one Worker with D1 and R2 that you deploy in a click. Your apps keep the official Sentry SDKs and only change their DSN.

Cloudflare's free plan handles a few thousand events a day. Native crashes and source maps need Workers Paid. See why.

// app.tsimport * as Sentry from '@sentry/browser' Sentry.init({-  dsn: 'https://5e1c0a7d3b@o4507.ingest.sentry.io/451',+  dsn: 'https://8b41d2f09c@crashyard.example.com/3',   release: import.meta.env.VITE_RELEASE,})

The same one-line change for every official Sentry SDK.

crashyard.example.com/issues/3
An iOS crash in crashyard: EXC_BAD_ACCESS in acme-ios 1.0 (10), with its stack trace read back to Voice.swift line 41, its events over time and its tags An iOS crash in crashyard: EXC_BAD_ACCESS in acme-ios 1.0 (10), with its stack trace read back to Voice.swift line 41, its events over time and its tags
Works with the official Sentry SDKs for
  • Apple
  • Android
  • JavaScript
  • Node.js
  • Python
  • Ruby
  • PHP
  • Go
  • Java
  • .NET
  • Elixir
  • Rust
  • Dart

Readable stack traces from the files you already upload

Point sentry-cli, the Xcode build phase, the Gradle plugin or @sentry/vite-plugin at crashyard. It reads dSYMs, R8 mappings, native libraries and source maps with Sentry's own symbolic library, built to WebAssembly.

  • Crashes that came first are read againAnything from the last 30 days that arrived before its files is processed once they're uploaded.
  • Each frame opens its lineOn GitHub or GitLab, at the release's commit. Private repositories need no token.
  • Suspect commitsAn issue lists the commits in its first release that changed a file in its stack. Fixes CRASHYARD-42 in a message resolves it.
Terminal
# Point Sentry's own tools at crashyardexport SENTRY_URL=https://crashyard.example.com/export SENTRY_ORG=crashyardexport SENTRY_PROJECT=acme-iosexport SENTRY_AUTH_TOKEN=cy_… # After archiving the iOS app$ sentry-cli debug-files upload --include-sources ./dSYMs # Send the release's commits for suspect commits and links$ sentry-cli releases set-commits "1.0 (10)" --local

Everything a small team uses Sentry for

Issues, releases, logs, traces and monitors in one dashboard, light or dark, on a desktop or a phone.

Issues

Crashes and errors grouped the way Sentry groups them, searchable with Sentry's query syntax.

  • Resolve now or in the next release
  • Regressions flagged when an issue comes back
  • Merge, ignore, assign and add notes
  • Crashes from App Review and TestFlight called out
The issues list: events per day for 14 days, then issues from acme-ios, acme-web and sync with their counts The issues list: events per day for 14 days, then issues from acme-ios, acme-web and sync with their counts

Alerts where you already are

Route each alert by type, project, level and environment. Quiet hours hold the ones that can wait until morning, and a weekly summary lands on Monday.

Telegram Slack Discord Email Web push Webhook
crashyard bot
EXC_BAD_ACCESS: KERN_INVALID_ADDRESS at 0x10 acme-ios · 1.0 (10) · Reached 100 events Held for quiet hours, sent at 08:00
ResolveIgnoreAssign to me

Triage from your agent

An MCP server at /mcp lets an agent such as Claude Code read issues, events, logs, traces and releases, and resolve, assign or merge what it finds. A token acts as you and never does more than your role allows.

Terminal
# The token comes from Settings, then Agent tokens$ claude mcp add --transport http crashyard \    https://crashyard.example.com/mcp \    --header "Authorization: Bearer cyp_…" # Then ask: why did acme-ios 1.0 (10) start# crashing in Voice.next()?

The rest of the job, in the same Worker

Performance

Transactions by p95, how each release changed them, and web and mobile vitals.

Dashboards

Charts, numbers and tables from issues, events and logs, or the Crashes template.

Worker runs

Catches Workers that run out of CPU time or memory, which their own SDK never gets to send.

Passkeys

No passwords. Four roles from owner to viewer, invites, recovery codes, and Sign in with GitHub if you want it.

Updates from GitHub releases

crashyard checks for new releases daily and installs one from the dashboard, or every night.

Installable app

Add it to your phone's home screen, with push notifications on iOS 16.4 and later.

Next to Sentry

Forward every event on to Sentry too, so you can compare the two until you switch.

Private by default

No telemetry, no IP addresses. Passwords, tokens and emails are scrubbed before storing.

Moving from Sentry

Import a project's issues with their latest event, counts, status and comments. New events land on the same issues.

What runs on which Cloudflare plan

crashyard runs in your account, so Cloudflare's plan is the only bill. Cloudflare's free plan handles a few thousand events a day.

FeatureFreePaid
Issues, alerts, logs, traces and performanceYesYes
Releases, sessions and crash-free ratesYesYes
Monitors, uptime checks and status pagesYesYes
Stack traces readable as sentNode.js, Python, Ruby, PHP, Go, Java, .NETYesYes
Native crashes from iOS and AndroiddSYMs, R8 mappings and native librariesNoYes
Source maps for browser JavaScriptNoYes
Installing updates from the dashboardNoYes
Debug files up to 512 MBWith the optional SymCache builder containerNoYes

Why native crashes need Paid

Turning a stack trace back into code takes more processing time than the free plan's 10 ms a request. crashyard finds which plan your account is on by itself, and the pages that need Paid say so.

Not there yet

  • React Native with Hermes, obfuscated Flutter and Unity with IL2CPP arrive grouped, with raw frames.
  • Profiles and session replays are accepted and dropped.

Everything that works, checked against each SDK

How it compares

Other projects keep crash reports yourself too. Here's where crashyard differs.

crashyard

One Worker in your Cloudflare account, with no server to run.

  • Everything the Sentry SDK sends
  • Native symbols through sentry-cli
  • Alert routes with quiet hours
  • Uptime checks and incidents
  • Passkeys and an MCP server
Also on Workers

Bicho, Workers Sentinel

Take errors through an API, without performance data, sessions, logs, monitors or alerts.

In containers

GlitchTip, Bugsink, OpenFault

Speak Sentry's protocol too, and need a server and a database that you keep running.

Hosted

FlareLog

Runs on its own servers, and your apps send with its own SDK instead of Sentry's.

Need session replays or profiling? Use Sentry. crashyard can forward every event there while you compare.

Running in about fifteen minutes

The button copies crashyard to your GitHub account, creates the D1 database and the R2 bucket, and deploys. Add a setup code, create your owner passkey, and give each app's SDK its project's DSN.

Or deploy from a clone
$ git clone https://github.com/marctorrelles/crashyard$ cd crashyard && pnpm install$ pnpm run setup# Asks for your domain and email, deploys,# and prints the setup code for your owner passkey