Replay an incident

Try it on an incident of your own

Take an incident your team has already been through and see how ForgeOps would have read it. Give it the errors from around that time, in whatever form you have them, and it replays them minute by minute through the same rules a live project gets: when it would have detected it, what it would have named as the likely cause at each point, and what the evidence said against it. Tell it what your team found, and it shows the two side by side. No account needed.

Any of: Sentry events (JSON), JSON log lines, a CSV with a time column, plain log lines that start with a time, or our own incident file, which can also carry deploys, timings, and traces. Include the hour before the incident, so there's a normal rate to compare against.
The cause you landed on. It's shown beside what ForgeOps concludes, so you can compare the two.
Logs and error exports don't say when you deployed, and a deploy is the first thing ForgeOps checks.

Nothing you upload is saved. The file is read, replayed in a scratch space that is thrown away when the replay ends, and the result is shown to you on the next page. We keep no copy of the file or of the result, so that page is the only one: print or save it if you want to keep it. No alerts are sent and nothing is added to any account. You can still leave out or mask anything you'd rather not send: user ids only need to be distinct, and error messages can be shortened. Privacy Policy, section 3a.

A large file can take up to half a minute.

Getting the most out of it: our own incident file

An export of errors is enough to start, and the replay tells you what it couldn't check without the rest. To give it everything (what each deploy changed, query and endpoint timings, traces), use our incident file. Only errors is required in it. Download an example file (it's the one behind our example replay), or see the full format.

SectionEach entryWhat it's used for
errorsoccurred_at, exception_class, and optionally message, backtrace, release, user_id, countDetecting the incident, counting who it hit, and matching stack traces to changed files
deploysdeployed_at, release, and optionally changed_files, pull_request_number, deployed_byWhether a deploy lines up, and whether what it changed is in the failing code
performancekind (controller, query, http, or job), name, period_ended_at, durations_msSlow queries, slow outside services, slow endpoints
spanstrace_id, kind, name, started_at, duration_msLooking inside the slowest request for repeated queries
failureskind (job or dependency), name, occurred_atFailed background jobs and failed calls to outside services
metricsname, recorded_at, valueDatabase connection-pool pressure

Up to 2,000 errors and 6 hours of time. Logs aren't read yet. Times are ISO 8601, like 2026-09-24T10:38:10Z.