Skip to main content

Serverless realtime analytics: OTLP events -> DuckLake on object storage (S3/GCS/R2/Azure), served over Quack.

Project description

nilalytics

PyPI Python License: Apache-2.0 Docs

The batteries‑included, OpenTelemetry‑native way to run your own web & mobile product analytics — on a DuckLake in your object storage.

nilalytics collects product events, errors, and performance data over OpenTelemetry (OTLP), stores them in a DuckLake lakehouse on any major cloud's object storage, and serves sub‑second reads over DuckDB's Quack protocol — no warehouse, no per‑event fees, no data leaving your infrastructure.

  • Web, mobile and backends: Grafana Faro (web), OpenTelemetry SDKs (mobile + server) → OTLP. Record user actions and whether the backend calls behind them succeeded — in one lake.
  • Runs on any cloud: S3, MinIO, Google Cloud Storage, Cloudflare R2, or Azure / ADLS Gen2.
  • Small files solved: DuckLake data inlining keeps streaming writes fast and cheap.
  • Batteries included: funnels, retention, errors, traces, metrics, cross‑device identity.
  • Secure by default: token‑authenticated ingest, read‑only query authz, a hardened public gateway.

📖 Full documentation: https://angelerator.github.io/nilalytics/

Install

pip install nilalytics

Also works with pipx install nilalytics or uv tool install nilalytics. Bleeding edge from source: pip install git+https://github.com/Angelerator/nilalytics.

60‑second local demo

# 1. object storage (local MinIO)
minio server .minio-data --address 127.0.0.1:9100 --console-address 127.0.0.1:9101 &
mc alias set nila http://127.0.0.1:9100 minioadmin minioadmin
mc mb --ignore-existing nila/nilalytics

# 2. run the pipeline
nilalytics server &      # ingest + Quack catalog
nilalytics gateway &     # public ingest gateway (CORS + tokens)

# 3. send + query
nilalytics emit --count 200 --persons 5
nilalytics query report

Architecture

flowchart LR
  W["Web · Grafana Faro"] -->|OTLP + token| GW
  M["Mobile · OpenTelemetry"] -->|OTLP + token| GW
  GW["Ingest Gateway<br/>CORS · tokens · TLS"] --> SRV["OTLP server<br/>(duckdb-otlp)"]
  B["Backend services · OpenTelemetry"] -->|"OTLP · private net"| SRV
  SRV --> LAKE[("DuckLake<br/>DuckDB + Quack catalog<br/>+ Parquet on object storage")]
  LAKE --> READ["Reads: DuckDB / DuckDB-WASM<br/>over Quack"]

Acknowledgements

nilalytics stands on the shoulders of giants. Huge thanks to DuckDB, DuckLake and Quack (DuckDB Labs / DuckDB Foundation), duckdb‑otlp (@smithclay), OpenTelemetry (CNCF), Grafana Faro (Grafana Labs), and MinIO — plus the projects that inspired it: canardstack, icelight, and stratif.io.

Full credits and dependency list: Acknowledgements.

License

Apache‑2.0 © Angelerator

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nilalytics-0.3.0.tar.gz (67.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nilalytics-0.3.0-py3-none-any.whl (37.6 kB view details)

Uploaded Python 3

File details

Details for the file nilalytics-0.3.0.tar.gz.

File metadata

  • Download URL: nilalytics-0.3.0.tar.gz
  • Upload date:
  • Size: 67.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for nilalytics-0.3.0.tar.gz
Algorithm Hash digest
SHA256 7052c40b9ecdc566c9bab0be9801270fe52b47661e0d694c73982b7f3eb971dc
MD5 1695e921449f712fe472c6beb3efd1e8
BLAKE2b-256 008128f47082cd72e8bb4fb438994888771b4d156d1f08e8f080c4df668a9e08

See more details on using hashes here.

Provenance

The following attestation bundles were made for nilalytics-0.3.0.tar.gz:

Publisher: publish.yml on Angelerator/nilalytics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nilalytics-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: nilalytics-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 37.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for nilalytics-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 717d1e31f5b0fb8dc97cf61980b03b498d82ded5e1b719861e88abc2e6079b77
MD5 2f564f46c493cc610b11487de85e6420
BLAKE2b-256 ce3bd2f5e13cfd195361a663826b5f9cf15d95da654cb53f65126a6f46d10448

See more details on using hashes here.

Provenance

The following attestation bundles were made for nilalytics-0.3.0-py3-none-any.whl:

Publisher: publish.yml on Angelerator/nilalytics

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page