Flux Cloud

io.github.RunOnFlux由 GitHub 账号 RunOnFlux 发布v0.2.8更新于 Oct 24, 2026

Deploy, pay for and manage apps on Flux Cloud, the decentralized cloud. Prices in USD.

已验证Streamable HTTP可网页运行云端与基础设施金融

概览

AI 生成的概览

在去中心化云 Flux Cloud 上部署、付费和管理应用,让助手完成报价、上线、监控、更新与取消。

可以做什么
  • 查询身份、余额与网络价格,并生成新的密钥对
  • 构建并校验应用规格,获取美元与 FLUX 报价
  • 带确认参数部署应用,或仅预览方案与费用而不花钱
  • 轮询部署状态,查询任意应用的规格、实例与访问地址
  • 列出自己拥有的应用,读取容器日志及 CPU、内存、网络统计
  • 重启、重新部署、移除或取消应用,可按单节点或全网执行
适用场景
适合让助手完整管理 Flux Cloud 上应用的生命周期:按美元报价、用 FLUX 部署付费、观察启动、查看日志与统计并最终关停。只读的报价、规格构建和应用查询无需任何密钥即可使用。
运行要求
可作为 npm 包通过 npx 在本地运行(需 Node.js),也可连接托管的远程端点(Streamable HTTP)。签名与付费工具需要 FLUX_ID_PRIVATE_KEY 和 FLUX_PAYMENT_PRIVATE_KEY,托管服务上也可作为调用参数传入;flux_generate_keys 可生成密钥对。付款地址需持有 FLUX,并需访问 FluxOS API 与区块浏览器。
安装前请注意
部署与取消会真实花费付款地址中的 FLUX,仅在 confirm=true 时执行;付款不足的消息会被静默丢弃且不退款。私钥属敏感信息:托管服务上需作为调用参数传入,会经过 AI 服务商与聊天记录,应使用余额很少的一次性密钥对,预算较大时改用本地服务。hard=true 的重新部署会清空数据,remove 并不会停止计费。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Flux Cloud,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/io.github.RunOnFlux%2Fflux-cloud-mcp/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "flux-cloud": {
      "type": "http",
      "url": "https://mcp.runonflux.com/mcp"
    }
  }
}

README

Flux Cloud MCP server

An MCP server that lets any AI agent use Flux Cloud, the decentralized cloud: quote an app in US dollars, deploy it, pay for it, watch it come up, read its logs, update it, and cancel it. Works with Claude Code, Claude Desktop, Cursor, Windsurf, OpenCode and every other MCP host.

There is no account. Two keys are the whole identity:

KeyAddressRole
FLUX_ID_PRIVATE_KEYFlux ID, 1...Owns apps. Signs specifications and API sessions. Never holds funds.
FLUX_PAYMENT_PRIVATE_KEYFlux address, t1...Holds FLUX and pays deployment fees on-chain.

The server generates a pair for you (flux_generate_keys); fund the payment address with FLUX and deploy.

Pricing policy

Every price this server shows is the Flux Cloud USD price, the same one home.runonflux.io charges, converted to FLUX at the live market rate with the 5 percent pay-in-FLUX discount. Quotes come from the network itself (/apps/calculatefiatandfluxprice), so they include the $0.99 minimum, hardware and term discounts, and update credits.

The blockchain's own acceptance threshold is several times lower. It is never shown as a price; it is only checked as a guard before a payment is broadcast.

Install

bash
npm install -g @runonflux/flux-cloud-mcp     # or: yarn global add @runonflux/flux-cloud-mcp

Or run it without installing: npx @runonflux/flux-cloud-mcp.

Claude Code

bash
claude mcp add flux-cloud -s user \  -e FLUX_ID_PRIVATE_KEY=<wif> -e FLUX_PAYMENT_PRIVATE_KEY=<wif> \  -- npx -y @runonflux/flux-cloud-mcp

Claude Desktop, Cursor, Windsurf (JSON config)

