Skip to main content

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

Project description

nilalytics

Serverless, self‑hosted realtime analytics for web and mobile — on your own 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.

  • One SDK per platform: Grafana Faro (web) or OpenTelemetry SDKs (mobile) → OTLP.
  • 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 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)"]
  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.1.0.tar.gz (51.4 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.1.0-py3-none-any.whl (27.2 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for nilalytics-0.1.0.tar.gz
Algorithm Hash digest
SHA256 2a754e2f9ab113cc51692a0f855e5f372b49ad412763019276ace7fc17a385f1
MD5 05c25de09063f004df3c908058c13a48
BLAKE2b-256 7f51be68b784ebf93dc20cdadaad8505e57fb59ea0cec621fd74add443b0a742

See more details on using hashes here.

Provenance

The following attestation bundles were made for nilalytics-0.1.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.1.0-py3-none-any.whl.

File metadata

  • Download URL: nilalytics-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 27.2 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.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a03432441a625a224e6fc384fec0eba525313b67d2f8b423f204f3ebe49240cf
MD5 272e584098a3439e2265b4c5395bde1d
BLAKE2b-256 f5fab4f94623edab50dbe70c529ccd0cdfcc58d6bed2285cc44fe2427ebb1925

See more details on using hashes here.

Provenance

The following attestation bundles were made for nilalytics-0.1.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