AI triage that knows what the user did before the crash

An AI-powered error triage CLI for your stack.

Crashscope joins your error tracker with session replay and uses Claude to produce ranked, actionable triage reports — right inside your terminal.

$ npm i -g @pradhankukiran/crashscope
See it in action

Bring your own Anthropic API key. Credentials never leave your browser beyond a single request.

Deploying for your team? Spin up the server →

Sample outputsentry → posthog · 47s
HIGH · fatal

TypeError in SupplementCard.tsx:42

23 users · 47 events · last 1h · since deploy v2.3.1

sentry
User flow

User completed steps 1–10 of onboarding, then on step 11 tried to add “Vitamin D3 + K2”. Error fired when the supplement name contained “+”. User rage-clicked 4× then abandoned.

Hypothesis

URL encoding on the supplement name parameter. The literal “+” is being decoded to a space before reaching the scanner.

Check
lib/scanner/parse.ts:18app/scan/[id]/page.tsxlib/url.ts
Watch replayOpen in Sentry
confidence · high
Preview before you install
Paste your credentials to see crashscope work against your data. When you’re convinced, install the CLI.
No errors in your Sentry yet? Generate matched test errors + sessions with the test harness.Open
AI
Anthropic credentials.

Used once for this request. Never stored server-side.

Run options
Window and result cap.
Error provider
Where your crashes come from.
Session provider
Where the user's session replay lives.

EU: https://eu.i.posthog.com

Credentials are persisted to localStorage so you don't have to re-enter them, and are sent transiently to the server for one request only — never stored server-side. Click Clear stored credentials to wipe them.

How it works

A deterministic adapter layer feeds a Claude investigation, so the model gets just the signals it needs — no provider-specific prompts.

  1. STEP 01
    Fetch errors
    Pull recent issues from Sentry, Rollbar, Bugsnag, or Honeybadger.
  2. STEP 02
    Find the session
    Match each affected user to a PostHog or LogRocket session.
  3. STEP 03
    Investigate
    Claude analyses the stack + user journey and emits a structured finding.
  4. STEP 04
    Deliver
    Report goes to Slack, your terminal, or your API consumer.

See it in action

Same triage pipeline, two surfaces. Pick the one that fits how your team works.

CLI· your terminal
~/crashscope · zsh
Slack· /triage in any channel
engineering· 24 members
Message #engineering

Bring your existing stack

Adapters live in @pradhankukiran/crashscope-core and normalize each provider into a shared error and session shape.

Sentry
Error tracker
Issues, events, breadcrumbs via the public REST API.
Rollbar
Error tracker
Items, occurrences, and tracebacks via Rollbar's read API.
Bugsnag
Error tracker
Errors and events from the Bugsnag Data Access API.
Honeybadger
Error tracker
Faults and notices from Honeybadger's v2 API.
PostHog
Session replay
Session recordings + person events keyed by user id.
LogRocket
Session replay
Sessions and events from the LogRocket public API.

Get started

Install the CLI once. Deploy the server later if your team wants the same triage from Slack or REST.

Recommended
The CLI is the product
One install. Triage from any terminal.
$ npm i -g @pradhankukiran/crashscope
$ crashscope init
$ crashscope triage --since 24h
For teams
Slack bot
slash command
/triage
/triage 7d
/triage 24h severity=fatal,error
Add the Slack app, mount this server, and trigger triage from any channel.
REST API
bash
$ curl -H 'Authorization: Bearer $TOKEN' \
       'https://your.vercel.app/api/triage?since=24h&limit=25'
Hit the REST endpoint from CI, internal dashboards, or your own bot.

Deploy the server to enable these →

Run your own instance

Same code, your infrastructure. Visitors of your deployment paste their own credentials into the demo form — you don't hold anyone's keys.

Recommended
Railway
Long-running Node process. Best fit for crashscope — Slack background jobs and multi-minute Claude investigations both run without serverless quirks.
Open Railway

Or via CLI

$ git clone https://github.com/pradhankukiran/crashscope.git
$ cd crashscope
$ railway init && railway up

From $5/mo. Free trial credits included.

Vercel
Familiar one-click serverless deploy. Slack background jobs use `waitUntil`; long Claude investigations have a 300s function ceiling.
Deploy on Vercel

Or via CLI

$ git clone https://github.com/pradhankukiran/crashscope.git
$ cd crashscope/packages/server
$ vercel deploy

Free tier covers most teams.

Render
Long-running container host. Reads the Dockerfile in the repo, no extra config — same runtime model as Railway with a different control plane.
Deploy on Render

Or via CLI

# render auto-detects Dockerfile in the repo
$ git clone https://github.com/pradhankukiran/crashscope.git
# then in Render dashboard: New + Web Service
# point at this repo, Render reads packages/server/Dockerfile

Free tier for hobby services.

Docker
Same image runs on any container host — Render, Fly.io, Cloud Run, Fargate, your own VPS, or Kubernetes. The Dockerfile + docker-compose.yml in the repo are the canonical artifacts.

From the terminal

$ git clone https://github.com/pradhankukiran/crashscope.git
$ cd crashscope
$ cp packages/server/.env.example packages/server/.env.local
$ docker compose up -d

Bring your own host.

Env vars you'll need

ANTHROPIC_API_KEY, CRASHSCOPE_API_TOKEN, your error provider (ERROR_PROVIDER + credentials), and your session provider (SESSION_PROVIDER + credentials). Optional: Slack signing secret + bot token, Upstash Redis for distributed rate-limiting.

The public POST /api/triage demo accepts credentials in the request body, so you can deploy without any provider env vars and visitors still get a working triage experience. Full env reference →