Azothedge Pulse¶
An open, observable customer data platform. Pulse is a multi-tenant CDP for collecting, validating, and landing customer event data — PDM schemas, streaming and batch ingestion, a governed data lake, and (across the roadmap) identity resolution, profiles, segments, and journeys — built on a Kafka- and Iceberg-based core you can run yourself.
-
Get Started
Boot the full stack locally in about 90 seconds and send your first event end to end.
-
Concepts
Understand the data model: PDM schemas, the Iceberg data lake, and per-tenant isolation.
-
API Reference
The full REST API, OpenAPI 3.1, generated from the live FastAPI service.
Composable primitives, open foundation¶
Composable by design
Pulse's data model is composable: classes, field groups, datatypes, schemas, and descriptors assemble into validatable PDM schemas. Datasets back Apache Iceberg tables, and POST /v1/collect is the streaming entry point. See the Component Map for the full picture.
What ships today¶
Pulse is built in the open, week by week. As of v0.1 the ingestion plane is complete end to end:
- A multi-tenant schema registry (classes, field groups, datatypes, schemas, descriptors) with a draft → published → archived lifecycle.
- Streaming ingestion via
POST /v1/collect— PDM-validated, published to per-tenant Kafka topics. - An exactly-once worker that lands events in per-tenant Apache Iceberg tables on object storage.
- Dataset preview over the lake with DuckDB, and a Next.js admin portal.
- Per-tenant isolation enforced by Postgres row-level security, plus Prometheus metrics and OpenTelemetry traces across both planes.
Identity, profiles, segments, and journeys are on the Roadmap.
License¶
Pulse is source-available under the Business Source License 1.1. It converts to Apache 2.0 on 21 May 2030. See the License page for the full text and what it means for commercial use.