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-cliinstalled globally- An active WaaP session (
waap-cli signuporwaap-cli login)
Install
npm install @elizaos/plugin-waapConfigure 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:
| Action | Description |
|---|---|
WAAP_CREATE_WALLET | Create a new WaaP wallet (calls waap-cli signup) |
WAAP_LOGIN | Authenticate with an existing wallet (calls waap-cli login) |
WAAP_SEND_TRANSACTION | Build, sign, and broadcast a transaction (calls waap-cli send-tx) |
WAAP_SIGN_MESSAGE | Sign an arbitrary message (calls waap-cli sign-message) |
WAAP_GET_BALANCE | Check wallet balance on any supported chain |
WAAP_REQUEST_PERMISSION_TOKEN | Request 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...abcTransactions 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.jsonThe 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.
Related
- CLI Commands — full
waap-clireference - Frameworks Overview — comparison of all supported frameworks
- Privileges — scoped autonomy for routine operations
- Approvals and Notifications — Telegram approval flows