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
This commit is contained in:
+26
-8
@@ -15,6 +15,18 @@ The command is two things at once: `serve`, `enroll` and `worker` *are* an
|
||||
installation, while `login`, `sync`, `run` and `runs` talk to one that may be
|
||||
anywhere.
|
||||
|
||||
## Where an installation lives
|
||||
|
||||
`.fluksio` beside your code, found the way `.git` is: from the working
|
||||
directory, or any directory above it. Two repositories on one machine are
|
||||
therefore two engines, with their own flows, runs and token. `fluksio serve`
|
||||
makes one where there is none, and it ignores itself from within — a
|
||||
`.gitignore` of `*`, so a database and a credential cannot be committed by
|
||||
accident.
|
||||
|
||||
`--global` uses `~/.fluksio` instead, shared by every directory. `--data-dir`
|
||||
(or `FLUKSIO_HOME`) names any directory outright and wins over both.
|
||||
|
||||
## `fluksio serve`
|
||||
|
||||
Runs the engine.
|
||||
@@ -29,7 +41,7 @@ Docker.
|
||||
|
||||
| Option | Default | What it does |
|
||||
|---|---|---|
|
||||
| `--data-dir PATH` | `~/.fluksio` (or `$FLUKSIO_HOME`) | where this installation keeps everything |
|
||||
| `--data-dir PATH` | `./.fluksio` (or `$FLUKSIO_HOME`) | where this installation keeps everything |
|
||||
| `--host HOST` | `127.0.0.1` | what to bind |
|
||||
| `--port PORT` | `8000` | what to listen on |
|
||||
| `--log-level LEVEL` | `info` | uvicorn's log level |
|
||||
@@ -112,13 +124,17 @@ address an engine over its API rather than being one.
|
||||
### `fluksio login`
|
||||
|
||||
```sh
|
||||
fluksio login --url http://127.0.0.1:8000
|
||||
fluksio login --url https://api.example.com
|
||||
```
|
||||
|
||||
Asks for an email and password, and keeps the token it gets in
|
||||
`~/.config/fluksio/client.json` (`$XDG_CONFIG_HOME` is honoured). Everything
|
||||
below reads it from there, or from `FLUKSIO_URL` and `FLUKSIO_TOKEN`, or from
|
||||
its own `--url` and `--token`.
|
||||
For an engine somewhere *else*. One you started yourself needs no login:
|
||||
`fluksio serve` writes the token as it comes up and says where it put it.
|
||||
|
||||
The token goes in this project's `.fluksio/client.json`, or with `--global` in
|
||||
`~/.fluksio/client.json`. Every command below reads it from there — nearest
|
||||
first, walking up from the working directory — or from `FLUKSIO_URL` and
|
||||
`FLUKSIO_TOKEN`, or from its own `--url` and `--token`. A token an older
|
||||
version wrote to `~/.config/fluksio/client.json` is still read.
|
||||
|
||||
### `fluksio sync`
|
||||
|
||||
@@ -164,7 +180,9 @@ commit of the repository it came from, and its parameters.
|
||||
## What lives in the data directory
|
||||
|
||||
```text
|
||||
~/.fluksio/
|
||||
.fluksio/ (or ~/.fluksio, with `--global`)
|
||||
├── client.json the token `serve` wrote, mode 600
|
||||
├── .gitignore `*` — a database and a credential, ignored from within
|
||||
├── fluksio.db SQLite: users, runs, metrics, observability, agents
|
||||
├── flows/ a git repository — one directory per flow
|
||||
│ ├── house/
|
||||
@@ -203,7 +221,7 @@ directory. The ones you are most likely to touch:
|
||||
|
||||
| Variable | Default | What it does |
|
||||
|---|---|---|
|
||||
| `DATA_DIR` | `~/.fluksio` via the CLI | everything below it derives from this |
|
||||
| `DATA_DIR` | `./.fluksio` via the CLI; `~/.fluksio` with `--global` | everything below it derives from this |
|
||||
| `DATABASE_URL` | SQLite in the data dir | any SQLAlchemy URL |
|
||||
| `NODE_VENV` | `auto` | which interpreter node code runs on: `auto` adopts the venv Fluksio was installed into, `managed` builds one of its own, or name an interpreter |
|
||||
| `REDIS_HOST` | unset | flow state in Redis instead of memory; survives a restart |
|
||||
|
||||
Reference in New Issue
Block a user