Open source-available · Self-hosted · One Docker Compose install

Every signal from your product, on your own infrastructure

SignalMonitor is a self-hosted telemetry core: product analytics, error tracking with source maps, LLM observability, traces and spans, uptime monitors, and alerts — in one place, with your data never leaving your servers.

app/api/checkout.ts
import { createSignalMonitorClient } from "@sigmon/sdk/node";

const sigmon = createSignalMonitorClient({ endpoint, apiKey });

// product analytics
sigmon.track("checkout.started", { plan: "team" });

// errors with release + source-map resolution
sigmon.captureError(err, { release: process.env.SOURCE_COMMIT });

// LLM calls with model, tokens, cost, and latency
sigmon.llm({ provider, model, inputTokens, outputTokens, costUsd });
One telemetry core

Everything your product emits, correlated

Events, errors, LLM calls, traces, and monitors share the same project, environment, release, tenant, user, and session identity — so you can pivot from a spike to the exact session that caused it.

◆Product analytics

Events, funnels, retention cohorts, user paths, click maps, segments, dashboards, and experiment results — queryable per project and environment.

✕Error tracking

Grouped errors with breadcrumbs, incident triage, and CI-uploaded source maps resolved strictly by project, environment, and release.

✳LLM observability

Every LLM call with tokens, latency, and cost — aggregated by model, prompt, and tenant, so you know exactly who and what is spending.

↝Traces, spans & APM

Distributed traces with span timelines, endpoint performance, service maps, Web Vitals, and runtime profiles.

▣Sessions & feedback

Privacy-safe session timelines and replays, NPS surveys, in-app message campaigns, and a browser feedback widget.

◉Alerts & uptime

HTTP and heartbeat monitors, alert rules with webhook and email channels, and a system health view of your own install.

The console

From fleet overview to the exact session

Start from every project at once, narrow to a release, and end on the session and the bug report that explain it.

▤Cross-project Home

A fleet-wide KPI strip, a “needs you now” feed ranked by severity, and a project × signal matrix. Signals a project never sent show as not instrumented, never as a zero.

⇅Release health

Per release: adoption, error-free sessions, errors it introduced, p95 trace latency, and feedback volume — so a bad deploy is visible before the support queue fills.

≡Session timeline

One time-ordered view of a session across breadcrumbs, events, errors, traces, LLM calls, and feedback, with a session score on the project Overview.

◷Time on site & page paths

Engaged time per session, pages per session, bounce rate, and your top pages with entries and exits, plus the page path inside every session. Until the browser SDK sends page views, it says not instrumented — never a zero.

✎Feedback triage

Bug reports get a status, priority, assignee, and tags. Hosts can opt in to attach a masked copy of the page — serialised markup, never a pixel screenshot.

⚑Masked snapshots

Inputs and sensitive areas are masked in the browser before anything is sent, the server sanitises it again, and the console shows it in a sandboxed frame. Off unless your app and the environment both enable it.

★Pinned navigation

Each project pins the screens that fit it — an iOS app, a backend, a fullstack service — and everything else stays one click away under More.

Self-hosted

Your telemetry is product data. Keep it.

SignalMonitor runs on your own VPS with Docker Compose: a TypeScript API, a worker, Postgres, and Redis. No usage-based pricing, no data leaving your infrastructure, no per-seat surprises.

  • Single Docker Compose install, smoke-tested on every release
  • Postgres as the source of truth — plain SQL, your backups
  • Worker-owned retention, backups, and warehouse exports
  • Project + environment scoped API keys, CI-only upload tokens
  • TypeScript SDK for Node.js, browser, and Next.js
bash
# deploy your own instance
git clone https://github.com/DiogoHSM/sigmon
cd sigmon
cp .env.example .env   # set your secrets
docker compose up -d

# API, worker, Postgres, and Redis are up
curl -s localhost:3000/health

Free to use, source in the open. Download it, read it, self-host it for your company or your side project — free of charge, forever.

The one thing the license does not allow is taking SignalMonitor and reselling it to third parties as a hosted or managed service. See the license for the exact terms.