Files
app/backend
stroblme b7f1d21712
Docs / docs (push) Successful in 3m11s
Playwright Tests / test-playwright (1, 2) (push) Successful in 11m42s
Playwright Tests / test-playwright (2, 2) (push) Successful in 2m22s
pre-commit / pre-commit (push) Successful in 3m12s
Test Backend / test-backend (3.12) (push) Successful in 6m19s
Test Backend / test-backend (3.14) (push) Successful in 5m59s
Compose Smoke Test / test-compose (push) Successful in 37s
Playwright Tests / merge-reports (push) Successful in 1m12s
Docs for key renames: ids and keys in the flow concepts, the rename routes, events and 503s in the API reference, hooks during a rename, sync and run metrics after one; a pinned restore refused for its recorded key names that key in the 409
2026-11-03 08:09:35 +01:00
..

Fluksio

Turn Python functions into connected nodes, run experiments, and keep their metrics and artifacts together. Start an engine with Python 3.12 or newer on Linux or macOS:

pip install fluksio
fluksio serve

The first start prints an admin password and opens a terminal dashboard. For a browser dashboard, connect the instance to the optional portal.

For data science

Save this small experiment as study.py. No dataset or GPU needed:

import math

from fluksio import Flow, Port, node

@node(
    requires=[Port("lr", "float")],
    provides=[Port("loss", "float", stream=True), Port("final_loss", "float")],
)
def fit(lr, epochs=25):
    for epoch in range(epochs):
        loss = math.exp(-lr * (epoch + 1))
        yield {"loss": loss}
    return {"final_loss": loss}


train = Flow(
    "train",
    nodes=[fit],
    inputs=[Port("lr", "float", initial=0.01)],
    outputs=["final_loss"],
)

Matching message names connect the nodes and determine their order. After syncing the project, start a run:

fluksio sync study
fluksio run train --lr 0.05 --wait

Each yield records a point on the loss curve. Replace the toy calculation with your own training code when you're ready. For artifacts and comparisons, try the data science guide.

More to explore

  • 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.

For sensors, devices and live automation, try the facility automation guide.

License

Copyright (C) 2026 Melvin Strobl - GNU Affero General Public License v3.0 or later. Running a modified version over a network obliges you to offer its users the corresponding source (AGPL §13).