OpenTelemetry-native · Elixir-powered · Self-driving

The observability
platform that drives itself.

One Elixir-powered platform for metrics, traces, logs, RUM, synthetics, infrastructure, incidents, and security findings. Funnel auto-discovers your services, suggests SLOs, opens incidents on critical fires, and writes a first-draft postmortem — so your team can focus on shipping.

OTLP HTTP + gRPC
AI incident summary
Self-host or cloud
Open source
Live · last hour
requests/s
1,247
+12%
p95 latency
182ms
-4ms
error rate
0.42%
+0.1%
api v1.2.4
metrics traces logs service alert
3 pillars
metrics · traces · logs
18+ surfaces
infra · RUM · synthetics · SIEM
10 automations
the platform does the work
10,000 vendors
one app, one bill, one database
Three pillars

One platform. One time-range. Same alert.

Metrics, traces, and logs ingest through the same OTLP endpoint, query the same database, and surface in the same LiveView. No bouncing between vendors.

Metrics Explorer

Time-bucketed aggregations (avg, sum, p50/p95/p99, rate). Group-by attribute, filter by service. Live forecast band with Holt-Winters.

Traces & Service Map

Span tree visualization with flame graphs. Auto-computed service map from parent/child span service edges. Click any operation to drill in.

Live Logs

Full-text search with PostgreSQL tsvector. Severity filtering. Real-time tail as logs arrive. Click any row for full attribute drawer.

Automation

Funnel does the chores.

Most observability tools force you to register services, write alert rules, file incidents, and tag every metric by hand. Funnel auto-discovers, auto-tags, auto-suggests, and auto-summarises — leaving humans for the decisions that actually matter.

10 automations live
Service auto-discovery

First time a service.name is seen on a metric or span, it's registered in the Software Catalog as auto + needs-owner. Someone claims it later.

Self-checking onboarding

Five-step checklist on the project dashboard. Each step flips green as data arrives. No setup wizard to fight.

Auto-detected deploys

A change in deployment.version on incoming spans automatically writes a deploy marker. Drawn as vertical lines on every metric chart.

Promote anomalies to rules

WatchEagle shows live EWMA baselines (μ, σ). One click turns any baseline into a 3σ anomaly rule that auto-opens incidents on fire.

Alert → Incident → AI summary

A critical alert auto-opens an incident. 60 s later an AI postmortem cites recent deploys and error spikes. Cooldown prevents storms.

Suggested SLOs

A 6-hourly worker reads 30 days of spans per service and proposes a realistic SLO target snapped to 99.9 / 99.5 / 99.0. One click applies it.

Hot-path telemetry tagging

Every metric / span / log gets tier and owner_team stamped from the Catalog in 1 µs via ETS cache. Group-by ownership without manual tagging.

Findings dedupe

SIEM / SCA / secret-scanner repeats of the same external_id upsert instead of inserting duplicates. seen_count bumps; severity escalates.

Platform features

More than metrics

Eighteen Datadog-class surfaces, one product. Each one is real, queryable, and wired into the same alert pipeline.

Infrastructure & GPU

Auto-discovered hosts and containers from a single /v1/hosts/heartbeat endpoint. CPU, memory, disk, GPU gauges.

RUM & Session Replay

Drop-in browser SDK (~5 KB) captures LCP / FCP / TTFB and unhandled errors via navigator.sendBeacon.

Synthetic checks

HTTP GET/POST with status, latency, and body-regex assertions. Cron-driven via Oban. Alert on N consecutive failures.

Incident management

Open / acknowledge / resolve with a timeline of comments and status changes. Auto-created from critical alerts.

Software catalog

Services with owners, on-call URLs, repo links, tier, dependencies, and SLO targets. Backbone of every automation.

Cloud cost

Daily roll-ups by resource kind, service, team, region. Auto-attributed to a catalog service via service.name match.

SIEM, workload, secrets, vulns

Four security pillars in one findings table. Source discriminator + dedupe on external_id. Severity escalates over time.

WatchEagle

Dedicated anomaly view. Live baselines update every minute. Holt-Winters forecast preview per metric. One-click rule promotion.

Smors AI

Project-aware LLM gateway. Anthropic / OpenAI / Echo providers. Per-call cost, monthly budget, rate-limit. Powers AI postmortems.

Gateways & governance

Production-grade by default

API & AI gateway

Token-bucket rate-limit per key. Scope-locked tokens. Read API at /api/v1 mirrors the write API at /v1.

Scoped access tokens

14 named scopes (ingest:*, read:*, ai:chat). Bearer auth, bcrypt-hashed. Audit log for every key issuance and revoke.

Alerts → webhooks

Threshold, error-rate, anomaly, log-pattern, synthetic-failure. HMAC-signed delivery via Oban with retries.

Deploy markers

Auto-detected from telemetry, or POST /v1/deployments from CI. Renders on every chart so you can see before/after instantly.

Prometheus exporter

Drop-in /metrics endpoint compatible with any Prometheus scraper. Project-scoped via Bearer auth.

Multi-node clustering

libcluster Gossip strategy for dev. Phoenix PubSub fans out across nodes. Ingestion shards by project_id.

How it auto-works

From first packet to first incident — without touching a knob

1
Ingest

Point OTLP at /v1

Send metrics / traces / logs from any OpenTelemetry SDK over HTTP+JSON or gRPC. Bearer-auth a project token, choose scopes, done.

$ curl -X POST funnel/v1/metrics \
   -H "Authorization: Bearer st_..." \
   -d @batch.json
2
Auto-organise

Funnel infers the rest

Services auto-register. Ownership tags propagate to every datapoint. Deploy markers appear on every chart. Onboarding checklist self-checks. You did nothing.

  • Service registered (tier3, needs-owner)
  • tier + owner_team stamped on telemetry
  • Deploy v1.2.4 marker written
3
Triage

Wake to a postmortem stub

Anomaly breaches threshold. Alert fires. Incident auto-opens. AI writes: "Likely cause: recent deploy of api-svc to v1.2.4". You read 3 lines, decide rollback, sleep again.

AI Summary
What happened: p95 latency for api-svc spiked to 3.2× baseline.
Likely cause: deploy of v1.2.4 at 14:17.
Next steps: roll back or investigate hot path.

Stop wiring observability. Start using it.

Create a project, drop in an API key, point your SDK at /v1. Auto-discovery, auto-tagging, auto-incidents, and AI postmortems are on by default.