lumilake 0.1.0.dev1__tar.gz → 0.1.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {lumilake-0.1.0.dev1 → lumilake-0.1.2}/PKG-INFO +62 -14
- lumilake-0.1.0.dev1/lumilake.egg-info/PKG-INFO → lumilake-0.1.2/README.md +52 -41
- {lumilake-0.1.0.dev1 → lumilake-0.1.2}/docs/API.md +10 -0
- lumilake-0.1.2/docs/CLI.md +125 -0
- {lumilake-0.1.0.dev1 → lumilake-0.1.2}/docs/CODE_STYLE.md +1 -2
- {lumilake-0.1.0.dev1 → lumilake-0.1.2}/docs/E2E_DEMO.md +4 -5
- lumilake-0.1.2/docs/ENV.md +154 -0
- {lumilake-0.1.0.dev1 → lumilake-0.1.2}/docs/OPS.md +50 -9
- lumilake-0.1.2/docs/PLUGINS.md +175 -0
- {lumilake-0.1.0.dev1 → lumilake-0.1.2}/docs/RELEASE.md +1 -1
- lumilake-0.1.2/docs/SDK.md +155 -0
- lumilake-0.1.0.dev1/README.md → lumilake-0.1.2/lumilake.egg-info/PKG-INFO +89 -4
- lumilake-0.1.2/lumilake.egg-info/requires.txt +19 -0
- {lumilake-0.1.0.dev1 → lumilake-0.1.2}/pyproject.toml +23 -24
- lumilake-0.1.0.dev1/docs/CLI.md +0 -82
- lumilake-0.1.0.dev1/docs/ENV.md +0 -61
- lumilake-0.1.0.dev1/docs/PLUGINS.md +0 -45
- lumilake-0.1.0.dev1/docs/SDK.md +0 -59
- lumilake-0.1.0.dev1/lumilake.egg-info/requires.txt +0 -19
- {lumilake-0.1.0.dev1 → lumilake-0.1.2}/LICENSE +0 -0
- {lumilake-0.1.0.dev1 → lumilake-0.1.2}/MANIFEST.in +0 -0
- {lumilake-0.1.0.dev1 → lumilake-0.1.2}/docs/ARCHITECTURE.md +0 -0
- {lumilake-0.1.0.dev1 → lumilake-0.1.2}/docs/FIRST_RELEASE_ROADMAP.md +0 -0
- {lumilake-0.1.0.dev1 → lumilake-0.1.2}/docs/WORKFLOWS.md +0 -0
- {lumilake-0.1.0.dev1 → lumilake-0.1.2}/lumilake.egg-info/SOURCES.txt +0 -0
- {lumilake-0.1.0.dev1 → lumilake-0.1.2}/lumilake.egg-info/dependency_links.txt +0 -0
- {lumilake-0.1.0.dev1 → lumilake-0.1.2}/lumilake.egg-info/top_level.txt +0 -0
- {lumilake-0.1.0.dev1 → lumilake-0.1.2}/setup.cfg +0 -0
- {lumilake-0.1.0.dev1 → lumilake-0.1.2}/tests/test_lambda_op_closure.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: lumilake
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.2
|
|
4
4
|
Summary: Data analytics engine for agentic workflows
|
|
5
5
|
Author: Lumilake contributors
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -20,19 +20,19 @@ Requires-Python: <3.13,>=3.12
|
|
|
20
20
|
Description-Content-Type: text/markdown
|
|
21
21
|
License-File: LICENSE
|
|
22
22
|
Provides-Extra: sdk
|
|
23
|
-
Requires-Dist: lumilake-sdk==0.1.
|
|
23
|
+
Requires-Dist: lumilake-sdk==0.1.2; extra == "sdk"
|
|
24
24
|
Provides-Extra: cli
|
|
25
|
-
Requires-Dist: lumilake-cli==0.1.
|
|
26
|
-
Requires-Dist: lumilake-deploy==0.1.
|
|
25
|
+
Requires-Dist: lumilake-cli==0.1.2; extra == "cli"
|
|
26
|
+
Requires-Dist: lumilake-deploy==0.1.2; extra == "cli"
|
|
27
27
|
Provides-Extra: deploy
|
|
28
|
-
Requires-Dist: lumilake-deploy==0.1.
|
|
28
|
+
Requires-Dist: lumilake-deploy==0.1.2; extra == "deploy"
|
|
29
29
|
Provides-Extra: hook
|
|
30
|
-
Requires-Dist: lumilake-hook==0.1.
|
|
30
|
+
Requires-Dist: lumilake-hook==0.1.2; extra == "hook"
|
|
31
31
|
Provides-Extra: all
|
|
32
|
-
Requires-Dist: lumilake-sdk==0.1.
|
|
33
|
-
Requires-Dist: lumilake-cli==0.1.
|
|
34
|
-
Requires-Dist: lumilake-deploy==0.1.
|
|
35
|
-
Requires-Dist: lumilake-hook==0.1.
|
|
32
|
+
Requires-Dist: lumilake-sdk==0.1.2; extra == "all"
|
|
33
|
+
Requires-Dist: lumilake-cli==0.1.2; extra == "all"
|
|
34
|
+
Requires-Dist: lumilake-deploy==0.1.2; extra == "all"
|
|
35
|
+
Requires-Dist: lumilake-hook==0.1.2; extra == "all"
|
|
36
36
|
Dynamic: license-file
|
|
37
37
|
|
|
38
38
|
# Lumilake
|
|
@@ -87,12 +87,50 @@ lumilake deploy -C ~/lumilake-deploy init --flowmesh # ~/lumilake-deploy/.env
|
|
|
87
87
|
$EDITOR ~/lumilake-deploy/.env # fill in DATABASE_URL / S3 / model keys
|
|
88
88
|
lumilake deploy -C ~/lumilake-deploy pull # fetch ghcr.io/mlsys-io/lumilake_server:<tag>
|
|
89
89
|
lumilake deploy -C ~/lumilake-deploy up # bring the stack up via docker compose
|
|
90
|
+
lumilake deploy -C ~/lumilake-deploy purge dev --dry-run # preview cleanup of one local image tag
|
|
90
91
|
```
|
|
91
92
|
|
|
92
93
|
`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.
|
|
93
94
|
|
|
94
95
|
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).
|
|
95
96
|
|
|
97
|
+
### Hello world
|
|
98
|
+
|
|
99
|
+
The repo ships a `hello-world.yaml` template — `FormatOp` →
|
|
100
|
+
`LambdaOp` → `LLMChatOp` — that is the smallest copy-paste starting
|
|
101
|
+
point for a Lumilake YAML workflow. Submit it once the stack is up and
|
|
102
|
+
`S3_URL` points at reachable S3-compatible storage. From a source
|
|
103
|
+
checkout, start the bundled data plane first:
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
docker compose -f scripts/dev/compose.data-plane.yml up -d
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
PyPI installs do not include `scripts/dev/`; use your own reachable S3
|
|
110
|
+
endpoint, or download the repo's data-plane compose file alongside the
|
|
111
|
+
workflow template before running the local-only example.
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
# From a source checkout:
|
|
115
|
+
uv run lumilake job submit examples/templates/yaml/hello-world.yaml \
|
|
116
|
+
--format yaml --input 'Name=world' --output-prefix demo/hello-world
|
|
117
|
+
|
|
118
|
+
# From a PyPI install (download the template alongside lumilake):
|
|
119
|
+
curl -O https://raw.githubusercontent.com/mlsys-io/lumilake_OSS/main/examples/templates/yaml/hello-world.yaml
|
|
120
|
+
lumilake job submit hello-world.yaml \
|
|
121
|
+
--format yaml --input 'Name=world' --output-prefix demo/hello-world
|
|
122
|
+
lumilake job watch <job_id>
|
|
123
|
+
lumilake job result <job_id>
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
The template uses `Qwen/Qwen3-8B`, which is the bundled text-demo model.
|
|
127
|
+
You do not need to pre-populate or inspect `cached_models` before the
|
|
128
|
+
first run; it can be empty until after a worker serves a job. Only edit
|
|
129
|
+
`config.model` if your FlowMesh stack is configured for a different
|
|
130
|
+
model or the job fails with a missing-model / worker-placement error.
|
|
131
|
+
|
|
132
|
+
### Real workflows
|
|
133
|
+
|
|
96
134
|
Submit and inspect a workflow. From a source checkout the example
|
|
97
135
|
workflow file is at `examples/templates/yaml/trading-agent.yaml`;
|
|
98
136
|
PyPI installs do not ship the templates, so pass an absolute path to a
|
|
@@ -100,12 +138,10 @@ workflow file you have locally:
|
|
|
100
138
|
|
|
101
139
|
```bash
|
|
102
140
|
# From a source checkout:
|
|
103
|
-
uv run lumilake login http://127.0.0.1:9000
|
|
104
141
|
uv run lumilake job submit examples/templates/yaml/trading-agent.yaml \
|
|
105
142
|
--format yaml --input 'Stock=NVDA,AAPL,MSFT' --output-prefix demo/trading-agent
|
|
106
143
|
|
|
107
144
|
# From a PyPI install (lumilake on PATH; supply your own workflow file):
|
|
108
|
-
lumilake login http://127.0.0.1:9000
|
|
109
145
|
lumilake job submit /path/to/your/workflow.yaml \
|
|
110
146
|
--format yaml --input 'Stock=NVDA,AAPL,MSFT' --output-prefix demo/trading-agent
|
|
111
147
|
|
|
@@ -113,6 +149,10 @@ lumilake job list
|
|
|
113
149
|
lumilake job watch <job_id>
|
|
114
150
|
```
|
|
115
151
|
|
|
152
|
+
`lumilake deploy up` writes `~/.lumilake/config.toml` so subsequent
|
|
153
|
+
calls find the local server automatically. For remote / hosted servers,
|
|
154
|
+
set `LUMILAKE_BASE_URL` instead.
|
|
155
|
+
|
|
116
156
|
See `docs/E2E_DEMO.md` for a full reproduction using the bundled demo
|
|
117
157
|
workflows and dataset.
|
|
118
158
|
|
|
@@ -140,6 +180,14 @@ Generate both Lumilake and bundled FlowMesh env files:
|
|
|
140
180
|
lumilake deploy init --flowmesh
|
|
141
181
|
```
|
|
142
182
|
|
|
183
|
+
If another FlowMesh stack is already running on the same host, check
|
|
184
|
+
ports before `deploy up`. Common co-tenant FlowMesh defaults are HTTP
|
|
185
|
+
`8000`, gRPC `50051`, Redis control `6379`, and Redis telemetry `6380`.
|
|
186
|
+
The bundled stack reads `SERVER_HTTP_PORT`, `SERVER_GRPC_PORT`,
|
|
187
|
+
`REDIS_CONTROL_PORT`, and `REDIS_TELEMETRY_PORT` from `.env.flowmesh`;
|
|
188
|
+
change them to free ports and keep `LUMILAKE_RUNTIME_ORCHESTRATOR_URL`
|
|
189
|
+
in `.env` aligned with `SERVER_HTTP_PORT`.
|
|
190
|
+
|
|
143
191
|
Common deployment commands:
|
|
144
192
|
|
|
145
193
|
```bash
|
|
@@ -153,7 +201,7 @@ lumilake deploy down
|
|
|
153
201
|
lumilake deploy clean
|
|
154
202
|
```
|
|
155
203
|
|
|
156
|
-
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.
|
|
204
|
+
Use `deploy down` to stop services while keeping data volumes (non-destructive). Use `deploy clean` or `deploy reset` only when you want to remove local stack state; both delete every Lumilake-managed volume, and `reset` prompts for confirmation by default (`--yes` skips the prompt).
|
|
157
205
|
|
|
158
206
|
## Python SDK
|
|
159
207
|
|
|
@@ -221,7 +269,7 @@ A minimal in-memory plugin is available under `examples/plugins/simple_plugin/`.
|
|
|
221
269
|
uv sync --group lint --group test --extra cli
|
|
222
270
|
uv run pre-commit install --install-hooks -t pre-commit -t prepare-commit-msg -t commit-msg
|
|
223
271
|
uv run pre-commit run --all-files
|
|
224
|
-
uv run pytest tests/
|
|
272
|
+
uv run pytest tests/
|
|
225
273
|
```
|
|
226
274
|
|
|
227
275
|
After changing dependencies, run:
|
|
@@ -1,40 +1,3 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: lumilake
|
|
3
|
-
Version: 0.1.0.dev1
|
|
4
|
-
Summary: Data analytics engine for agentic workflows
|
|
5
|
-
Author: Lumilake contributors
|
|
6
|
-
License-Expression: Apache-2.0
|
|
7
|
-
Project-URL: Homepage, https://github.com/mlsys-io/lumilake_OSS
|
|
8
|
-
Project-URL: Repository, https://github.com/mlsys-io/lumilake_OSS
|
|
9
|
-
Project-URL: Issues, https://github.com/mlsys-io/lumilake_OSS/issues
|
|
10
|
-
Keywords: agentic-workflows,data-analytics,lakehouse,workflow-orchestration
|
|
11
|
-
Classifier: Development Status :: 3 - Alpha
|
|
12
|
-
Classifier: Environment :: Console
|
|
13
|
-
Classifier: Framework :: FastAPI
|
|
14
|
-
Classifier: Intended Audience :: Developers
|
|
15
|
-
Classifier: Intended Audience :: Science/Research
|
|
16
|
-
Classifier: Programming Language :: Python :: 3
|
|
17
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
-
Classifier: Typing :: Typed
|
|
19
|
-
Requires-Python: <3.13,>=3.12
|
|
20
|
-
Description-Content-Type: text/markdown
|
|
21
|
-
License-File: LICENSE
|
|
22
|
-
Provides-Extra: sdk
|
|
23
|
-
Requires-Dist: lumilake-sdk==0.1.0.dev1; extra == "sdk"
|
|
24
|
-
Provides-Extra: cli
|
|
25
|
-
Requires-Dist: lumilake-cli==0.1.0.dev1; extra == "cli"
|
|
26
|
-
Requires-Dist: lumilake-deploy==0.1.0.dev1; extra == "cli"
|
|
27
|
-
Provides-Extra: deploy
|
|
28
|
-
Requires-Dist: lumilake-deploy==0.1.0.dev1; extra == "deploy"
|
|
29
|
-
Provides-Extra: hook
|
|
30
|
-
Requires-Dist: lumilake-hook==0.1.0.dev1; extra == "hook"
|
|
31
|
-
Provides-Extra: all
|
|
32
|
-
Requires-Dist: lumilake-sdk==0.1.0.dev1; extra == "all"
|
|
33
|
-
Requires-Dist: lumilake-cli==0.1.0.dev1; extra == "all"
|
|
34
|
-
Requires-Dist: lumilake-deploy==0.1.0.dev1; extra == "all"
|
|
35
|
-
Requires-Dist: lumilake-hook==0.1.0.dev1; extra == "all"
|
|
36
|
-
Dynamic: license-file
|
|
37
|
-
|
|
38
1
|
# Lumilake
|
|
39
2
|
|
|
40
3
|
[](https://www.apache.org/licenses/LICENSE-2.0)
|
|
@@ -87,12 +50,50 @@ lumilake deploy -C ~/lumilake-deploy init --flowmesh # ~/lumilake-deploy/.env
|
|
|
87
50
|
$EDITOR ~/lumilake-deploy/.env # fill in DATABASE_URL / S3 / model keys
|
|
88
51
|
lumilake deploy -C ~/lumilake-deploy pull # fetch ghcr.io/mlsys-io/lumilake_server:<tag>
|
|
89
52
|
lumilake deploy -C ~/lumilake-deploy up # bring the stack up via docker compose
|
|
53
|
+
lumilake deploy -C ~/lumilake-deploy purge dev --dry-run # preview cleanup of one local image tag
|
|
90
54
|
```
|
|
91
55
|
|
|
92
56
|
`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.
|
|
93
57
|
|
|
94
58
|
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).
|
|
95
59
|
|
|
60
|
+
### Hello world
|
|
61
|
+
|
|
62
|
+
The repo ships a `hello-world.yaml` template — `FormatOp` →
|
|
63
|
+
`LambdaOp` → `LLMChatOp` — that is the smallest copy-paste starting
|
|
64
|
+
point for a Lumilake YAML workflow. Submit it once the stack is up and
|
|
65
|
+
`S3_URL` points at reachable S3-compatible storage. From a source
|
|
66
|
+
checkout, start the bundled data plane first:
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
docker compose -f scripts/dev/compose.data-plane.yml up -d
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
PyPI installs do not include `scripts/dev/`; use your own reachable S3
|
|
73
|
+
endpoint, or download the repo's data-plane compose file alongside the
|
|
74
|
+
workflow template before running the local-only example.
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
# From a source checkout:
|
|
78
|
+
uv run lumilake job submit examples/templates/yaml/hello-world.yaml \
|
|
79
|
+
--format yaml --input 'Name=world' --output-prefix demo/hello-world
|
|
80
|
+
|
|
81
|
+
# From a PyPI install (download the template alongside lumilake):
|
|
82
|
+
curl -O https://raw.githubusercontent.com/mlsys-io/lumilake_OSS/main/examples/templates/yaml/hello-world.yaml
|
|
83
|
+
lumilake job submit hello-world.yaml \
|
|
84
|
+
--format yaml --input 'Name=world' --output-prefix demo/hello-world
|
|
85
|
+
lumilake job watch <job_id>
|
|
86
|
+
lumilake job result <job_id>
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
The template uses `Qwen/Qwen3-8B`, which is the bundled text-demo model.
|
|
90
|
+
You do not need to pre-populate or inspect `cached_models` before the
|
|
91
|
+
first run; it can be empty until after a worker serves a job. Only edit
|
|
92
|
+
`config.model` if your FlowMesh stack is configured for a different
|
|
93
|
+
model or the job fails with a missing-model / worker-placement error.
|
|
94
|
+
|
|
95
|
+
### Real workflows
|
|
96
|
+
|
|
96
97
|
Submit and inspect a workflow. From a source checkout the example
|
|
97
98
|
workflow file is at `examples/templates/yaml/trading-agent.yaml`;
|
|
98
99
|
PyPI installs do not ship the templates, so pass an absolute path to a
|
|
@@ -100,12 +101,10 @@ workflow file you have locally:
|
|
|
100
101
|
|
|
101
102
|
```bash
|
|
102
103
|
# From a source checkout:
|
|
103
|
-
uv run lumilake login http://127.0.0.1:9000
|
|
104
104
|
uv run lumilake job submit examples/templates/yaml/trading-agent.yaml \
|
|
105
105
|
--format yaml --input 'Stock=NVDA,AAPL,MSFT' --output-prefix demo/trading-agent
|
|
106
106
|
|
|
107
107
|
# From a PyPI install (lumilake on PATH; supply your own workflow file):
|
|
108
|
-
lumilake login http://127.0.0.1:9000
|
|
109
108
|
lumilake job submit /path/to/your/workflow.yaml \
|
|
110
109
|
--format yaml --input 'Stock=NVDA,AAPL,MSFT' --output-prefix demo/trading-agent
|
|
111
110
|
|
|
@@ -113,6 +112,10 @@ lumilake job list
|
|
|
113
112
|
lumilake job watch <job_id>
|
|
114
113
|
```
|
|
115
114
|
|
|
115
|
+
`lumilake deploy up` writes `~/.lumilake/config.toml` so subsequent
|
|
116
|
+
calls find the local server automatically. For remote / hosted servers,
|
|
117
|
+
set `LUMILAKE_BASE_URL` instead.
|
|
118
|
+
|
|
116
119
|
See `docs/E2E_DEMO.md` for a full reproduction using the bundled demo
|
|
117
120
|
workflows and dataset.
|
|
118
121
|
|
|
@@ -140,6 +143,14 @@ Generate both Lumilake and bundled FlowMesh env files:
|
|
|
140
143
|
lumilake deploy init --flowmesh
|
|
141
144
|
```
|
|
142
145
|
|
|
146
|
+
If another FlowMesh stack is already running on the same host, check
|
|
147
|
+
ports before `deploy up`. Common co-tenant FlowMesh defaults are HTTP
|
|
148
|
+
`8000`, gRPC `50051`, Redis control `6379`, and Redis telemetry `6380`.
|
|
149
|
+
The bundled stack reads `SERVER_HTTP_PORT`, `SERVER_GRPC_PORT`,
|
|
150
|
+
`REDIS_CONTROL_PORT`, and `REDIS_TELEMETRY_PORT` from `.env.flowmesh`;
|
|
151
|
+
change them to free ports and keep `LUMILAKE_RUNTIME_ORCHESTRATOR_URL`
|
|
152
|
+
in `.env` aligned with `SERVER_HTTP_PORT`.
|
|
153
|
+
|
|
143
154
|
Common deployment commands:
|
|
144
155
|
|
|
145
156
|
```bash
|
|
@@ -153,7 +164,7 @@ lumilake deploy down
|
|
|
153
164
|
lumilake deploy clean
|
|
154
165
|
```
|
|
155
166
|
|
|
156
|
-
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.
|
|
167
|
+
Use `deploy down` to stop services while keeping data volumes (non-destructive). Use `deploy clean` or `deploy reset` only when you want to remove local stack state; both delete every Lumilake-managed volume, and `reset` prompts for confirmation by default (`--yes` skips the prompt).
|
|
157
168
|
|
|
158
169
|
## Python SDK
|
|
159
170
|
|
|
@@ -221,7 +232,7 @@ A minimal in-memory plugin is available under `examples/plugins/simple_plugin/`.
|
|
|
221
232
|
uv sync --group lint --group test --extra cli
|
|
222
233
|
uv run pre-commit install --install-hooks -t pre-commit -t prepare-commit-msg -t commit-msg
|
|
223
234
|
uv run pre-commit run --all-files
|
|
224
|
-
uv run pytest tests/
|
|
235
|
+
uv run pytest tests/
|
|
225
236
|
```
|
|
226
237
|
|
|
227
238
|
After changing dependencies, run:
|
|
@@ -49,3 +49,13 @@ Most API responses use an envelope:
|
|
|
49
49
|
```
|
|
50
50
|
|
|
51
51
|
Errors use normal HTTP status codes with a JSON error body. The Python SDK unwraps successful envelopes and raises typed exceptions for HTTP failures.
|
|
52
|
+
|
|
53
|
+
### Error Status Codes
|
|
54
|
+
|
|
55
|
+
- `400 Bad Request` — malformed request syntax (the JSON or YAML body could not be parsed).
|
|
56
|
+
- `404 Not Found` — the resource is missing.
|
|
57
|
+
- `409 Conflict` — the resource is in a state that cannot satisfy the request; the cancel endpoint includes the job's terminal `status` (`completed` / `failed` / `cancelled`) in `detail`.
|
|
58
|
+
- `422 Unprocessable Entity` — the payload was syntactically valid but failed validation (schema, header value, batch-size, input shape, unresolved location, duplicate graph name, graph compilation, ...).
|
|
59
|
+
- `5xx` — server-side faults (DB unavailable, runtime backend error).
|
|
60
|
+
|
|
61
|
+
The `X-Request-ID` response header echoes the request trace id (either the inbound `X-Request-ID` header or a freshly minted `req-<uid>` token); the same id is attached to every server log record produced under that request.
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# CLI Reference
|
|
2
|
+
|
|
3
|
+
Install the CLI extra or use `uv run` from a source checkout:
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
pip install "lumilake[cli]" # full CLI + deploy lifecycle
|
|
7
|
+
lumilake --help
|
|
8
|
+
```
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
uv run lumilake --help
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
`pip install lumilake-cli` (no extra) installs a thin CLI that omits the
|
|
15
|
+
deploy lifecycle — useful for users that only need
|
|
16
|
+
`job` / `worker` / `trace` against a remote server. Running
|
|
17
|
+
`lumilake deploy` from a thin install prints an install hint pointing
|
|
18
|
+
back at `lumilake[cli]` or `lumilake-cli[deploy]`.
|
|
19
|
+
|
|
20
|
+
## Configuration
|
|
21
|
+
|
|
22
|
+
The CLI resolves the target server URL in this order:
|
|
23
|
+
|
|
24
|
+
1. `LUMILAKE_BASE_URL` environment variable.
|
|
25
|
+
2. `~/.lumilake/config.toml` (written by `lumilake deploy up`).
|
|
26
|
+
3. `http://127.0.0.1:9000` (the local deploy default).
|
|
27
|
+
|
|
28
|
+
| Command | Purpose |
|
|
29
|
+
|---------|---------|
|
|
30
|
+
| `lumilake config` | Show the resolved base URL and where it came from. |
|
|
31
|
+
| `lumilake info` | Query server health metadata. |
|
|
32
|
+
| `lumilake health` | Query server health. |
|
|
33
|
+
|
|
34
|
+
`lumilake deploy up` writes the resolved local server URL to `~/.lumilake/config.toml` after the stack is healthy (preserving any saved `api_key`), so subsequent CLI and SDK calls find it automatically. Remote / hosted users should set `LUMILAKE_BASE_URL` instead.
|
|
35
|
+
|
|
36
|
+
### Authentication
|
|
37
|
+
|
|
38
|
+
When the server runs an `IdentityProvider` plugin (e.g. `lumid_lumilake_plugin`), the CLI presents a bearer token via `Authorization: Bearer <api_key>`. Three commands manage it:
|
|
39
|
+
|
|
40
|
+
| Command | Purpose |
|
|
41
|
+
|---------|---------|
|
|
42
|
+
| `lumilake init <url> --api-key <key> [--config <path>] [--force]` | Save `base_url` + `api_key` to `~/.lumilake/config.toml`. Confirms overwrite unless `--force`. |
|
|
43
|
+
| `lumilake deinit [--config <path>]` | Delete the config file. |
|
|
44
|
+
| `lumilake config [--source auto\|file\|env] [--show-api-key]` | Show the resolved config. `api_key` is redacted (first 4 + last 4) unless `--show-api-key`. |
|
|
45
|
+
|
|
46
|
+
Resolution order matches the SDK: explicit args > `LUMILAKE_BASE_URL` / `LUMILAKE_API_KEY` env > `~/.lumilake/config.toml` > local defaults. The CLI sends no `Authorization` header when `api_key` resolves to nothing — fine for local-mode deploys, rejected by deploys running with `LUMILAKE_REQUIRE_IDENTITY_PROVIDER=1`.
|
|
47
|
+
|
|
48
|
+
## Deploy
|
|
49
|
+
|
|
50
|
+
Every `lumilake deploy` command reads `.env` (and optionally `.env.flowmesh`) from `--project-dir` (`-C <path>`) or, when not given, the current working directory. `LUMILAKE_DEPLOY_DIR` is an equivalent override.
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
mkdir -p ~/lumilake-deploy
|
|
54
|
+
lumilake deploy -C ~/lumilake-deploy init # writes ~/lumilake-deploy/.env
|
|
55
|
+
# or:
|
|
56
|
+
LUMILAKE_DEPLOY_DIR=~/lumilake-deploy lumilake deploy init
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
`init` previews the file (or a unified diff against an existing one) before asking for confirmation; pass `--force` to skip the preview and prompt.
|
|
60
|
+
|
|
61
|
+
The compose file and image are resolved from the installed `lumilake-deploy` package and GHCR; the deployment directory only needs to hold your `.env` files (and any local state docker compose creates).
|
|
62
|
+
|
|
63
|
+
If another FlowMesh stack is already running on the host, resolve port
|
|
64
|
+
collisions before `deploy up`. Common co-tenant defaults are FlowMesh
|
|
65
|
+
HTTP `8000`, gRPC `50051`, Redis control `6379`, and Redis telemetry
|
|
66
|
+
`6380`; the bundled stack reads the override keys documented in
|
|
67
|
+
`docs/ENV.md` from `.env.flowmesh`.
|
|
68
|
+
|
|
69
|
+
| Command | Purpose |
|
|
70
|
+
|---------|---------|
|
|
71
|
+
| `lumilake deploy init [--flowmesh] [--force]` | Create `.env` (preview + confirm); optionally also `.env.flowmesh`. |
|
|
72
|
+
| `lumilake deploy doctor [--flowmesh]` | Validate deployment env files. |
|
|
73
|
+
| `lumilake deploy build` | Build the Lumilake server Docker image from source. |
|
|
74
|
+
| `lumilake deploy pull` | Pull the published server image from the registry (`$LUMILAKE_REGISTRY`). |
|
|
75
|
+
| `lumilake deploy up` | Start the local stack and persist `base_url` to `~/.lumilake/config.toml` (image must already be present — run `pull` or `build` first). |
|
|
76
|
+
| `lumilake deploy down [--wipe-archive]` | Stop the stack but keep data volumes. Non-destructive. |
|
|
77
|
+
| `lumilake deploy clean` | Stop the stack and delete volumes. Destructive. |
|
|
78
|
+
| `lumilake deploy purge <image_tag> [--dry-run] [--force]` | Remove one local Lumilake server image tag for the configured registry. |
|
|
79
|
+
| `lumilake deploy reset [--yes]` | Wipe every volume, then start the stack again. Destructive. |
|
|
80
|
+
| `lumilake deploy status` | Show known stack container state. |
|
|
81
|
+
| `lumilake deploy restart [service]` | Restart one service or the full stack. |
|
|
82
|
+
| `lumilake deploy logs [service]` | Stream or tail service logs. |
|
|
83
|
+
| `lumilake deploy update-flowmesh` | Re-lock and install the latest FlowMesh packages. |
|
|
84
|
+
|
|
85
|
+
### `deploy down` vs `deploy reset`
|
|
86
|
+
|
|
87
|
+
| Command | Stops services | Removes data volumes |
|
|
88
|
+
|---------|----------------|----------------------|
|
|
89
|
+
| `lumilake deploy down` | yes | no — archive (job records, run artifacts), compute Postgres, and MinIO corpus data survive, so `deploy up` resumes against the same state. `--wipe-archive` additionally wipes compute Postgres and FlowMesh runtime-state volumes while preserving MinIO corpus data. |
|
|
90
|
+
| `lumilake deploy clean` | yes | yes (every Lumilake-managed volume) |
|
|
91
|
+
| `lumilake deploy reset` | yes | yes (every Lumilake-managed volume), then re-runs `deploy up`. Prompts for confirmation; pass `--yes` to skip the prompt in scripts. |
|
|
92
|
+
|
|
93
|
+
Use `deploy down` between sessions. Reach for `clean` / `reset` only when you intentionally want to drop the local stack state.
|
|
94
|
+
Use `deploy purge <image_tag> --dry-run` to preview image cleanup; it removes
|
|
95
|
+
local server image tags only, not containers or volumes.
|
|
96
|
+
|
|
97
|
+
## Jobs
|
|
98
|
+
|
|
99
|
+
| Command | Purpose |
|
|
100
|
+
|---------|---------|
|
|
101
|
+
| `lumilake job submit <workflow>` | Submit a workflow spec. |
|
|
102
|
+
| `lumilake job preview <workflow>` | Compile and schedule a workflow without dispatching runtime work. |
|
|
103
|
+
| `lumilake job list` | List jobs. |
|
|
104
|
+
| `lumilake job info <job_id>` | Show one job. |
|
|
105
|
+
| `lumilake job progress <job_id>` | Show detailed progress. |
|
|
106
|
+
| `lumilake job result <job_id>` | Show the final result. |
|
|
107
|
+
| `lumilake job inputs <job_id>` | Show resolved job inputs. |
|
|
108
|
+
| `lumilake job watch <job_id>` | Watch status until completion or failure. |
|
|
109
|
+
| `lumilake job cancel <job_id>` | Cancel a job. |
|
|
110
|
+
| `lumilake job artifact <job_id> --path <path> --output <file>` | Download a stored job artifact. |
|
|
111
|
+
|
|
112
|
+
Run `uv run lumilake job submit --help` for format, input, and output flags.
|
|
113
|
+
|
|
114
|
+
## Workers and Traces
|
|
115
|
+
|
|
116
|
+
| Command | Purpose |
|
|
117
|
+
|---------|---------|
|
|
118
|
+
| `lumilake worker list` | List runtime workers. |
|
|
119
|
+
| `lumilake worker get <worker_id>` | Show one worker. |
|
|
120
|
+
| `lumilake trace list` | List execution traces. |
|
|
121
|
+
| `lumilake trace get <exec_id>` | Show a trace summary, JSON payload, or Mermaid graph. |
|
|
122
|
+
|
|
123
|
+
## `--json` flag
|
|
124
|
+
|
|
125
|
+
Most query commands (`lumilake job list/info/progress/result/inputs`, `lumilake worker list/get`, `lumilake trace list`) emit the server's JSON envelope by default, so scripts can parse them directly. `lumilake trace get` defaults to a human-readable summary table; pass `--json` (a shortcut for `--format json`) for parse-friendly output.
|
|
@@ -53,8 +53,7 @@ This guide collects rules agents and contributors should apply before editing so
|
|
|
53
53
|
|
|
54
54
|
## Tests
|
|
55
55
|
|
|
56
|
-
- Default unit validation is `uv run pytest tests
|
|
57
|
-
- `tests/server` exercises live-server behavior and is reserved for pre-release validation.
|
|
56
|
+
- Default unit validation is `uv run pytest tests/`. CI also collects coverage via `pytest-cov` against the SDK, CLI, deploy, hook, and server packages.
|
|
58
57
|
- When changing runtime behavior, add or update a focused test in the same PR.
|
|
59
58
|
- Do not ignore failing checks. A red test on `main` is a CI gap to close, not a reason to skip validation.
|
|
60
59
|
|
|
@@ -98,9 +98,9 @@ docker compose -f scripts/dev/compose.data-plane.yml down -v
|
|
|
98
98
|
```
|
|
99
99
|
|
|
100
100
|
**Skip this step entirely** if you have your own Postgres and S3 — just
|
|
101
|
-
set `DATABASE_URL
|
|
102
|
-
|
|
103
|
-
|
|
101
|
+
set `DATABASE_URL` and `S3_URL` in your `.env` to your own endpoints.
|
|
102
|
+
Nothing in step 2 or 3 reads the bundled defaults if you've overridden
|
|
103
|
+
them.
|
|
104
104
|
|
|
105
105
|
---
|
|
106
106
|
|
|
@@ -205,8 +205,7 @@ The shipped `.env.example` is **pre-pointed at step 1's data plane**
|
|
|
205
205
|
- Set a model provider key (`OPENAI_API_KEY`, etc.) — only if you
|
|
206
206
|
author workflows that call hosted providers; the bundled demos run
|
|
207
207
|
on local open-weight models.
|
|
208
|
-
- Point at your own Postgres / S3 (override `DATABASE_URL`, `S3_URL
|
|
209
|
-
`S3_USER_DATA_PREFIX`).
|
|
208
|
+
- Point at your own Postgres / S3 (override `DATABASE_URL`, `S3_URL`).
|
|
210
209
|
- Enable agent retrievals (`LUMID_DATA_URL=http://127.0.0.1:9102`).
|
|
211
210
|
- Set `LUMILAKE_GPU_DEVICES` to one or more free GPU indices on your
|
|
212
211
|
host (default is empty — no GPU workers). On a shared host, pick an
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
# Environment Reference
|
|
2
|
+
|
|
3
|
+
Lumilake reads configuration from `.env` for local deployment and from process environment variables for direct server runs. Generate the template with:
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
lumilake deploy -C <deploy-dir> init
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
`-C / --project-dir` (or `LUMILAKE_DEPLOY_DIR`) selects the directory the env files are written to and later read from. Workspace-checkout users may prefix every command with `uv run`; from a PyPI install (`pip install 'lumilake[cli]'`) invoke `lumilake` directly.
|
|
10
|
+
|
|
11
|
+
To also generate a bundled FlowMesh stack env file:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
lumilake deploy -C <deploy-dir> init --flowmesh
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Run `lumilake deploy -C <deploy-dir> doctor` after editing `.env`.
|
|
18
|
+
|
|
19
|
+
## Required Keys
|
|
20
|
+
|
|
21
|
+
| Key | Purpose |
|
|
22
|
+
|-----|---------|
|
|
23
|
+
| `LUMILAKE_SERVER_HOST` | Host the FastAPI server binds to. |
|
|
24
|
+
| `LUMILAKE_SERVER_PORT` | Port the FastAPI server binds to. |
|
|
25
|
+
| `LUMILAKE_RUNTIME_ORCHESTRATOR_URL` | FlowMesh server URL used for workflow dispatch. |
|
|
26
|
+
| `S3_ARCHIVE_PREFIX` | `bucket/prefix` where job records and runtime artifacts are archived. |
|
|
27
|
+
| `LUMILAKE_IMAGE_TAG` | Docker image tag used by local deployment. Defaults to `dev` (the rolling main-built image). Pin to a `vX.Y.Z` semver tag for production. |
|
|
28
|
+
| `LUMILAKE_REGISTRY` | Container registry the deploy CLI pulls the server image from. Defaults to `ghcr.io/mlsys-io`. **Trust-bearing**: setting this points `lumilake deploy pull` at a different host, so only override it to a registry you control. |
|
|
29
|
+
|
|
30
|
+
Compute data plane (required for every direct SQL/S3 op):
|
|
31
|
+
|
|
32
|
+
| Key | Purpose |
|
|
33
|
+
|-----|---------|
|
|
34
|
+
| `DATABASE_URL` | PostgreSQL connection string used by every SQL `DataRetrievalOp`. |
|
|
35
|
+
| `S3_URL` | S3-compatible endpoint and credentials used by every S3 `DataRetrievalOp` and the archive (`S3_ARCHIVE_PREFIX`). Its path (`bucket/prefix`) is also the scan root for data-profile listing. |
|
|
36
|
+
| `S3_CERT_FILE` | Path to an S3 TLS cert bundle. Optional; the bundled compose mounts the file when set. |
|
|
37
|
+
|
|
38
|
+
## Lumid.data routing
|
|
39
|
+
|
|
40
|
+
Only `DataRetrievalOp` with `type: agent` routes through lumid.data — SQL and S3 retrievals always go direct against `DATABASE_URL` / `S3_URL` regardless of `LUMID_DATA_URL`.
|
|
41
|
+
|
|
42
|
+
Agent-retrieval keys:
|
|
43
|
+
|
|
44
|
+
| Key | Purpose |
|
|
45
|
+
|-----|---------|
|
|
46
|
+
| `LUMID_DATA_URL` | Base URL for lumid.data's `/agent/v1` endpoint. Required when a workflow contains agent retrievals. |
|
|
47
|
+
| `LUMID_DATA_TOKEN` | Bearer token sent to lumid.data. |
|
|
48
|
+
| `LUMID_DATA_TIMEOUT_SECONDS` | HTTP timeout for lumid.data calls. Defaults to `30`. |
|
|
49
|
+
|
|
50
|
+
## Server and Logging
|
|
51
|
+
|
|
52
|
+
| Key | Purpose |
|
|
53
|
+
|-----|---------|
|
|
54
|
+
| `LUMILAKE_LOG_LEVEL` | Server log level. Defaults to `INFO`. |
|
|
55
|
+
| `LUMILAKE_SKIP_DOTENV_CHECK` | Set to `1` when the server's env is injected directly (Docker) so startup does not require a `.env` file. |
|
|
56
|
+
| `LUMILAKE_REQUIRE_IDENTITY_PROVIDER` | When truthy, rejects requests with 503 unless at least one `IdentityProvider` plugin is registered. Recommended for cloud deploys; leave unset locally. |
|
|
57
|
+
| `LUMILAKE_RUNTIME_TOKEN` | Scheduler-internal credential for FlowMesh control-plane reads (worker enumeration, profile fetches). Never used to authorize HTTP request handlers. Leave empty for local; in cloud, set to a token whose FlowMesh principal can read worker metadata. Required when `LUMILAKE_REQUIRE_IDENTITY_PROVIDER` is set. |
|
|
58
|
+
| `LUMILAKE_RECOVER_IN_FLIGHT_JOBS` | Whether server startup marks pending/running jobs as failed. Default `1` (recommended for single-instance deploys). Set to `0` in HA / multi-instance deploys so a starting standby doesn't clobber jobs the active instance is still running. |
|
|
59
|
+
| `LUMILAKE_RUNTIME_MANAGER_TYPE` | Runtime dispatch backend. `default` or `flowmesh`. |
|
|
60
|
+
| `LUMILAKE_JOB_MANAGER_TYPE` | Job manager implementation. Currently only `priority`. |
|
|
61
|
+
| `LUMILAKE_HTTP_TIMEOUT_SECONDS` | Outbound HTTP timeout for server-side calls. Defaults to `300`. |
|
|
62
|
+
|
|
63
|
+
## Scheduler and Runtime Tuning
|
|
64
|
+
|
|
65
|
+
| Key | Purpose |
|
|
66
|
+
|-----|---------|
|
|
67
|
+
| `LUMILAKE_OPTIMIZER_TYPE` | Optimizer implementation. Defaults to `halo`. |
|
|
68
|
+
| `LUMILAKE_OPTIMIZER_BATCH_SIZE` | Maximum batch size used by the optimizer loop. |
|
|
69
|
+
| `LUMILAKE_BATCH_ACCUMULATION_SECONDS` | Wait window before forming the first optimization batch. |
|
|
70
|
+
| `LUMILAKE_STARVATION_LIMIT` | Starvation threshold; `0` means immediate override. |
|
|
71
|
+
| `LUMILAKE_OPTIMIZER_SUBPROCESS_TIMEOUT_SECONDS` | Timeout for optimizer subprocess execution. |
|
|
72
|
+
| `LUMILAKE_QUEUE_QUANTUM_HIGH` | High-priority queue quantum. Defaults to `20`. |
|
|
73
|
+
| `LUMILAKE_QUEUE_QUANTUM_MEDIUM` | Medium-priority queue quantum. Defaults to `10`. |
|
|
74
|
+
| `LUMILAKE_QUEUE_QUANTUM_LOW` | Low-priority queue quantum. Defaults to `5`. |
|
|
75
|
+
| `LUMILAKE_POLL_TIMEOUT_SECONDS` | Overall timeout for runtime polling. Defaults to `inf`. |
|
|
76
|
+
| `LUMILAKE_POLL_INTERVAL_SECONDS` | Interval between runtime status polls. Defaults to `5`. |
|
|
77
|
+
| `LUMILAKE_FLOWMESH_OUTPUT_DESTINATION` | FlowMesh result delivery mode. `local` (default) or `http`. |
|
|
78
|
+
|
|
79
|
+
## Worker Groups
|
|
80
|
+
|
|
81
|
+
| Key | Purpose |
|
|
82
|
+
|-----|---------|
|
|
83
|
+
| `LUMILAKE_CPU_WORKER_GROUP_SIZE` | Number of CPU workers FlowMesh provisions. |
|
|
84
|
+
| `LUMILAKE_GPU_WORKER_GROUP_SIZE` | Number of GPU workers FlowMesh provisions. At least one of CPU / GPU size must be `> 0`. |
|
|
85
|
+
| `LUMILAKE_GPU_DEVICES` | GPU device ids Lumilake assigns to FlowMesh workers (one per device). Specific index (`0`), comma-separated subset (`0,2`), or `all` to cover every `nvidia-smi` device. Leave blank to skip GPU worker creation. |
|
|
86
|
+
|
|
87
|
+
## Plugins
|
|
88
|
+
|
|
89
|
+
| Key | Purpose |
|
|
90
|
+
|-----|---------|
|
|
91
|
+
| `LUMILAKE_PLUGINS` | Comma-separated list of plugin module names the server imports at startup. See `docs/PLUGINS.md`. |
|
|
92
|
+
| `LUMILAKE_PLUGIN_DIR` | Host directory bind-mounted to `/app/plugins` (read-only) and added to `PYTHONPATH`. Each `*.py` placed here is importable by the names listed in `LUMILAKE_PLUGINS`. Defaults to `./plugins` relative to the deploy directory. |
|
|
93
|
+
|
|
94
|
+
## Data Profiling
|
|
95
|
+
|
|
96
|
+
| Key | Purpose |
|
|
97
|
+
|-----|---------|
|
|
98
|
+
| `LUMILAKE_DATA_PROFILE_NUM_TEST_QUERIES` | Number of test queries per data profile. Defaults to `1`. |
|
|
99
|
+
| `LUMILAKE_S3_PROFILE_COST_PER_FILE` | Cost-model coefficient (per file) for S3 profile estimates. |
|
|
100
|
+
| `LUMILAKE_S3_PROFILE_COST_PER_MIB` | Cost-model coefficient (per MiB) for S3 profile estimates. |
|
|
101
|
+
| `LUMILAKE_LOCAL_DATA_PROFILE_PLAN_VARIANTS` | Comma-separated planner variants used for local data profiles. Defaults to `default,prefer_index,prefer_seq,prefer_nestloop`. |
|
|
102
|
+
| `LUMILAKE_DISABLE_DATA_PROFILE` | When truthy (`1`/`true`/`yes`/`on`), the server skips inline data-profile task build/run, skips `collect_data_profile` at batch dispatch, and the HALO optimizer falls back to its static cost model (any supplied profile results are dropped). Defaults to off. |
|
|
103
|
+
|
|
104
|
+
## vLLM Backend
|
|
105
|
+
|
|
106
|
+
| Key | Purpose |
|
|
107
|
+
|-----|---------|
|
|
108
|
+
| `LUMILAKE_VLLM_MAX_NUM_BATCHED_TOKENS` | vLLM `max_num_batched_tokens`. Defaults to `2048`. |
|
|
109
|
+
| `LUMILAKE_VLLM_MAX_CUDAGRAPH_CAPTURE_SIZE` | vLLM CUDA-graph capture size. Defaults to `64`. |
|
|
110
|
+
| `LUMILAKE_VLLM_GPU_MEMORY_UTILIZATION` | vLLM GPU memory utilization fraction. Defaults to `0.9`. |
|
|
111
|
+
|
|
112
|
+
## Hardware Requirements
|
|
113
|
+
|
|
114
|
+
Used by FlowMesh worker placement.
|
|
115
|
+
|
|
116
|
+
| Key | Purpose |
|
|
117
|
+
|-----|---------|
|
|
118
|
+
| `HARDWARE_CPU_REQUIREMENT` | CPU cores per worker. Defaults to `8`. |
|
|
119
|
+
| `HARDWARE_MEMORY_REQUIREMENT` | Memory per worker. Defaults to `16Gi`. |
|
|
120
|
+
| `HARDWARE_GPU_REQUIREMENT` | GPUs per worker. Defaults to `1`. |
|
|
121
|
+
| `HARDWARE_GPU_MEMORY_REQUIREMENT` | GPU memory per worker. Defaults to `8Gi`. |
|
|
122
|
+
|
|
123
|
+
## FlowMesh TLS and Worker Config
|
|
124
|
+
|
|
125
|
+
Picked up by the bundled FlowMesh deploy helpers.
|
|
126
|
+
|
|
127
|
+
| Key | Purpose |
|
|
128
|
+
|-----|---------|
|
|
129
|
+
| `SERVER_HTTP_PORT` | FlowMesh HTTP API port in `.env.flowmesh`. Keep `LUMILAKE_RUNTIME_ORCHESTRATOR_URL` in `.env` and `FLOWMESH_BASE_URL` in `.env.flowmesh` aligned with this port. |
|
|
130
|
+
| `SERVER_GRPC_PORT` | FlowMesh gRPC port in `.env.flowmesh`. Change it when a co-tenant FlowMesh stack already owns `50051`. |
|
|
131
|
+
| `REDIS_CONTROL_PORT` | FlowMesh control Redis port in `.env.flowmesh`. Change it when another stack already owns `6379`. |
|
|
132
|
+
| `REDIS_TELEMETRY_PORT` | FlowMesh telemetry Redis port in `.env.flowmesh`. Change it when another stack already owns `6380`. |
|
|
133
|
+
| `FLOWMESH_BASE_URL` | FlowMesh HTTP base URL consumed by FlowMesh workers; should point at `SERVER_HTTP_PORT`. |
|
|
134
|
+
| `REDIS_TLS_DIR` | Directory holding Redis TLS certs. Empty disables TLS bind-mounts. |
|
|
135
|
+
| `SERVER_TLS_DIR` | Directory holding FlowMesh server gRPC TLS certs. Empty disables TLS. |
|
|
136
|
+
| `SERVER_WORKER_CONFIG` | Path to a FlowMesh worker config override. |
|
|
137
|
+
|
|
138
|
+
`lumilake deploy init --flowmesh` writes `.env.flowmesh`. On hosts that
|
|
139
|
+
also run another FlowMesh stack, check the common defaults before
|
|
140
|
+
`deploy up`: HTTP `8000`, gRPC `50051`, Redis control `6379`, and Redis
|
|
141
|
+
telemetry `6380`.
|
|
142
|
+
|
|
143
|
+
## SDK / CLI Client
|
|
144
|
+
|
|
145
|
+
Consumed by the SDK and deploy CLI helpers.
|
|
146
|
+
|
|
147
|
+
| Key | Purpose |
|
|
148
|
+
|-----|---------|
|
|
149
|
+
| `LUMILAKE_BASE_URL` | SDK / CLI override for the saved server URL (see `docs/SDK.md` and `docs/CLI.md` for resolution order). |
|
|
150
|
+
| `LUMILAKE_API_KEY` | Bearer token sent as `Authorization: Bearer <key>` by the SDK / CLI. Required when the server runs an `IdentityProvider` plugin with `LUMILAKE_REQUIRE_IDENTITY_PROVIDER=1`. |
|
|
151
|
+
| `LUMILAKE_TIMEOUT` | SDK / CLI HTTP timeout override in seconds. Values `<= 0` are ignored. |
|
|
152
|
+
| `LUMILAKE_DEPLOY_DIR` | Default `--project-dir` for `lumilake deploy`. |
|
|
153
|
+
|
|
154
|
+
See `.env.example` for the deploy-time template and defaults.
|