Flux Cloud (FluxOS) — Skill
Use this skill to help users operate Flux nodes and Flux apps via the HTTP API.
Source-of-truth code references use the public repo: https://github.com/RunOnFlux/flux.
Ask first (only when missing)
- Node API base URL (direct node preferred):
http://<node-ip>:16127
- If not provided, start with
flux_get_state and only ask if you can’t proceed.
- What you’re allowed to do (read-only vs lifecycle/system changes)
- App name (and component name for composed apps)
- App owner’s ZelID/Flux address (never ask for private keys)
Quick health checks
If the MCP server is connected, prefer:
flux_node_health
flux_auth_diagnose
flux_app_health_report
Standard operating procedure (SOP)
- Prefer dedicated
flux_* tools over flux_request.
- When a tool returns
resource_link, read it (MCP resources/read) and summarize.
- If the client UI does not expose MCP resources, use
flux_resource_read with the same URI.
- Keep chat output compact: summarize first, then only quote relevant snippets.
API="http://<node-ip>:16127"
curl -sS "$API/flux/version"
curl -sS "$API/flux/info"
curl -sS "$API/flux/isarcaneos"
Authentication (two layers)
- API auth uses the
zelidauth header (signed login phrase).
- App registration/update also requires a separate signature over an exact message string.
- These are two different signatures; authenticate before signing the app message.
Preferred login helper (minimal steps):
flux_auth_login { zelid } → click the returned signLauncherHttpUrl (preferred, supports SSP + Zelcore) or zelcoreLauncherHttpUrl → sign → flux_auth_login { zelid, loginPhrase, signature }
- If you're already logged in,
flux_auth_login { zelid } should return alreadyAuthenticated: true (no re-sign needed).
- To force a fresh login phrase anyway:
flux_auth_login { zelid, force: true }
If your terminal/IDE won’t open zel: links:
- Use
flux_write_sign_launcher { messageResourceUri, confirm: true } to get a clickable http://127.0.0.1:... launcher URL (supports SSP + Zelcore).
Use:
references/auth-zelidauth.md
references/signing.md
Endpoint discovery (complete)
- Full inventory (human):
references/endpoints-inventory.md
- Machine-readable inventory:
references/endpoints.json
These are generated from ZelBack/src/routes.js in the public Flux repo.
Workflow index
1) Node + daemon diagnostics
- Start with
/flux/* for node health and FluxOS services.
- Use
/daemon/* for daemon/RPC-style queries (chain, network, wallet, etc).
Use:
references/flux-api.md
references/daemon-api.md
2) Create a v8 app spec
- Build a v8 spec, then canonicalize/validate server-side before signing.
Use: references/app-spec-v8.md.
3) Estimate price
- POST the spec to the pricing endpoint.
- Use registration info to understand port rules and constraints.
Use: references/api-endpoints.md.
4) Register/update an app (network-level)
- Prefer
flux_apps_plan_registration / flux_apps_plan_update (auto-canonicalizes the spec).
- Prefer direct node base URLs; if starting from a gateway, use tools with
resolveGateway=true (now default).
- Submit
flux_apps_register / flux_apps_update with the owner signature.
- Signing: plan tools return
messageToSignResourceUri (raw message-to-sign). For Zelcore, use:
flux_build_zelcore_sign_link { "messageResourceUri": "<messageToSignResourceUri>", "useFluxStorage": true, "confirm": true }
flux_apps_test_install with the registration hash (requires confirm=true).
- Payment: use
flux_apps_register_and_verify.payment.address (or flux_apps_plan_registration.payment.address). Amount is payment.amountFlux. Memo must be the registration hash.
Use:
references/signing.md
scripts/build-app-message.js
4b) Git deployments (Orbit)
Flux Git deployments (formerly Orbit) register a normal v8 app spec that uses runonflux/orbit:latest.
- Prefer the one-shot planner:
flux_git_deploy_plan_registration
- For private repos:
- pass
repoToken + enterprise: true + confirm: true (credentials are encrypted into spec.enterprise)
- After signing:
- Prefer
flux_git_deploy_register_and_verify (takes the plan resourceUri, so you don’t paste the spec).
Use: references/git-deployments.md.
5) Operate an app (lifecycle + observability)
Use: references/lifecycle-observability.md.
App Specs (Enterprise-Aware)
- Prefer
flux_apps_get_spec_full when the user says "show my app spec" or "what are my app settings".
- For non-enterprise apps: it returns the base spec.
- For enterprise v8+ apps: it returns decrypted
compose + contacts for inspection (requires zelidauth).
- Secrets (passwords/tokens) are redacted by default; only include them if the user explicitly asks:
- Call with
{ includeSecrets: true, confirm: true }.
- Ops kill-switch: start the MCP server with
FLUX_MCP_ALLOW_SECRETS=0 to disable secrets output entirely.
- If the user needs to verify a secret value without printing it, use
secretChecks:
- Example:
{ "appname": "<app>", "secretChecks": [{"key":"ENS_PASSWORD","equals":"snorlax"}], "confirm": true }
6) Files and persistence
Use: references/storage-mounts.md.
7) Syncthing + node services
Use: references/syncthing-api.md.
8) Explorer + payments
Use:
references/explorer-api.md
references/payment-api.md
9) Backups, benchmarks, maintenance
Use:
references/backup-api.md
references/benchmark-api.md
References (load as needed)
references/api-endpoints.md — quick overview + key endpoints
references/endpoints-inventory.md — full generated route list
references/auth-zelidauth.md — login phrase + zelidauth header
references/flux-api.md — /flux/* node APIs
references/daemon-api.md — /daemon/* RPC proxy APIs
references/syncthing-api.md — /syncthing/* service APIs
references/explorer-api.md — /explorer/* chain data APIs
references/payment-api.md — /payment/* helpers
references/backup-api.md — /backup/* helpers
references/benchmark-api.md — /benchmark/* helpers
references/ioutils-api.md — /ioutils/* upload helper
references/app-spec-v8.md — schema, rules, examples
references/signing.md — canonicalization + message-to-sign workflow
references/lifecycle-observability.md — lifecycle, logs, inspect, exec
references/storage-mounts.md — containerData, mounts, volume browser
references/arcane-enterprise.md — Arcane detection + enterprise constraints
references/git-deployments.md — Git deployments (Orbit) spec + workflow
references/troubleshooting.md — common failure modes + checklists
1---2name: flux-cloud3description: Operate Flux Cloud/FluxOS nodes and Flux apps via API: authentication (zelidauth), v8 app specs, pricing, signing, lifecycle ops, logs/inspect/stats, files, syncthing, daemon RPC proxy, explorer, backup, and troubleshooting.4---56# Flux Cloud (FluxOS) — Skill78Use this skill to help users operate Flux nodes and Flux apps via the HTTP API.910Source-of-truth code references use the public repo: `https://github.com/RunOnFlux/flux`.1112## Ask first (only when missing)1314- Node API base URL (direct node preferred): `http://<node-ip>:16127`15 - If not provided, start with `flux_get_state` and only ask if you can’t proceed.16- What you’re allowed to do (read-only vs lifecycle/system changes)17- App name (and component name for composed apps)18- App owner’s ZelID/Flux address (never ask for private keys)1920## Quick health checks2122If the MCP server is connected, prefer:23- `flux_node_health`24- `flux_auth_diagnose`25- `flux_app_health_report`2627## Standard operating procedure (SOP)2829- Prefer dedicated `flux_*` tools over `flux_request`.30- When a tool returns `resource_link`, read it (MCP `resources/read`) and summarize.31- If the client UI does not expose MCP resources, use `flux_resource_read` with the same URI.32- Keep chat output compact: summarize first, then only quote relevant snippets.3334```bash35API="http://<node-ip>:16127"3637curl -sS "$API/flux/version"38curl -sS "$API/flux/info"39curl -sS "$API/flux/isarcaneos"40```4142## Authentication (two layers)4344- API auth uses the `zelidauth` header (signed login phrase).45- App registration/update also requires a separate signature over an exact message string.46- These are two different signatures; authenticate before signing the app message.4748Preferred login helper (minimal steps):49- `flux_auth_login { zelid }` → click the returned `signLauncherHttpUrl` (preferred, supports SSP + Zelcore) or `zelcoreLauncherHttpUrl` → sign → `flux_auth_login { zelid, loginPhrase, signature }`50 - If you're already logged in, `flux_auth_login { zelid }` should return `alreadyAuthenticated: true` (no re-sign needed).51 - To force a fresh login phrase anyway: `flux_auth_login { zelid, force: true }`5253If your terminal/IDE won’t open `zel:` links:54- Use `flux_write_sign_launcher { messageResourceUri, confirm: true }` to get a clickable `http://127.0.0.1:...` launcher URL (supports SSP + Zelcore).5556Use:57- `references/auth-zelidauth.md`58- `references/signing.md`5960## Endpoint discovery (complete)6162- Full inventory (human): `references/endpoints-inventory.md`63- Machine-readable inventory: `references/endpoints.json`6465These are generated from `ZelBack/src/routes.js` in the public Flux repo.6667## Workflow index6869### 1) Node + daemon diagnostics7071- Start with `/flux/*` for node health and FluxOS services.72- Use `/daemon/*` for daemon/RPC-style queries (chain, network, wallet, etc).7374Use:75- `references/flux-api.md`76- `references/daemon-api.md`7778### 2) Create a v8 app spec7980- Build a v8 spec, then canonicalize/validate server-side before signing.8182Use: `references/app-spec-v8.md`.8384### 3) Estimate price8586- POST the spec to the pricing endpoint.87- Use registration info to understand port rules and constraints.8889Use: `references/api-endpoints.md`.9091### 4) Register/update an app (network-level)9293- Prefer `flux_apps_plan_registration` / `flux_apps_plan_update` (auto-canonicalizes the spec).94- Prefer direct node base URLs; if starting from a gateway, use tools with `resolveGateway=true` (now default).95- Submit `flux_apps_register` / `flux_apps_update` with the owner signature.96- Signing: plan tools return `messageToSignResourceUri` (raw message-to-sign). For Zelcore, use:97 - `flux_build_zelcore_sign_link { "messageResourceUri": "<messageToSignResourceUri>", "useFluxStorage": true, "confirm": true }`98- `flux_apps_test_install` with the registration hash (requires `confirm=true`).99- Payment: use `flux_apps_register_and_verify.payment.address` (or `flux_apps_plan_registration.payment.address`). Amount is `payment.amountFlux`. Memo must be the registration hash.100101Use:102- `references/signing.md`103- `scripts/build-app-message.js`104105### 4b) Git deployments (Orbit)106107Flux Git deployments (formerly Orbit) register a normal v8 app spec that uses `runonflux/orbit:latest`.108109- Prefer the one-shot planner:110 - `flux_git_deploy_plan_registration`111- For private repos:112 - pass `repoToken` + `enterprise: true` + `confirm: true` (credentials are encrypted into `spec.enterprise`)113- After signing:114 - Prefer `flux_git_deploy_register_and_verify` (takes the plan `resourceUri`, so you don’t paste the spec).115116Use: `references/git-deployments.md`.117118### 5) Operate an app (lifecycle + observability)119120Use: `references/lifecycle-observability.md`.121122### App Specs (Enterprise-Aware)123124- Prefer `flux_apps_get_spec_full` when the user says "show my app spec" or "what are my app settings".125 - For non-enterprise apps: it returns the base spec.126 - For enterprise v8+ apps: it returns decrypted `compose` + `contacts` for inspection (requires `zelidauth`).127 - Secrets (passwords/tokens) are redacted by default; only include them if the user explicitly asks:128 - Call with `{ includeSecrets: true, confirm: true }`.129 - Ops kill-switch: start the MCP server with `FLUX_MCP_ALLOW_SECRETS=0` to disable secrets output entirely.130 - If the user needs to *verify* a secret value without printing it, use `secretChecks`:131 - Example: `{ "appname": "<app>", "secretChecks": [{"key":"ENS_PASSWORD","equals":"snorlax"}], "confirm": true }`132133### 6) Files and persistence134135Use: `references/storage-mounts.md`.136137### 7) Syncthing + node services138139Use: `references/syncthing-api.md`.140141### 8) Explorer + payments142143Use:144- `references/explorer-api.md`145- `references/payment-api.md`146147### 9) Backups, benchmarks, maintenance148149Use:150- `references/backup-api.md`151- `references/benchmark-api.md`152153## References (load as needed)154155- `references/api-endpoints.md` — quick overview + key endpoints156- `references/endpoints-inventory.md` — full generated route list157- `references/auth-zelidauth.md` — login phrase + `zelidauth` header158- `references/flux-api.md` — `/flux/*` node APIs159- `references/daemon-api.md` — `/daemon/*` RPC proxy APIs160- `references/syncthing-api.md` — `/syncthing/*` service APIs161- `references/explorer-api.md` — `/explorer/*` chain data APIs162- `references/payment-api.md` — `/payment/*` helpers163- `references/backup-api.md` — `/backup/*` helpers164- `references/benchmark-api.md` — `/benchmark/*` helpers165- `references/ioutils-api.md` — `/ioutils/*` upload helper166- `references/app-spec-v8.md` — schema, rules, examples167- `references/signing.md` — canonicalization + message-to-sign workflow168- `references/lifecycle-observability.md` — lifecycle, logs, inspect, exec169- `references/storage-mounts.md` — containerData, mounts, volume browser170- `references/arcane-enterprise.md` — Arcane detection + enterprise constraints171- `references/git-deployments.md` — Git deployments (Orbit) spec + workflow172- `references/troubleshooting.md` — common failure modes + checklists