One engine, four formats
JavaScript source maps, Dart and Flutter obfuscation maps, iOS dSYMs, and Android R8 mappings through the same compiled cache.
Your coding agent sets up Traceway and debugs production for you.
MIT-licensed. Self-host in minutes or start free in the cloud.
Specialized · Symbolicator
Minified bundles reduce every production error to single letters on line one. Traceway resolves each frame back to the file, line, and function you wrote — the moment the error arrives.
Service facts
Head to head against Honeycomb's symbolicator on a 2 vCPU Hetzner ccx13.
Bring your own pipeline
The same engine ships as an OpenTelemetry Collector processor: same component type, same attribute contract, same config keys as the source_map_symbolicator. Pure Go, no glibc base image required — and MIT licensed, with or without Traceway behind it.
npx traceway-sourcemaps --directory ./distRun it after your build, in CI or locally; under the hood it's one multipart endpoint, so plain curl works too.
On this line
Most symbolicators re-parse source maps on every restart and hold them in RAM. Ours compiles each map once, then memory-maps it from disk.
JavaScript source maps, Dart and Flutter obfuscation maps, iOS dSYMs, and Android R8 mappings through the same compiled cache.
Each artifact is compiled to a .tw once and memory-mapped; the OS page cache does the eviction, and the cache is bounded by disk size, not a RAM entry count.
Symbolicates spans, span events, and log records in any collector build — a drop-in replacement for Honeycomb's source_map_symbolicator.
Errors from builds without maps stay minified but group correctly; resolved names are excluded from the hash, so groups don't reshuffle when maps arrive.
Private by design
Maps upload to your instance's blob storage and are used server-side only — never served to browsers — so you can keep .map files out of your deployed assets entirely.
Next stop
Upload your source maps once. Every production error after that points at the code you wrote.