Drop-in observability for your TypeScript API
Vision auto-generates a full dashboard for the Express, Fastify, Hono or Elysia app you already have — routes, traces, logs and an API playground. Two lines of code, zero config.
> Develop locally, then ship the same traces to any OpenTelemetry backend.
Works with the stack you already run
Add a span. Watch it appear.
Every request is traced automatically. Drop span(), context and logs where you want more detail — and see exactly what ran, in order, with timings.
import { createModule } from '@getvision/server'
export const users = createModule({ prefix: '/users' })
.get('/', ({ span, addContext, logger }) => {
addContext({ 'user.plan': 'pro' })
const rows = span('db.select', { 'db.table': 'users' }, () =>
db.select().from(users).all()
)
const data = span('enrich.profiles', {}, () => enrich(rows))
logger.info('loaded users', { count: rows.length })
return data
})Everything you need to see inside your API
One dashboard for traces, logs and testing — wired into your framework, not bolted on.
Auto-generated dashboard
Vision discovers your routes and services and builds the whole dashboard for you — no setup, no config, no schema files.
Real-time tracing
A live waterfall of every request — spans, timings and parent/child relationships as they happen.
Wide-event logs
Logs auto-linked to the active trace. Add context once and see it on every log in the request.
API playground
Fire requests at your own endpoints in a multi-tab client — no Postman, no context switch.
Schema-aware
Request templates auto-generated from your Zod, Valibot or Standard Schema validators.
OpenTelemetry exportnew
Ship the same traces over OTLP/HTTP to Grafana, Honeycomb, Datadog or an OTel Collector.
Observability without the tradeoff
The usual options ask you to give something up. Vision doesn't.
Without the rewrite
Some tools give you a dashboard — but only if you rebuild your app on their framework. Vision is just middleware on the app you already have.
Without the wiring
Raw OpenTelemetry means an SDK, a collector and a backend before you see a single span. Vision works the moment you add it.
Without the lock-in
Self-hosted and MIT-licensed. Develop locally, then export to whatever production backend you already run.
Ready to see what your API is doing?
Add Vision in two lines and open the dashboard. No signup, no agent, no data leaving your machine.