Docs

Server errors

The browser shows that a request failed. Your server knows why. With the tracetells client, Trace shows both: the exception, where in your code, on which route, since which release, and how many visits it broke.

With your coding agent

/trace:setup server errors

It installs the client for your stack, creates the website's server key and tells you where to put it. Then /trace:fix server error 7 fixes one, and Trace tells you whether it stopped.

By hand

Create the key: /trace:manage create a server key, or ask an admin. Set it as TRACE_SERVER_KEY in your server's environment or secret store, never in the repository. Set TRACE_RELEASE to the commit or version you deploy, if your platform doesn't.

Rust

tracetells = { version = "0.1", features = ["axum", "tracing"] }

let _trace = tracetells::init(tracetells::Config::from_env());
let app = Router::new().route("/orders/{id}", get(show)).layer(tracetells::TraceLayer);

Panics, 5xx responses and, with TracingLayer, events logged at error level. The crate's README.

Node.js

npm install @tracetells/node

import * as trace from "@tracetells/node";
trace.init();
app.use(trace.expressErrorHandler());   // Express, after your routes
await app.register(trace.fastifyPlugin); // Fastify

Uncaught exceptions and unhandled rejections too. The package's README.

Ruby

gem "tracetells"   # Rails: nothing else

use Tracetells::Rack   # Rack and Sinatra, after Tracetells.configure

In Rails it subscribes to Rails.error, so controller and job errors are reported with their route. The gem's README.

What is sent, and what never is

SentNever sent
The error's class and its message, scrubbedRequest or response bodies
The backtrace: files relative to your project, lines, functionsParameters and query strings
The route template, like /orders/:idHeaders and cookies
HTTP method and statusEnvironment and local variables
Environment, release, runtime versionSource code and host names
When it happened, and how oftenWho was signed in

Emails, tokens, card numbers, IBANs and phone-like numbers are replaced in messages before they leave, and again on Trace's server. Trace stores counts per hour and one sample backtrace per group, never individual requests. Keep personal data out of exception messages anyway: no pattern catches a name.

What Trace does with them

  • Groups errors by class and the first frame of your own code, so the same bug with different ids is one group.
  • Ties them to visits: when browsers saw the same request fail, Trace shows how many visits it broke, on which pages, and which goals those pages feed. That's how it ranks them.
  • Follows releases: new in a release, back after a fix (a regression), or stopped a week after resolving.
  • Hands them to your agent over MCP, with a task prompt for each.

How the clients behave

They send from the background, in batches, at most once a second, and never slow a request. The first occurrence goes at once; repeats within a minute go as one count. When Trace can't be reached, they drop errors and back off rather than pile up. Each occurrence counts as an event towards your plan's monthly limit.