Platform

How an event gets from the SDK to a chart

SDKs send batches to a Connect RPC endpoint, NATS queues them, Go workers add location and identity, and ClickHouse stores them for Live, Insights, and Profiles.

Architecture

How data flows

SDK track() and identify()
API Connect RPC ingest
NATS Queues every event
Workers Write events and profiles
ClickHouse Stores the events
Dashboard Insights and profiles

Ingest

SDKs send events in batches to a Connect RPC endpoint, which adds location, device, and UTM properties on arrival.

Process

NATS hands each event to Go workers for enrichment and identity resolution, so a traffic spike queues instead of dropping.

Serve

Events land in ClickHouse, which Live, Insights, and Profiles query directly.

Connect API

Typed, programmatic access

Read profiles, query insights, and send events over Connect RPC, in Protobuf or JSON.

Connect RPC

Typed services over HTTP, callable from any Connect or gRPC client, or with plain JSON.

Protobuf

Schema-first payloads, binary on the wire, defined once in .proto files.

Project keys

A public key for client SDKs and a private key for servers and reads, each scoped to one project.

Self-hosting

Run the whole stack yourself

Pug is AGPL-3.0. Run the binary and its three dependencies on your own infrastructure, and events never leave it.

Your infrastructure
  • Postgres Accounts, orgs, and projects
  • ClickHouse Events
  • NATS The event queue
  • Go workers Enrichment and identity

Send your first event.

Create a project, add the snippet, and watch the Live view fill up. Or open the demo first: the real dashboard on a sample pet shop, with no sign-up.

Questions? Email hello@pug.sh