Install¶
Requirements¶
- Python 3.11+
- Object storage — one of: local MinIO, AWS S3, Google Cloud Storage, Cloudflare R2, or Azure / ADLS Gen2.
- Network access on first run so DuckDB can auto‑install its extensions
(
ducklake,quack,otlp,httpfs/azure). No manual extension setup needed.
Install the package¶
=== "pip"
```bash
pip install git+https://github.com/Angelerator/nilalytics
```
=== "uv"
```bash
uv add git+https://github.com/Angelerator/nilalytics
# or, inside a clone:
uv sync
```
This installs the nilalytics command:
usage: nilalytics <command> [args]
commands:
server run the ingest + Quack catalog server
gateway run the public ingest gateway (CORS, short-lived tokens, TLS)
emit [options] send sample logs/traces/metrics (--persons for cross-device)
query [subcommand] [args] report | traces | metrics | stitch | asof | changes | snapshots | errors
maintenance [--expire] flush inlined data to Parquet + compact
Local object storage (for development)¶
The fastest way to try nilalytics is a local MinIO:
# macOS
brew install minio/stable/minio minio/stable/mc
# start MinIO + create a bucket
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
The default configuration points at exactly this MinIO (127.0.0.1:9100, bucket
nilalytics), so nothing else is needed to start. For a real cloud, see
Storage backends.
Where nilalytics stores its state¶
- Catalog + secrets live in a data directory, default
~/.nilalytics(override withNILA_DATA_DIR). This is independent of where the package is installed, sonilalyticsworks from any directory. - Event data lives in your object storage bucket.
Next: the Quickstart.