clusterflux-public/docs/nodes.md
Clusterflux release ba749b9e47 Public release source-69fccd306838
Source commit: 69fccd306838141ba9b1730f4ac4afb1a617bb4e

Public tree identity: sha256:8c03637496d3f7ee1b625aa1c823cd69bfcf0247a061d8cb571e05d537329691
2026-07-25 17:53:21 +02:00

66 lines
2 KiB
Markdown

# Nodes
Your node runs real commands and retains real output bytes. Enroll it once, then
restart it with the same public-key identity.
## Enroll
~~~bash
clusterflux node enroll --project-id <project-id> --json
clusterflux node attach \
--project-id <project-id> \
--node workstation \
--enrollment-grant "$ENROLLMENT_GRANT"
~~~
Treat the enrollment grant as a short-lived secret. It is exchanged once and is
not a worker credential. By default, `clusterflux node attach` creates and stores
a local node key with restricted permissions. Use an explicit `--public-key`
with `CLUSTERFLUX_NODE_PRIVATE_KEY` only when external secret management owns the
key pair.
## Run the worker
~~~bash
clusterflux-node \
--coordinator https://clusterflux.lesstuff.com \
--tenant "$TENANT" \
--project-id <project-id> \
--node workstation \
--project-root "$PWD" \
--worker \
--emit-ready
~~~
Start the worker from the project directory when tasks need a local checkout.
The worker reports detected command, container, source, VFS, environment, OS,
and architecture capabilities. Use `clusterflux node attach --cap <capability>`
only when detection needs an explicit override.
## Liveness
~~~bash
clusterflux node list
clusterflux node status workstation
~~~
The coordinator marks a node stale after its accepted heartbeat age exceeds the
configured threshold. Stale nodes are excluded before placement and before a
retained-node download link is created.
## Local source
A bind-mounted local checkout is fast and avoids transferring the repository,
but it is non-hermetic: uncommitted changes, ignored files, and concurrent
editor writes can affect the command. Use a content-addressed source snapshot
when reproducibility matters.
## Revoke
~~~bash
clusterflux node revoke workstation
~~~
Revocation removes the node identity and its live descriptor. Subsequent signed
requests fail. Artifacts retained only by that node become unavailable unless
you explicitly synchronized them elsewhere.