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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2a754e2f9ab113cc51692a0f855e5f372b49ad412763019276ace7fc17a385f1
|
|
| MD5 |
05c25de09063f004df3c908058c13a48
|
|
| BLAKE2b-256 |
7f51be68b784ebf93dc20cdadaad8505e57fb59ea0cec621fd74add443b0a742
|
Provenance
The following attestation bundles were made for nilalytics-0.1.0.tar.gz:
Publisher:
publish.yml on Angelerator/nilalytics
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nilalytics-0.1.0.tar.gz -
Subject digest:
2a754e2f9ab113cc51692a0f855e5f372b49ad412763019276ace7fc17a385f1 - Sigstore transparency entry: 2061383689
- Sigstore integration time:
-
Permalink:
Angelerator/nilalytics@64529ff06cbdd82dc5f32748a1e5a3efb46356df -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/Angelerator
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@64529ff06cbdd82dc5f32748a1e5a3efb46356df -
Trigger Event:
release
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a03432441a625a224e6fc384fec0eba525313b67d2f8b423f204f3ebe49240cf
|
|
| MD5 |
272e584098a3439e2265b4c5395bde1d
|
|
| BLAKE2b-256 |
f5fab4f94623edab50dbe70c529ccd0cdfcc58d6bed2285cc44fe2427ebb1925
|
Provenance
The following attestation bundles were made for nilalytics-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on Angelerator/nilalytics
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nilalytics-0.1.0-py3-none-any.whl -
Subject digest:
a03432441a625a224e6fc384fec0eba525313b67d2f8b423f204f3ebe49240cf - Sigstore transparency entry: 2061383976
- Sigstore integration time:
-
Permalink:
Angelerator/nilalytics@64529ff06cbdd82dc5f32748a1e5a3efb46356df -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/Angelerator
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@64529ff06cbdd82dc5f32748a1e5a3efb46356df -
Trigger Event:
release
-
Statement type: