Files
app/backend/README.md
T
stroblmeandClaude Fable 5 99f6530698 One installation per project, and no login to reach it
Two things a local install should not have asked for.

`fluksio serve` now signs you in. Logging in to your own machine was a
formality — the password was printed by the same process that would have
checked it, and the database it authenticates against sits in the directory
the token goes into — so `serve` mints the token itself and says where it put
it. `fluksio login` is left for an engine somewhere else.

And an installation is `.fluksio` beside the code, found the way `.git` is,
rather than one `~/.fluksio` for the machine. A repository with its own venv
was already getting its own engine; it now gets its own flows, run history and
token too, instead of three repositories sharing one database and fighting
over one port. `--global` asks for the shared one, `--data-dir` still names
any directory, and when both exist the banner says which you are looking at
and how to reach the other.

The directory ignores itself from within — a `.gitignore` of `*`, the way uv
writes one into `.venv` — because it holds a credential and a database, and
neither belongs in anybody's history. The token is written mode 600. A login
an older version wrote to ~/.config/fluksio is still read, so nothing that
worked stops working.

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

86 lines
2.8 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
```
Then login once (the token is stored on your device) with the credentials shown after the previous command
```sh
fluksio login --url http://127.0.0.1:8000
```
and you're ready to go!
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. It prints an admin password once, and signs you in itself.
## 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.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 sync myresearch
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](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).