Skip to Content

ElizaOS

ElizaOS  is the largest open-source crypto-native agent framework. The WaaP plugin gives any Eliza agent a non-custodial wallet with two-party signing, spend limits, and Telegram approvals.

Status: In progress. The plugin is functional but not yet merged into the official ElizaOS plugin registry.

The ElizaOS plugin API has changed between versions. This guide targets ElizaOS v2. If you are on an older version, action names and configuration may differ.


Prerequisites

  • Node.js 18+
  • An ElizaOS project (see ElizaOS docs )
  • @human.tech/waap-cli installed globally
  • An active WaaP session (waap-cli signup or waap-cli login)

Install

npm install @elizaos/plugin-waap

Configure your character file

Add the WaaP plugin to your character’s plugins array and provide credentials via settings:

{ "name": "MyTradingAgent", "plugins": ["@elizaos/plugin-waap"], "settings": { "secrets": { "WAAP_EMAIL": "youragent@example.com", "WAAP_PASSWORD": "YourSecurePass!" } } }

The plugin logs in automatically at startup using these credentials. If you prefer to manage sessions manually, omit the credentials and run waap-cli login before starting the agent.


Exposed actions

The plugin registers the following actions in the Eliza runtime:

ActionDescription
WAAP_CREATE_WALLETCreate a new WaaP wallet (calls waap-cli signup)
WAAP_LOGINAuthenticate with an existing wallet (calls waap-cli login)
WAAP_SEND_TRANSACTIONBuild, sign, and broadcast a transaction (calls waap-cli send-tx)
WAAP_SIGN_MESSAGESign an arbitrary message (calls waap-cli sign-message)
WAAP_GET_BALANCECheck wallet balance on any supported chain
WAAP_REQUEST_PERMISSION_TOKENRequest a Privilege for scoped autonomous operations

Each action wraps the corresponding waap-cli command. The agent can invoke them in conversation or they can be triggered programmatically.


Wallet provider

In addition to discrete actions, the plugin registers a waap-wallet-provider that injects wallet context into the Eliza runtime. Other plugins and actions can access the wallet address and chain info without calling WaaP actions directly.

// Inside another Eliza action or evaluator: const walletContext = runtime.getProvider("waap-wallet-provider"); // { address: "0x...", chain: "evm:8453", ... }

Example: conversational trading agent

With the plugin installed, your agent can handle wallet operations in natural language:

User: What's my wallet address? Agent: Your WaaP wallet address is 0xAbc...123 on Base. User: Send 0.01 ETH to 0xRecipient on Base Agent: Sending 0.01 ETH to 0xRecipient on evm:8453... Transaction hash: 0xdef...789 User: Sign this message: "I agree to the terms" Agent: Signed. Signature: 0x456...abc

Transactions above your spend limit trigger a Telegram approval. The agent will tell the user it is waiting for approval and resume once you confirm.


Running the agent

# Start the ElizaOS runtime with your character file npx eliza start --character ./my-trading-agent.json

The plugin initializes on startup, logs in via waap-cli, and registers all actions.


Multi-chain support

The plugin supports all chains WaaP supports. Set the chain in your character settings or per-action:

{ "settings": { "WAAP_DEFAULT_CHAIN": "evm:8453", "WAAP_DEFAULT_RPC": "https://mainnet.base.org" } }

Your agent can also switch chains dynamically during conversation by specifying the chain in the action parameters.


Last updated on