A crypto wallet for autonomous agents. Each agent owns a Safe on Ethereum and sends with its own signature, without human approval or custody.
自律エージェントのための仮想通貨ウォレットです。エージェントごとに Ethereum の Safe を持ち、人間の承認も預かりもなしに、自分の署名だけで送金します。
If nyquist helps you, a star keeps us going.
Important
nyquist runs on Ethereum mainnet and the Sepolia testnet. It is early-stage software, and the API and the MCP tools may change. Start with small amounts: sends through nyquist are capped at $100 of ETH each and $500 a day.
- On the machine where your agent runs, create the wallet and register it with your agent. Choose a network, then Claude Code, Hermes Agent, OpenClaw, Grok Bot, or another MCP client.
npm create nyquist- Send ETH to the Safe address it shows, on the same network: what you want to send, plus gas. The first send also creates the Safe. On Sepolia, add 0.002 ETH for that.
- Start a new session of your agent. In Claude Code, check that the server is connected. It is
nyquist-mainneton mainnet andnyquiston Sepolia.
claude mcp get nyquist-mainnetIf it shows Status: ✔ Connected, your agent can use the wallet.
Tip
The keys are stored in ~/.nyquist. Running npm create nyquist again reuses them, so you get the same Safe.
Try asking:
- "Show my nyquist wallet."
- "Send 0.001 ETH to 0x…"
- "Did that transaction go through?"
Only the agent can move the funds
The Safe has one owner, the agent's key, with a threshold of 1. nyquist runs a relayer that pays gas up front, but the relayer is never an owner, so neither nyquist nor anyone who breaks into it can move the funds.
| Key | Where it lives | What it does |
|---|---|---|
| secp256k1 | The agent's machine | Signs Safe transactions as the sole owner |
| Ed25519 | The agent's machine | Signs API requests |
| Relayer key | nyquist | Pays gas. It cannot sign for the Safe |
Agents sign up without a human
Every API request carries an RFC 9421 HTTP Message Signature made with the agent's Ed25519 key. The key's RFC 7638 thumbprint is the agent's ID, so there are no accounts, passwords, or OAuth flows to set up.
Gas is paid up front and refunded by the Safe
The relayer submits each transaction and is refunded by the Safe's built-in payment, in the same transaction, for the gas it actually used. The agent never needs a separate gas balance. The first send also creates the Safe. On mainnet, that happens in the same transaction and its gas is part of the refund, so it costs what gas costs at that moment. On Sepolia, the Safe pays a fixed 0.002 ETH creation fee. On mainnet, nyquist adds a 5% fee to the refund; the amount sent is never touched.
The agent does not trust the server
Before signing, the agent checks the server's answers on its own machine and stops if anything differs.
| Check | How |
|---|---|
| Safe address | Recomputed from the agent's key with CREATE2 |
| What is signed | The Safe transaction hash is rebuilt from the request |
| Nonce | Read from the chain |
| Gas and refund | Bounded by the published formula, the agent's own RPC, and NYQUIST_MAX_FEE_WEI; the refund can only go to the published relayer |
| Server messages | Replaced with fixed local text, so the server cannot write instructions to the model |
MCP tools
| Tool | Purpose |
|---|---|
nyquist_setup |
Creates the keys and registers the wallet. Returns the same wallet every time |
nyquist_wallet |
Returns the Safe address, balance, owners, and whether nyquist is relaying |
nyquist_send |
Sends ETH or calls a contract. The first send creates the Safe |
nyquist_transaction |
Returns the status of a send |
Packages
| Package | Purpose |
|---|---|
create-nyquist |
npm create nyquist. Creates the wallet and registers it with your agent |
nyquist-mcp |
The stdio MCP server that holds the keys and signs |
Network and contracts
| Item | Ethereum mainnet | Sepolia testnet |
|---|---|---|
| Chain ID | 1 | 11155111 |
NYQUIST_ENV |
mainnet |
production (default) |
| Relayer | 0xF6389d891c5761fE74DC3474272eA7C52A9ae5F2 |
0x2d7A951dbDFeA17E2c3EecA87cFde15a205c1174 |
| nyquist's fee | 5% of the gas refund | None |
| Send limits | $100 of ETH per send, $500 a day | Same |
| API | OpenAPI document | OpenAPI document |
Both use Safe v1.4.1, singleton 0x41675C099F32341bf84BFc5382aF534df5C7461a. The limits count the ETH a send moves, priced with Chainlink's ETH/USD feed; token transfers are not counted.
nyquist が役に立ったら、スターを付けてもらえると励みになります。
Important
nyquist は Ethereum のメインネットと Sepolia テストネットで動きます。早期段階のソフトウェアなので、API と MCP のツールは変わることがあります。少額から使ってください。nyquist を通る送金は、ETH で1回 $100、1日 $500 までです。
- エージェントが動いている端末で、ウォレットを作ってエージェントに登録します。ネットワークを選び、Claude Code、Hermes Agent、OpenClaw、Grok Bot、その他の MCP クライアントから選びます。
npm create nyquist- 同じネットワークで、表示された Safe のアドレスに ETH を送ります。送りたい額とガス代を合わせた額以上を入れてください。最初の送金で Safe も作ります。Sepolia では、その費用の 0.002 ETH も足してください。
- エージェントを新しく立ち上げます。Claude Code なら、接続できているかを確かめます。名前は、メインネットでは
nyquist-mainnet、Sepolia ではnyquistです。
claude mcp get nyquist-mainnetStatus: ✔ Connected と出れば、エージェントがウォレットを使えます。
Tip
鍵は ~/.nyquist に保存されます。npm create nyquist をもう一度実行しても同じ鍵を使うので、同じ Safe になります。
次のように頼んでみてください。
- 「nyquist のウォレットを見せて」
- 「0.001 ETH を 0x… に送って」
- 「さっきの送金は確定した?」
資金を動かせるのはエージェントだけです
Safe のオーナーはエージェントの鍵1つだけで、閾値は1です。nyquist はガス代を立て替えるリレイヤーを動かしますが、リレイヤーはオーナーではないので、nyquist も、nyquist に侵入した人も、資金を動かせません。
| 鍵 | 置き場所 | 役割 |
|---|---|---|
| secp256k1 | エージェントの端末 | 唯一のオーナーとして Safe の tx に署名する |
| Ed25519 | エージェントの端末 | API へのリクエストに署名する |
| リレイヤーの鍵 | nyquist | ガス代を払う。Safe の tx には署名できない |
人間を介さずに登録できます
API へのリクエストには、エージェントの Ed25519 の鍵で RFC 9421 の HTTP Message Signature を付けます。鍵の RFC 7638 のサムプリントがエージェントの ID になるので、アカウント、パスワード、OAuth の設定はありません。
ガス代は立て替えて、Safe から払い戻します
リレイヤーが tx を送り、実際に使ったガスの分を、同じ tx の中で Safe の払い戻しの仕組みで受け取ります。エージェントがガス代を別に持つ必要はありません。最初の送金では Safe も作ります。メインネットでは同じ tx の中で作り、そのガス代も払い戻しに含めるので、そのときのガス代だけで済みます。Sepolia では、決まった作成費用 0.002 ETH を Safe から払います。メインネットでは、払い戻しに nyquist の手数料 5% を上乗せします。送る額には手を付けません。
エージェントはサーバーを信じきりません
署名する前に、エージェントはサーバーの答えを手元で確かめ、食い違えば止めます。
| 確かめること | 方法 |
|---|---|
| Safe のアドレス | エージェントの鍵から CREATE2 で計算し直す |
| 署名する内容 | 依頼から Safe の tx のハッシュを組み立て直す |
| nonce | チェーンから読む |
| ガス代と払い戻し | 公開している計算式、自分の RPC、NYQUIST_MAX_FEE_WEI の範囲に収める。払い戻し先は公開しているリレイヤーだけ |
| サーバーの文 | 手元で決めた文に置き換え、サーバーがモデルに指示を書き込めないようにする |
MCP ツール
| ツール | 役割 |
|---|---|
nyquist_setup |
鍵を作り、ウォレットを登録します。何度呼んでも同じウォレットを返します |
nyquist_wallet |
Safe のアドレス、残高、オーナー、nyquist が中継しているかを返します |
nyquist_send |
ETH を送るか、コントラクトを呼びます。最初の送金で Safe を作ります |
nyquist_transaction |
送金の状態を返します |
パッケージ
| パッケージ | 役割 |
|---|---|
create-nyquist |
npm create nyquist。ウォレットを作り、エージェントに登録します |
nyquist-mcp |
鍵を持って署名する stdio の MCP サーバーです |
ネットワークとコントラクト
| 項目 | Ethereum メインネット | Sepolia テストネット |
|---|---|---|
| chain ID | 1 | 11155111 |
NYQUIST_ENV |
mainnet |
production(既定) |
| リレイヤー | 0xF6389d891c5761fE74DC3474272eA7C52A9ae5F2 |
0x2d7A951dbDFeA17E2c3EecA87cFde15a205c1174 |
| nyquist の手数料 | ガス代の払い戻しの 5% | なし |
| 送金の上限 | ETH で1回 $100、1日 $500 | 同じ |
| API | OpenAPI の文書 | OpenAPI の文書 |
どちらも Safe v1.4.1 で、singleton は 0x41675C099F32341bf84BFc5382aF534df5C7461a です。上限は、送金で動く ETH を Chainlink の ETH/USD で換算して数えます。トークンの送金は数えません。