json
{  "mcpServers": {    "flux-cloud": {      "command": "npx",      "args": ["-y", "@runonflux/flux-cloud-mcp"],      "env": {        "FLUX_ID_PRIVATE_KEY": "<wif of the Flux ID>",        "FLUX_PAYMENT_PRIVATE_KEY": "<wif of the payment address>"      }    }  }}

Keys are optional. Without them every read-only tool works, and flux_generate_keys will create a pair to put into the config.

OpenCode

json
{  "mcp": {    "flux-cloud": {      "type": "local",      "command": ["npx", "-y", "@runonflux/flux-cloud-mcp"],      "environment": {        "FLUX_ID_PRIVATE_KEY": "<wif>",        "FLUX_PAYMENT_PRIVATE_KEY": "<wif>"      }    }  }}

Tools

ToolWhat it doesSpends FLUX
flux_get_identityFlux ID, payment address, balance in FLUX and USDno
flux_generate_keysNew Flux ID + payment key pair with setup instructionsno
flux_get_pricingUSD rate card, FLUX/USD rate, discounts, reference sizesno
flux_build_specSimple description (image, ports, cpu/ram/hdd, months) to a full v8 specno
flux_validate_specLocal rules plus verification on a FluxOS nodeno
flux_quote_appUSD price and FLUX to pay, for a registration or an updateno
flux_deploy_appPlan (default) or, with confirm=true, sign, broadcast and paywith confirm
flux_wait_for_appPoll until accepted and instances run; returns URLsno
flux_get_appAny app's spec, expiry, instances, URLsno
flux_list_my_appsApps owned by the Flux ID, with instance counts and days leftno
flux_get_app_logsContainer logs from a running instance (owner only); component auto-selected, private apps decrypted with the owner keyno
flux_get_app_statsLive CPU/memory/network of an instance (owner only)no
flux_control_appRestart, redeploy or remove instances, per node or globallyno
flux_cancel_appEnd an app early by shortening its termwith confirm
flux_get_network_infoNode counts, height, FLUX/USD, deployment addressno

Resources flux://guide/overview, flux://guide/spec-format, flux://guide/pricing and flux://guide/gotchas give the agent the domain knowledge; the deploy_on_flux prompt walks it through a deployment.

A typical session

> deploy nginx on flux, 3 instances, one month
flux_get_identity      -> Flux ID 1Ab..., payer t1Cd..., 996.98 FLUX ($48.74)flux_build_spec        -> v8 spec, port 39978 -> 80, r:/data, validflux_quote_app         -> $0.99 for 1 month, pay 19.24 FLUX (5% FLUX discount)   user agreesflux_deploy_app confirm=true                       -> message hash 8d2f..., paid 19.24 FLUX, txid 0c41...flux_wait_for_app      -> accepted at height 2941560, 3/3 instances running                          https://myapp.app.runonflux.io

How a deployment works

  1. The spec is verified through api.runonflux.io exactly as it will be at registration (image reachable, architecture, ports, name free). If the balancer refuses, a few healthy nodes are probed and tried in turn.
  2. The network quotes the USD price; the server checks the payer's balance.
  3. With confirm=true the Flux ID signs the spec, the same endpoint broadcasts it to the network and returns a 64-character message hash.
  4. The payment address sends the quoted FLUX to the network deployment address with the hash in an OP_RETURN output. Right before signing, the amount is re-checked against a freshly fetched price table, because an underpaid message is dropped silently and the FLUX is not refunded.
  5. Nodes pair the confirmed payment with the message and publish the app. Instances then spawn and pull the image.

Private (enterprise) apps publish an empty component list, so flux_get_app, flux_get_app_logs and flux_get_app_stats fetch the decrypted specification from an ArcaneOS node with the owner key when it is configured or passed. Only component names, images, ports and sizes are returned; environment variables, commands and registry credentials never leave the server.

Updates use the same tool: an existing app of the same owner gets a fluxappupdate message and the network credits the unused part of the old term. Private (enterprise) apps are supported through the enterprise argument: components are encrypted for the network and only ArcaneOS nodes can run them.

