See every request your API handles

Open-source request logging on your own server. Filter every request with SQL, open the one that failed and follow a customer across services and background jobs.

Trailscope live tail: request rate, error rate and p95 tiles, a route heatmap with a release marker, new errors and the request stream

SDKs for the frameworks you already use

  • Express
  • Fastify
  • NestJS
  • Django
  • FastAPI
  • Celery
  • Laravel
  • Spring Boot
  • OpenTelemetry
Why Trailscope

Answers in the request itself, not in a pile of log lines

Your API already knows what happened. Trailscope keeps every request with its context, so "what did this customer see at 14:02?" takes seconds, not an afternoon.

Inspector In the app, Enter opens the selected request

Open the request that failed

See what was sent and answered, the error with its stack, and where the time went.

  • Headers, bodies, user, release and journey keys
  • A timing waterfall of the spans inside the request
  • Copy as cURL or replay it against staging
Request inspector showing a failed request with its error, stack trace and timing waterfall

Journeys In the app: G then J

Follow one customer across everything

Tag requests with a user, account, order or session, and Trailscope puts everything for it on one timeline, across services, background jobs and log lines.

  • Jobs and log lines started from a request are linked automatically
  • Answer support tickets with what actually happened
Journey of one account: requests, background jobs and log events across services on one timeline

Explore In the app: G then E

Filter with the SQL you already know

Write a WHERE clause, use quick search, or click filter chips. Group by any column with p50, p95 and p99, and share the view as a link.

status >= 500 AND route LIKE '/checkout/%'status:5xx user:u_42 duration:>1sUnder half a second over 102 million requests
Explore page with a status:5xx search, a chart of matching requests and the result list

Errors and routes In the app: G then R

Find the release that broke it

Errors are grouped by fingerprint with first and last seen, users affected and the release that introduced them. The route heatmap shows latency and errors per minute, with every deploy marked.

  • New and spiking errors on the live tail
  • Release markers on every chart
Route heatmap of p95 latency per route and minute, with a release marker
And everything around it

Built for the team that gets paged

  • Live tail

    Requests on screen within a second, with live tiles, a route heatmap and new errors as they appear

  • Alert rules

    On 5xx rate, p95 latency, counts or new and spiking errors, to email, Slack, Telegram or signed webhooks

  • Email on 5xx

    Hear about server errors in real time, with throttling, digests, regression notices and one-click mute links

  • Copy as cURL, replay

    Reproduce any request from your terminal, or replay it against a staging server you allowed

  • Redaction, twice

    Passwords, tokens and card fields are masked in your app before sending, and again on the server

  • Roles and body access

    Owners, admins, members and viewers, plus a separate permission to see request and response bodies

  • Single sign-on

    Sign in with any OpenID Connect provider: Google, Microsoft Entra, Okta, Keycloak and others

  • OpenTelemetry

    Point any OTLP/HTTP exporter at Trailscope and your spans become requests, for stacks without an SDK

Add it to your app

A few lines, and every request shows up

The SDKs send in the background, add at most 0.05 ms per request, and mask passwords and tokens before anything leaves your process.

terminal
npm install @trailscope/express
app.ts
import express from 'express';
import { init, trailscope, trailscopeErrorHandler } from '@trailscope/express';

init({ service: 'orders-api' }); // endpoint and ingest key from the environment
const app = express();
app.use(trailscope());
// ... your routes
app.use(trailscopeErrorHandler());

Then call setUser(id) or setCorrelation('order_id', id) anywhere in a request to make it part of a journey. All SDKs

Fast and cheap to run

One Rust binary, ClickHouse and Postgres

Everything runs on one small machine. ClickHouse stores a request in about 70 bytes, so 100 million requests take under 7 GB of disk.

50,000/sevents ingested on 4 vCPU, at p99 17 ms
<0.5sfiltered queries over 102 million requests
0.05msthe most an SDK adds to a request
0.6sfrom your API to the live tail (p95)

Measured and reproducible: how we benchmarked

Your services

  • Trailscope SDKsNode, Python, PHP, Java
  • OpenTelemetryany OTLP/HTTP exporter
  • Plain HTTPgzipped JSON batches

Trailscope, on your server

  • Ingestvalidates, redacts and groups errors, then batches
  • ClickHouserequests, spans, events and rollups
  • Postgresusers, projects, alerts and settings

Your team

  • Web UIlive tail, Explore, journeys, errors
  • Alertsemail, Slack, Telegram, webhooks
  • HTTP APIwith tokens and OpenAPI
Quickstart

Running in about a minute

All you need is Docker. The setup wizard does the rest.

  1. Start it

    Trailscope, ClickHouse and Postgres in one Compose file, with the published server image.

    git clone https://github.com/karaa1122/trailscope
    cd trailscope/deploy
    echo TRAILSCOPE_IMAGE=ghcr.io/karaa1122/trailscope:latest >> .env
    docker compose up -d
  2. Create your project

    Open http://localhost:8080. The wizard creates your account and first project and shows its ingest key.

    docker compose exec trailscope \
      trailscope demo --url http://localhost:8080

    Optional: demo traffic with a scripted incident.

  3. Add the SDK

    Install the package for your framework and set two environment variables. Production setup, TLS and backups: self-hosting guide.

    TRAILSCOPE_ENDPOINT=http://localhost:8080
    TRAILSCOPE_INGEST_KEY=trs_ingest_…
Self-hosted

Free, forever, with everything

Every feature, no limits and no license key. Your data never leaves your servers. AGPL-3.0, with Apache-2.0 SDKs.

Read the self-hosting guide
Cloud, coming soon

Or let us run it for you

Trailscope Cloud: the same software, hosted in the EU, with a free plan and simple monthly pricing.

See planned pricing
Trailscope Cloud

Rather not run it yourself?

We're building a hosted Trailscope: the same software, run for you, with nothing to install beyond the SDK. Leave your email and we'll write when it opens.

  • Early access before the public launch
  • One email when it's ready, no newsletter
  • EU hosting at launch

We keep your email on our own server in the EU and use it only to tell you about Trailscope Cloud. Privacy