Files
app/backend/README.md
T
stroblmeandClaude Fable 5 47e513b658 Bring the README back in step with the commands it gives
Four things had drifted. It told you to run `fluksio login` two lines above
saying `serve` signs you in — one of the two had to go, and it is the login.
It ran `fluksio sync` before `fluksio run`, which `run` now does itself. The
pipeline snippet passed `prepare` and `evaluate` to `Flow` without importing
them, so copying it got a NameError on the one example that matters. And the
site link was relative, which resolves to nothing on the page this file exists
to be — pypi.org.

Added one sentence, on installing into the environment you already work in,
because it is the reason a reader's own imports keep working and there is
nowhere else on this page they would learn it.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012ue1tkFWB1bcGy3aWhCKpU
2026-08-24 18:31:51 +02:00

87 lines
3.0 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 — `serve` signs you in itself and says where it put the
token, so there is no login step. (`fluksio login` is for an engine somewhere
else.)
Install it into the environment you already work in and your nodes run on that
one, so everything you had imported is still importable. Fluksio keeps a SQLite
database, a git repository of your flows and an artifact store in a `.fluksio`
beside your code — one installation per project, found the way `.git` is.
## 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")],
device="gpu", device_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
```
That syncs your code and then runs it, so after an edit the command is the same
one again.
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).