Hosted server: mcp.runonflux.com

The same server also runs on Flux Cloud itself, over Streamable HTTP, for hosts that cannot start a local process (claude.ai connectors, ChatGPT, browser and mobile agents). Add it as a remote MCP server:

https://mcp.runonflux.com/mcp   (also https://mcp.runonflux.io/mcp)

The hosted server holds no keys. Read-only tools need none. Tools that sign or pay take fluxIdPrivateKey and paymentPrivateKey as call arguments, used in memory for that call and never logged or stored. The server's instructions tell agents to create a dedicated pair with flux_generate_keys and to have the user fund only what a deployment needs, rather than asking for the keys of a wallet used elsewhere. Anything typed into a chat passes through the AI vendor and the host's history, so treat such a pair as disposable and keep its balance small. For larger budgets, run the local server, where keys never leave your machine.

Run your own copy with Docker:

bash
docker run -p 3000:3000 runonflux/flux-cloud-mcp

It is stateless, so any number of instances can sit behind one load balancer. GET /healthz reports liveness. The Flux app specification that runs the public instance is in deploy/cloudmcp.json.

Configuration

VariableDefaultPurpose
FLUX_ID_PRIVATE_KEYWIF of the Flux ID (owner)
FLUX_PAYMENT_PRIVATE_KEYWIF of the paying address
FLUX_API_URLhttps://api.runonflux.ioLoad-balanced FluxOS API for reads and quotes
FLUX_NODE_URLautoPin one FluxOS node for registrations
FLUX_EXPLORER_URLSexplorer.runonflux.io,flux-explorer.sspwallet.ioInsight explorers for UTXOs and broadcast
FLUX_STATS_URLhttps://stats.runonflux.ioUSD rate card
FLUX_RATES_URLhttps://viprates.runonflux.ioFLUX market rate

Security notes

  • Private keys stay in the server process. No tool ever returns a configured key; flux_generate_keys returns only the keys it just created.
  • Nothing is spent unless a tool is called with confirm=true. Hosts that ask before tool calls will show the USD amount in the arguments' context.
  • FluxOS sessions are self-issued signed phrases valid for a few hours; no password or token is stored anywhere.
  • Use a dedicated payment address holding only what you intend to spend.

Development

bash
yarn installyarn type-check && yarn lint && yarn format:check && yarn build && yarn testyarn test:live      # differential test of the USD estimator against the network

The USD estimator, the specification formatter and the consensus guard mirror the FluxOS code (appSpecHelpers.js, appUtilities.js, messageVerifier.js) and the live test checks the estimator against the network on every run.

License

MIT

来源:README.md,提交 e10d2ad

工具

15

flux_get_identity

Show the configured Flux identity and balance

Returns the Flux ID (app owner address), the payment address and its spendable FLUX balance with its USD value. Explains what to configure if keys are missing. Never returns private keys.

输入参数fluxIdPrivateKeypaymentPrivateKey

flux_generate_keys

Generate a new Flux ID and payment key pair

Creates two fresh private keys (WIF): one for the Flux ID that will own apps, one for the address that pays. The response contains the secrets; store them in the MCP server environment as FLUX_ID_PRIVATE_KEY and FLUX_PAYMENT_PRIVATE_KEY, then restart the server. Nothing is stored or sent anywhere by this tool.

输入参数fluxIdPrivateKeypaymentPrivateKey

flux_get_pricing

Get the Flux Cloud rate card

Returns the current USD rate card, the live FLUX/USD rate, the pay-in-FLUX discount and instant USD estimates for a few reference sizes. Use flux_quote_app for the exact price of a specific app.

输入参数fluxIdPrivateKeypaymentPrivateKey

flux_build_spec

Build a Flux app specification from a simple description

Turns images, ports, resources and a term into a complete, correctly formatted v8 specification, with public ports auto-picked and data replication enabled. Returns the spec plus local validation errors and warnings.

