Metadata-Version: 2.5
Name: fluksio
Version: 0.1.0
Summary: Node-based automation engine: flows, dashboards, batch runs
Project-URL: Homepage, https://fluksio.com
Project-URL: Documentation, https://docs.fluksio.com
Project-URL: Getting started, https://docs.fluksio.com/getting-started/data-science/
Author-email: Fluksio <stroblme@posteo.de>
License-Expression: AGPL-3.0-or-later
License-File: LICENSE
Keywords: automation,dataflow,experiment-tracking,mlops,workflow
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: MacOS
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Home Automation
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: System :: Distributed Computing
Requires-Python: >=3.10
Requires-Dist: aiomqtt>=2.0.0
Requires-Dist: alembic<2.0.0,>=1.12.1
Requires-Dist: croniter>=1.3.0
Requires-Dist: cryptography>=44.0.0
Requires-Dist: email-validator<3.0.0.0,>=2.1.0.post1
Requires-Dist: emails<1.0,>=0.6
Requires-Dist: fastapi[standard]<1.0.0,>=0.114.2
Requires-Dist: fluksio-worker<0.2,>=0.1
Requires-Dist: httpx<1.0.0,>=0.25.1
Requires-Dist: influxdb-client[async]>=1.40.0
Requires-Dist: jinja2<4.0.0,>=3.1.4
Requires-Dist: mcp<2,>=1.29
Requires-Dist: numpy>=2.2.6
Requires-Dist: pwdlib[argon2,bcrypt]>=0.3.0
Requires-Dist: pydantic-settings<3.0.0,>=2.2.1
Requires-Dist: pydantic>2.0
Requires-Dist: pyjwt<3.0.0,>=2.8.0
Requires-Dist: python-multipart<1.0.0,>=0.0.7
Requires-Dist: redis>=7.1.0
Requires-Dist: sentry-sdk[fastapi]>=2.20.0
Requires-Dist: sqlmodel<1.0.0,>=0.0.21
Requires-Dist: tenacity<9.0.0,>=8.2.3
Requires-Dist: uv>=0.5
Description-Content-Type: text/markdown

# Fluksio

A node-based automation engine: flows, dashboards and batch runs, in one
resident process with no infrastructure behind it.

```sh
pip install fluksio
fluksio serve
```

That is the whole installation — no Docker, no database server, no ports to
open. It keeps a SQLite database, a git repository of your flows and an
artifact store under `~/.fluksio`, and prints an admin password once.

## For data science

Your functions become nodes where they already live. Install Fluksio into the
environment you work in and your nodes run on it — the packages are already
there:

```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")}
```

```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"])
```

```sh
fluksio login --url http://127.0.0.1:8000
fluksio sync myresearch
fluksio run train --lr 0.05 --wait
```

The decorators return your functions untouched, so everything stays callable,
testable and importable as what it was. A metric leaves through a declared
port rather than a logging call, which is why there is no `log_metric()`: the
run keeps the whole series, a chart can bind to it, and a downstream node can
consume it.

## What else it does

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

## Links

- Documentation: <https://docs.fluksio.com>
- Getting started (data science): <https://docs.fluksio.com/getting-started/data-science/>
- Home: <https://fluksio.com>

Python 3.10 or newer, Linux or macOS.

## 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).
