Telescope
Telescope
Every request, job, command and scheduled task with its whole journey — queries, N+1s, HTTP calls, cache, logs and exceptions — for every server framework.
Telescope is request-journey tracing in the spirit of Laravel Telescope, built for every stack and joined into the rest of Nexus. Each unit of work — an HTTP request, a queued job, a CLI command, a scheduled task — is recorded with everything it did, in order and on a timeline, and Nexus flags what's wrong.
What it records
| Entry | Laravel | Symfony | Node | Python | .NET |
|---|---|---|---|---|---|
| Requests (route, headers, body, response, user) | ✓ | ✓ | ✓ | ✓ | ✓ |
| Queries with bindings and duration | Eloquent / DB | Doctrine DBAL | pg · mysql2 · Prisma | SQLAlchemy · Django ORM | EF Core · SqlClient · Npgsql |
Outgoing HTTP (with traceparent) | ✓ | — | fetch · http(s) · axios… | requests · httpx | HttpClient |
| Jobs / messages joining the trace | queue jobs | Messenger | job() + inject() | Celery · job() | RunAsync · message consumers |
| Commands & scheduled tasks | ✓ | ✓ | command() · schedule() | command() · schedule() | RunAsync |
| Logs | ✓ | — | console | logging | ILogger |
| Exceptions (filed in Errors) | ✓ | ✓ | ✓ | ✓ | ✓ |
| Cache, Redis | ✓ | — | ioredis | redis-py | — |
| Models, events, mail, notifications, gates, views, dumps, middleware timing, job batches | ✓ | — | events via event() | — | — |
| Custom spans | span() | span() | span() | span() / @traced | Span() |
What it finds for you
- N+1 queries — the same query shape run 5+ times in one journey.
- Duplicate queries — the same query with the same bindings run twice.
- Slow queries and slow requests — over your thresholds (100 ms / 1 s by default).
- Failures — exceptions, 5xx responses, failed jobs and commands.
Failed and slow journeys are always kept, whatever the sample rate.
Built on the rest of Nexus
- Exceptions are filed in Errors, grouped exactly as the Errors screen groups them; the issue links back to the journey.
- Log lines are forwarded to Logs with a link to the journey.
- The journey's user is attached to their session, so a person's timeline shows the requests they made.
- Jobs and outgoing calls carry a W3C
traceparent: a request, the jobs it dispatched and the services it called form one distributed trace across your services — and OpenTelemetry traces can join too.
Get started
Laravel
Install the package — nothing to wire.
Symfony
Register the bundle; Doctrine and Messenger included.
Plain PHP
Drive the recorder yourself.
Node.js
Express, Fastify, Koa, Nest, Next.js and more.
Python
Django, Flask, FastAPI, Celery, WSGI, ASGI.
.NET
ASP.NET Core, workers, EF Core.
OpenTelemetry
Send OTLP/HTTP traces from anything.
How it works
Batches, entries, sampling, analysis, delivery.
