Moneo

io.github.moneolabs由 GitHub 帳號 moneolabs 發布v0.4.0更新於 Oct 27, 2026

A guarded wallet for AI agents on Robinhood Chain: a spending policy runs before every signature.

已驗證STDIO僅桌面金融安全與監控

概覽

AI 產生的概覽

給 AI 代理使用的受管控錢包,運行於 Robinhood Chain,每次簽章前都會先執行支出策略。

可以做什麼
  • 透過代理專屬錢包進行付款與報價,簽章器持有模型看不到的私鑰。
  • 在簽章前執行支出策略:單筆上限、滾動預算、頻率限制、白名單與人工升級,回傳允許、暫停或阻擋。
  • 在不實際執行的情況下預檢付款結果,並檢視記錄每次嘗試、判定與原因的帳本。
  • 在 Robinhood Chain 上交易:報價、滑價限制、市價、限價、TWAP 與括號訂單,以及持倉與損益。
適用情境
適合讓自主代理擁有具硬性限額的獨立帳戶,使錯誤的付款被拒絕而不是被廣播。適用於 Robinhood Chain 上的代理付款與交易,且擁有者希望每次決策都可追溯、有界線。
執行需求
透過 npm 套件的 npx 以 stdio 在本機執行,需要 Node.js 20 或更新版本。選用環境變數可設定代理身分、預設資產、金鑰檔案路徑(預設位於使用者家目錄下的金鑰檔案)與策略 JSON 路徑(預設使用內建的謹慎策略)。不需要託管 API、帳號或 API 金鑰。
安裝前請注意
它管理真實金鑰與資金流動:金鑰檔案路徑可設定,且簽章器持有私鑰,需妥善保護該檔案。付款與交易屬於寫入操作,可能花掉資金,策略檔案及其限額是主要防線。README 說明託管、資金移轉與執行僅以本機參考轉接器形式提供,未內建鏈用戶端或價格來源,因此在託付資金前應確認實際接上了什麼。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Moneo,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

Moneo

Autonomous finance for AI agents.
A wallet whose keys the model never sees, a spending policy that runs before anything is signed, and execution for markets that never close.

moneowallet.com · Quickstart · Packages · How it fits together · Status · Contributing


An agent that can only read is cheap to get wrong. An agent that can move money is not. Moneo is the layer in between: it gives an agent its own account, its own limits, and a record of every attempt, so a mistake costs a refusal instead of a balance.

Built for Robinhood Chain, where tokenized equities and USDG settle around the clock. An agent that can trade at 3am is only useful if it cannot also lose the account at 3am, which is what the guard is for.

bash
npm install @moneolabs/wallet @moneolabs/guard @moneolabs/trading

Or skip the code entirely and hand your agent host a wallet of its own — a real key, a cautious policy, and live pools on Robinhood Chain over MCP:

bash
npx @moneolabs/mcp

Quickstart

ts
import { createGuard } from "@moneolabs/guard";import { createWallet, localSigner, memoryRail, toolkit } from "@moneolabs/wallet";
// What this agent may do with money. Data, not code, and versioned.const guard = createGuard({  perTransaction: { max: "$25" },  rolling24h: { max: "$100" },  counterparties: "allowlist-only",  allow: ["x402:*", "vendor:acme"],  escalate: { above: "$50" },});
// One account per agent. The signer holds the key, the wallet holds a handle.const wallet = await createWallet({  agent: "research-agent-01",  signer: localSigner(),  rail: memoryRail(),  guard,  funding: "$500",});
await wallet.pay({ to: "x402:api.pricefeed.dev/quote", amount: "$0.04" });
// Hand the tools to your agent framework of choice.const tools = toolkit(wallet, { guard });

Two runnable examples live in examples/:

bash
node --experimental-strip-types examples/quickstart.tsnode --experimental-strip-types examples/guarded-trading.ts

Packages

PackageWhat it does
@moneolabs/walletAn account per agent. Pluggable custody and rails, an agent toolkit for MCP or function calling.
@moneolabs/guardCaps, rolling budgets, velocity limits, allowlists, and human escalation, evaluated before signing.
@moneolabs/tradingMulti-venue quotes, slippage bounds, market, limit, TWAP and bracket orders, positions and P&L.
@moneolabs/mcpMCP server over all of it: npx @moneolabs/mcp hands any agent host the guarded wallet.
@moneolabs/coreExact money arithmetic, assets, durations, clocks, price sources. Shared by the rest.

Each package works on its own. The guard is useful with no wallet at all: it will happily sit in front of a payment function you already wrote.

How it fits together

agent  │  pay / quote / trade  ▼wallet ──────► guard ──────► decision: allow | hold | block  │              │  │              └─► ledger  (every attempt, verdict and reason, blocks included)  │  ├─► signer     (holds the key; the agent never sees it)  └─► rail       (chain, processor, internal ledger)

Three properties fall out of that shape, and they are the point of the project:

A refusal is free. Policy runs between intent and signature, so a blocked payment is never broadcast and never costs a fee. check() tells you what would happen without doing it.

Money in flight is money you do not have. An allowed decision reserves budget immediately and settles or releases later. A payment that fails at the rail hands its budget back rather than leaving it stuck.

Every verdict is attributable. Decisions record which agent asked, what for, and which version of which policy answered. Policy versions are content-addressed, so two policies that differ only in key order or in how an amount was written get the same id.

Design notes

Amounts are never floats. Every amount is an integer count of minor units in a bigint. A budget that drifts by a fraction of a cent per check is a budget that eventually lets something through. parseMoney("$0.001") throws rather than silently rounding away precision you meant.

Time is injected. Rolling windows, velocity limits, and TWAP schedules all read a Clock. Pass manualClock() and a thirty minute order takes a millisecond to test. The test suite covers a twenty five hour budget rollover without waiting for one.

Refusals are values. The agent toolkit returns a blocked payment as a normal result with a reason and a hint, not as an exception. A model that gets a stack trace retries. A model that gets "this limit is set by the wallet owner, ask them to raise it" stops and says so.

Externals are interfaces. Signer, Rail, Venue, PriceSource, Approver, and DecisionLedger are all interfaces with working reference implementations. The target is Robinhood Chain, but nothing in the packages hardcodes it: a network is a string you pass and a rail is an object you supply.

What is and is not implemented

This repository is honest about its edges.

Fully implemented and useful today. The guard is complete: caps, rolling budgets, velocity, allowlists and denylists, asset and action rules, escalation, reservation and settlement, policy versioning, replay against history. There is no hosted service behind it and none is needed. The money arithmetic, the position book, and the order types are equally real.

Implemented behind an interface, with a local reference adapter. Custody ships as localSigner, a genuine Ed25519 signer whose key never leaves the process, plus remoteSigner for enclave or MPC services. Value movement ships as memoryRail, a real double-entry ledger that happens to be in memory. Execution ships as simulatedVenue, deterministic and driven by a price table you supply.

Not included. There is no hosted Moneo API, no chain client, no card issuing, and no bundled price feed. Those are the adapters you write or that ship separately.

Which also means there is no API key and no account to create. These are libraries, not a client for a service: policy is evaluated in your process, and the signer and rail are objects you pass in. The things with credentials are whatever you connect them to.

Development

bash
npm installnpm test          # 120 tests, no network, no waiting on real clocksnpm run typechecknpm run buildnpm run check     # format, types, tests, build

Requires Node 20 or newer.

License

MIT. See LICENSE.

Moneo is developer infrastructure, not a broker, bank, or investment adviser. You are responsible for the policies your agents run under and for the rails you connect.

來源:README.md,提交 7a0b446

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.4.0最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分