- NodeDef `device`/`device_policy` become `worker`/`worker_policy`, the issue `ignored_device` becomes `ignored_worker`, and the SDK's `@node` takes `worker=` and `worker_policy=` - FlowStore._migrate renames the keys in published and draft documents once, bumping their version; a queued run's `needs` reads the old key - placement passes the label as `label`, client regenerated - docs: worker placement wording, MCP issuer without DOMAIN, device rows in the CLI data directory and the API table, device links in compose comments
77 lines
2.5 KiB
Markdown
77 lines
2.5 KiB
Markdown
# Fluksio
|
|
|
|
Fluksio is a node-based automation software that brings trust and reliability to your flow.
|
|
It just works and looks good.
|
|
Get started by running
|
|
|
|
```sh
|
|
pip install fluksio
|
|
fluksio serve
|
|
```
|
|
|
|
and you're ready to go.
|
|
|
|
## For data science
|
|
|
|
You can turn your existing data science project into a flow by decorating your functions with `@node` ...
|
|
|
|
```python
|
|
# myresearch/train.py
|
|
import fluksio
|
|
from fluksio import Port, node
|
|
|
|
@node(
|
|
requires=["dataset", Port("lr", "float")],
|
|
provides=[Port("loss", "float", stream=True), Port("weights", "artifact")],
|
|
worker="gpu", worker_policy="prefer",
|
|
)
|
|
def fit(dataset, lr, epochs=25):
|
|
for epoch in range(epochs):
|
|
loss = step(...)
|
|
yield {"loss": loss} # published as it happens, kept as a series
|
|
return {"weights": fluksio.save_artifact("weights.pt")}
|
|
```
|
|
|
|
... and passing them to a `Flow`:
|
|
|
|
```python
|
|
# myresearch/pipeline.py
|
|
from fluksio import Flow, Port
|
|
from myresearch.data import prepare
|
|
from myresearch.evaluate import evaluate
|
|
from myresearch.train import fit
|
|
|
|
train = Flow("train", nodes=[prepare, fit, evaluate],
|
|
inputs=[Port("lr", "float", initial=0.01)], outputs=["score"])
|
|
```
|
|
|
|
Fluksio will automatically infer the order of nodes based on the inputs and outputs you defined.
|
|
When everything is set, you can launch your first run as follows:
|
|
|
|
```sh
|
|
fluksio run train --lr 0.05 --wait
|
|
```
|
|
|
|
Checkout our [documentation](https://docs.fluksio.com/getting-started/data-science/) for more infos.
|
|
|
|
## Some other features
|
|
|
|
- **Flows**: typed messages between nodes, wired by name, edited on a canvas
|
|
or declared in code. Every change is a commit in a git repository you own.
|
|
- **Runs**: an experiment and a CI-style job are the same entity. Parameters,
|
|
seed, result, per-node timings, artifacts and the commit it ran at.
|
|
- **Dashboards**: charts and controls bound to the same messages the flows
|
|
carry, with no separate metrics pipeline.
|
|
- **Remote workers**: `pip install fluksio-worker` on the GPU box; it dials
|
|
*out* over one websocket, so nothing there has to be reachable.
|
|
|
|
Fluksio can also be used for facility automation.
|
|
Visit us on [fluksio.com](https://fluksio.com) or go straight to our [documentation](https://docs.fluksio.com).
|
|
|
|
## License
|
|
|
|
Copyright (C) 2026 Melvin Strobl - [GNU Affero General Public License v3.0 or
|
|
later](https://www.gnu.org/licenses/agpl-3.0.en.html). Running a modified
|
|
version over a network obliges you to offer its users the corresponding source
|
|
(AGPL §13).
|