输入参数name必填nodesownermonthscontactsstaticipinstancescomponents必填descriptiongeolocationexpireBlocksfluxIdPrivateKey另有 1 个

flux_validate_spec

Validate a specification locally and on the network

Runs the local rule checks, then asks a FluxOS node to verify the specification exactly as it would at registration (image reachable, architecture, ports, name availability). Returns the node-formatted spec on success.

输入参数spec必填networkfluxIdPrivateKeypaymentPrivateKey

flux_quote_app

Quote the price of an app in USD and FLUX

Returns the Flux Cloud price for registering the given specification, or for updating it if an app of that name already exists (the unused part of the current term is credited). Price is in USD with the FLUX amount at market rate.

输入参数spec必填fluxIdPrivateKeypaymentPrivateKey

flux_deploy_app

Deploy (register or update) an app and pay for it

Validates the specification on a node, quotes it, and with confirm=true signs it with the Flux ID, broadcasts it and pays the quoted FLUX from the payment address. Without confirm it only returns the plan (price, balance, warnings) and spends nothing. Registers a new name or updates an existing app of the same owner. Then call flux_wait_for_app with the returned txid.

输入参数spec必填confirmenterprisefluxIdPrivateKeypaymentPrivateKey

flux_wait_for_app

Wait for a deployment to be accepted and its instances to run

Polls the network for up to timeoutSeconds (default 45 to fit hosts with a 60 s tool timeout, max 600). Returns payment confirmations, whether the spec was accepted, and the running instances with URLs. Safe to call repeatedly until done=true.

输入参数name必填txidpreviousHashtimeoutSecondsfluxIdPrivateKeypaymentPrivateKey

flux_get_app

Get a deployed app: spec, status, instances, URLs

Looks up any app on the network by name and returns its published specification, expiry, running instances, URLs and a reachability check: probes the shared domain (HTTP) and each instance port (TCP and HTTP) and explains what a 503 means, including when it is expected for non-web apps.

输入参数name必填portsfluxIdPrivateKeypaymentPrivateKey

flux_list_my_apps

List apps owned by the configured Flux ID

Lists every app registered by the owner (or a given Flux ID) with expiry and instance counts.

输入参数ownernameContainsfluxIdPrivateKeypaymentPrivateKey

flux_get_app_logs

Read container logs from a running instance

Fetches the last N log lines of an app from one of the nodes running it. Requires the owner key. The component is picked automatically when the app has one (private apps are decrypted with the owner key); otherwise the available names are listed.

输入参数name必填linesnodeIpcomponentfluxIdPrivateKeypaymentPrivateKey

flux_get_app_stats

Get live resource usage of a running instance

CPU, memory and network stats of the containers of an app on one node. Requires the owner key.

输入参数name必填nodeIpcomponentfluxIdPrivateKeypaymentPrivateKey

flux_control_app

Restart, redeploy or remove app instances

restart: restarts containers. redeploy: pulls the image again and recreates containers (hard=true also wipes data). remove: uninstalls from nodes; the registration stays and the network re-spawns it elsewhere, so use flux_cancel_app to stop paying. Scope is one node (nodeIp) or every node running the app (global). Requires the owner key.

输入参数hardname必填scopeaction必填nodeIpfluxIdPrivateKeypaymentPrivateKey

flux_cancel_app

Cancel an app (stop it and stop paying)

Ends an app early by updating its term so it expires within about an hour. The network then uninstalls it everywhere. With confirm=true this signs and pays the (usually minimal) update; without it, returns the plan.

输入参数name必填confirmfluxIdPrivateKeypaymentPrivateKey

flux_get_network_info

Network overview

Node counts by tier, current block height, FLUX/USD rate and the deployment payment address.

输入参数fluxIdPrivateKeypaymentPrivateKey

版本历史

2
  1. v0.2.8最新Oct 16, 2026
  2. v0.2.7Sep 16, 2026

评分

已满足适用检查项的 100%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分