Skip to main content
This guide covers setting up the Clavion plugin for ElizaOS (@clavion/plugin-eliza), which replaces the standard @elizaos/plugin-evm wallet management with ISCL’s policy-enforced, audited signing pipeline.

Overview

The Eliza plugin provides 5 actions that an ElizaOS agent can invoke through natural language:

Key Difference from plugin-evm

@elizaos/plugin-evm stores the private key in the character config (EVM_PRIVATE_KEY) and signs directly in action handlers. Clavion replaces this entirely. The agent never sees the private key — it only knows ISCL_API_URL and ISCL_WALLET_ADDRESS. All signing goes through ISCL Core’s secure pipeline.

Prerequisites

  • ElizaOS v1.7+ installed and configured
  • ISCL Core running on localhost:3100
  • A wallet imported into the ISCL keystore
  • RPC configured for your target chain(s)
  • Node.js 20+

Setup

1

Install the Plugin

If running from the Clavion monorepo:
If using as a standalone package (future npm publish):
2

Configure the Character File

Create or modify your ElizaOS character file to include the Clavion plugin:
Do not include EVM_PRIVATE_KEY. The whole point of Clavion is that private keys stay in ISCL Core, never in the agent config.

Configuration Fields

3

Start ISCL Core

4

Start the ElizaOS Agent

On startup, the ClavionService initializes:
  1. Reads ISCL_API_URL from the character secrets
  2. Creates an ISCLClient HTTP client
  3. Calls /v1/health to verify ISCL Core is reachable
  4. Logs the Core version
The walletProvider then injects wallet context into the agent’s prompt:
  1. Reads ISCL_WALLET_ADDRESS from secrets
  2. Fetches balances from ISCL Core
  3. Provides context like “Clavion Wallet: 0x… | USDC Balance: 500.00”

Plugin Components

ClavionService

The service manages the ISCLClient lifecycle:

walletProvider

Injects wallet address and balance context into the agent’s LLM prompt before each action decision:
This context helps the agent understand what assets are available when deciding how to respond to user requests.

Action Handlers

Each action follows the same pipeline:
  1. Validate — Check that ISCL_API_URL is configured
  2. Extract parameters — Use LLM template to parse user’s natural language into structured parameters (token, amount, recipient)
  3. Build TxIntent — Construct a TxIntent v1 JSON object with the extracted parameters
  4. Execute pipeline — Call approve-request then sign-and-send through the ISCLClient
  5. Return result — Report success or failure via callback

LLM Parameter Extraction

Actions use prompt templates to extract structured parameters from natural language:
The LLM handles ambiguity, unit conversion, and symbol resolution. The intent builder handles the precise schema construction.

Usage Examples

Transfer Tokens

User: “Send 50 USDC to 0xBob” Agent response: “I’ll transfer 50 USDC to 0xBob on Base. Requesting approval…” (Transaction goes through ISCL pipeline: policy check, preflight simulation, user approval, signing, broadcast) Agent response: “Transfer complete! TX: 0xabc123…”

Check Balance

User: “What’s my balance?” Agent response: “Your wallet (0xYour…) has 450.00 USDC and 0.15 ETH on Base.”

Swap Tokens

User: “Swap 0.1 WETH for USDC” Agent response: “I’ll swap 0.1 WETH for USDC via Uniswap V3 on Base. Estimated output: ~250 USDC. Requesting approval…”

Approval Handling

When ISCL Core requires user approval (based on policy rules), the action handler waits for the approval response. The timeout is 60 seconds by default.
If approval is denied or times out, the agent reports the failure to the user.

Removing plugin-evm

If your character previously used @elizaos/plugin-evm, remove it to avoid conflicts:
1

Remove the old plugin

Remove "@elizaos/plugin-evm" from the plugins array in your character file.
2

Remove the private key

Remove EVM_PRIVATE_KEY from settings.secrets.
3

Add the Clavion plugin

Add "@clavion/plugin-eliza" to the plugins array.
4

Add ISCL settings

Add ISCL_API_URL and ISCL_WALLET_ADDRESS to settings.secrets.
The two plugins are not designed to run simultaneously. Clavion replaces all wallet management functionality.

Multi-Chain Support

The plugin uses Base (chain ID 8453) as the default chain. To use other chains, the agent can specify the chain in natural language: User: “Send 1 ETH to 0xAlice on Ethereum mainnet” The LLM parameter extraction recognizes chain names and maps them to chain IDs. Ensure ISCL Core has the corresponding RPC URL configured.
Configure RPC URLs for all chains you want to support using ISCL_RPC_URL_{chainId} environment variables on ISCL Core. Supported chains: Ethereum (1), Optimism (10), Arbitrum (42161), Base (8453).

Troubleshooting

”ClavionService not initialized”

The service failed to initialize at startup. Check:
  1. Is ISCL_API_URL set in the character’s settings.secrets?
  2. Is ISCL Core running at that URL?
  3. Check the agent logs for health check errors

Agent doesn’t recognize crypto commands

Ensure the plugin is listed in the character’s plugins array. The action similes (SEND_TOKENS, SWAP_TOKENS, etc.) help the LLM match user intent to the correct action.

”Policy denied” errors

The transaction was blocked by ISCL Core’s policy engine. Check:
  • Is the token on the policy’s tokenAllowlist?
  • Is the recipient on the recipientAllowlist?
  • Does the value exceed maxValueWei?
  • Has the wallet exceeded maxTxPerHour?

Parameter extraction failures

If the agent misparses amounts or addresses, check the LLM template quality. Common issues:
  • Ambiguous token names (use addresses for precision)
  • Amounts without units (“send 100” — 100 of what?)
  • Checksummed vs. lowercase addresses

Security Model

The Eliza plugin is a Domain A adapter:
  • No key access. The plugin never sees private keys. It only knows the wallet address.
  • Full pipeline enforcement. Every transaction goes through policy evaluation, preflight simulation, and user approval.
  • Audit trail. All operations are logged with source: "eliza-adapter" for traceability.
  • ISCLClient is local-only. The HTTP client connects to ISCL Core on localhost.
Even if the ElizaOS agent is compromised (prompt injection, malicious plugin), it cannot bypass ISCL’s security gates.

References