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 分