Open source · Self-hosted · MIT

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

ExpressFastifyHonoElysiaNext.js

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.

users.module.ts
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
  })
Vision · localhost:9500
TracesLogsPlayground
GET/users
200142 ms
GET /users
142ms
db.select
38ms
enrich.profiles
54ms
INFO loaded users count=12 user.plan=pro

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.