Data analytics engine for agentic workflows
Project description
Lumilake
Lumilake is a data analytics engine for agentic workflows. It accepts workflow specs (native graph JSON, YAML, or n8n JSON), optimizes the runtime graph with HALO, and dispatches tasks through FlowMesh.
What Lumilake Provides
- Workflow parsing for native graph specs, YAML workflows, and n8n exports.
- HALO scheduling for multi-step AI and data workflows.
- A FastAPI server for job submission, status, cancellation, results, workers, and traces.
- A CLI and Python SDK for local deployment and server API access.
- Data access through direct PostgreSQL and S3-compatible storage; agent-style retrievals additionally route through lumid.data when
LUMID_DATA_URLis set. - Shared hook integration through
lumid-hooks, plus Lumilake-owned optimizer plugins.
Install
From PyPI:
pip install "lumilake[cli]"
From a source checkout:
uv sync --all-packages --all-extras --all-groups
The PyPI lumilake distribution is a code-free metapackage; install one of the extras below to get a working set. The server runtime is published as a Docker image only and is intentionally not on PyPI.
| Extra | Includes |
|---|---|
sdk |
Python SDK HTTP clients (lumilake-sdk → module lumilake) |
cli |
lumilake command line interface plus deploy lifecycle (lumilake-cli + lumilake-deploy) |
deploy |
Local Docker / FlowMesh deployment helpers (lumilake-deploy) |
hook |
Resource-kind helpers for shared hook integrations (lumilake-hook) |
all |
Everything above. |
Quick Start
The server runs as the published Docker image. lumilake deploy reads its env files from --project-dir (or the current working directory). Either point at a deployment directory with -C / --project-dir, or cd to it first.
mkdir -p ~/lumilake-deploy
lumilake deploy -C ~/lumilake-deploy init --flowmesh # ~/lumilake-deploy/.env + .env.flowmesh
$EDITOR ~/lumilake-deploy/.env # fill in DATABASE_URL / S3 / model keys
lumilake deploy -C ~/lumilake-deploy pull # fetch ghcr.io/mlsys-io/lumilake_server:<tag>
lumilake deploy -C ~/lumilake-deploy up # bring the stack up via docker compose
LUMILAKE_DEPLOY_DIR=~/lumilake-deploy is an equivalent override. The deployment directory only needs to hold your .env files (and any local state docker compose creates) — the compose file and server image are resolved from the installed lumilake-deploy package and GHCR. The server listens on http://127.0.0.1:9000 by default — open /docs for the API browser.
Note: a real workflow run also requires running PostgreSQL and S3-compatible storage; agent-style retrievals (DataRetrievalOp with type: agent) additionally require LUMID_DATA_URL. See docs/ENV.md for the env contract. If you don't have your own data plane, the repo ships a bundled Postgres + MinIO at scripts/dev/compose.data-plane.yml — see docs/E2E_DEMO.md for the full three-step demo flow (data plane → load demo data → run a workflow).
Submit and inspect a workflow. From a source checkout the example
workflow file is at examples/templates/yaml/trading-agent.yaml;
PyPI installs do not ship the templates, so pass an absolute path to a
workflow file you have locally:
# From a source checkout:
uv run lumilake login http://127.0.0.1:9000
uv run lumilake job submit examples/templates/yaml/trading-agent.yaml \
--format yaml --input 'Stock=NVDA,AAPL,MSFT' --output-prefix demo/trading-agent
# From a PyPI install (lumilake on PATH; supply your own workflow file):
lumilake login http://127.0.0.1:9000
lumilake job submit /path/to/your/workflow.yaml \
--format yaml --input 'Stock=NVDA,AAPL,MSFT' --output-prefix demo/trading-agent
lumilake job list
lumilake job watch <job_id>
See docs/E2E_DEMO.md for a full reproduction using the bundled demo
workflows and dataset.
Data Access
- SQL retrievals connect directly to
DATABASE_URL. - S3 retrievals connect directly to
S3_URL. - Agent retrievals (
DataRetrievalOpwithtype: agent) requireLUMID_DATA_URLand route through lumid.data's/agent/v1endpoint.
Job records and runtime artifacts are written under S3_ARCHIVE_PREFIX using the same S3_URL connection.
Deployment
Examples below assume you're set up with LUMILAKE_DEPLOY_DIR=~/lumilake-deploy (or pass -C ~/lumilake-deploy explicitly). Workspace-checkout users can prefix the commands with uv run; PyPI-install users invoke lumilake directly.
Generate .env from the bundled template:
lumilake deploy init
Generate both Lumilake and bundled FlowMesh env files:
lumilake deploy init --flowmesh
Common deployment commands:
lumilake deploy doctor
lumilake deploy pull # or `build` to compile from source
lumilake deploy up
lumilake deploy status
lumilake deploy logs server --tail 200
lumilake deploy restart server
lumilake deploy down
lumilake deploy clean
Use deploy down to stop services while keeping data volumes. Use deploy clean or deploy reset only when you want to remove local stack state.
Python SDK
from lumilake import LumilakeClient
with LumilakeClient(base_url="http://127.0.0.1:9000") as client:
print(client.health())
print(client.jobs.list())
Install the SDK extra for HTTP clients:
pip install "lumilake[sdk]"
Install deploy support as well if you want client.deploy.* methods:
pip install "lumilake[sdk,deploy]"
See docs/SDK.md for the SDK resource map.
Documentation
docs/ENV.md- environment variables and data-plane modes.docs/CLI.md- command groups and common CLI usage.docs/WORKFLOWS.md- workflow input formats and YAML structure.docs/OPS.md- built-in operation classes.docs/SDK.md- sync and async Python client usage.docs/API.md- server route overview and response shape.docs/ARCHITECTURE.md- module layout and runtime flow.docs/PLUGINS.md- shared hooks and Lumilake plugin model.docs/CODE_STYLE.md- coding rules for contributors and agents.
Plugins
Lumilake wires shared hook protocols from lumid-hooks for identity, permissions, resource registration, submission guards, and usage sinks. Optimizer registration remains Lumilake-specific.
A minimal in-memory plugin is available under examples/plugins/simple_plugin/.
Repository Layout
.
├── src/lumilake_server/ # server runtime — image-only, not on PyPI
├── packages/sdk/ # `lumilake-sdk` → module `lumilake` (Client, envs, log)
├── packages/cli/ # `lumilake-cli` → `lumilake_cli` (Typer entry point)
├── packages/deploy/ # `lumilake-deploy` — packaged compose + .env.example assets
├── packages/hook/ # `lumilake-hook` → `lumilake_hook` (resource-kind helpers)
├── examples/ # workflow templates and sample plugins
├── tests/ # pytest suite
├── scripts/ # CI and developer helpers
├── Dockerfile # builds ghcr.io/mlsys-io/lumilake_server
├── .env.example -> packages/deploy/.../assets/.env.example # symlink for editors
├── uv.lock
└── pyproject.toml # metapackage (`lumilake`) with [sdk]/[cli]/[deploy]/[hook]/[all] extras
Development
uv sync --group lint --group test --extra cli
uv run pre-commit install --install-hooks -t pre-commit -t prepare-commit-msg -t commit-msg
uv run pre-commit run --all-files
uv run pytest tests/ --ignore=tests/server
After changing dependencies, run:
uv lock
See CONTRIBUTING.md for PR title format, CI workflows, DCO sign-off, dependency guidance, and local testing notes.
License
Apache-2.0. See LICENSE.
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 lumilake-0.1.0.dev1.tar.gz.
File metadata
- Download URL: lumilake-0.1.0.dev1.tar.gz
- Upload date:
- Size: 31.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1602d068a46efcfa98624c338f444ea7b8a187125e4d34be267d87c371843902
|
|
| MD5 |
7f4bcee17e618e7c1f55d176a687d0a3
|
|
| BLAKE2b-256 |
5b25240371947ebaf21793a46c567d42a98fbd639ca6960d598229aa461216fb
|
File details
Details for the file lumilake-0.1.0.dev1-py3-none-any.whl.
File metadata
- Download URL: lumilake-0.1.0.dev1-py3-none-any.whl
- Upload date:
- Size: 8.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3571dd7bb8ea9cb942caef6c66d3200193c8d541d2e4de1c6201cc3ce559fac1
|
|
| MD5 |
495e9b624805ffceb43035467edb2495
|
|
| BLAKE2b-256 |
08e5563d7ab5a8910d5b3bdc613aa38a9de9470ad29ea47d7262d8e3d5ebc25c
|