Aomi Transact
Overview
Aomi Transact drives the aomi TypeScript CLI to build natural-language crypto agents and web3 assistants. It composes calldata, fork-simulates transactions as a batch, and stages wallet requests for explicit user signing — non-custodial throughout. Current chain metadata includes Ethereum, Polygon, Arbitrum, Base, Optimism, Sepolia, Linea, Monad, Monad Testnet, and local Anvil. The npm CLI is the production/end-user surface; the Rust aomi-cli in product-mono is an in-process dev/test CLI with different signing gates. For deep references, see commands.md, workflows.md, gotchas.md, account-abstraction.md, apps.md, examples.md, thread.md, drain-vectors.md, troubleshooting.md.
Prerequisites
- Node.js 18+ with npm or npx
@aomi-labs/client v0.1.42 or newer: npm install -g @aomi-labs/client@latest
- For EVM signing: a 0x-prefixed private key via
aomi wallet dev-key, --private-key, or PRIVATE_KEY
- For Solana sign-only flows: a base58 or JSON keypair via
aomi wallet dev-key --solana, --solana-private-key, or SOLANA_PRIVATE_KEY
- Optional:
AOMI_ACCOUNT_BEARER / --account-bearer for authenticated account-bound requests
- Optional: Alchemy or Pimlico credentials for direct account-abstraction providers; otherwise the CLI tries the backend Alchemy proxy path
Instructions
- Detect or install the CLI:
aomi --version 2>/dev/null || npx @aomi-labs/client@latest --version
- Start a new thread:
aomi chat "<task>" --new-session
- Inspect queue:
aomi tx list
- For multi-step flows, simulate first:
aomi tx simulate tx-1 tx-2
- Sign:
aomi tx sign tx-1
- Verify:
aomi thread status or aomi thread log
For the full procedure (read-only requests, building wallet requests, signing policy, batch simulation, secret ingestion), see workflows.md.
Examples
aomi chat "what is the price of ETH?" --new-session
aomi chat "swap 1 ETH for USDC" --new-session --public-key 0xYourAddress --chain 1
aomi tx list && aomi tx simulate tx-1 tx-2 && aomi tx sign tx-1 tx-2
aomi chat "stake 0.5 ETH on Lido" --app lido --chain 1 --new-session
Four end-to-end walkthroughs (approve+swap, lending, bridging, staking) in examples.md. Per-app first-turn examples (Khalani, 0x, Polymarket, Binance, Neynar) in apps.md.
Output
aomi chat: agent response or ⚡ Wallet request queued: tx-N
aomi tx list: table of pending/signed tx ids with batch_status
aomi tx simulate: per-step success/failure, revert reason, gas usage
aomi tx sign: transaction hash and on-chain confirmation
Error Handling
| Error |
Cause |
Solution |
insufficient funds for transfer |
EOA has no native gas |
Fund EOA or configure AA sponsorship |
AA execution failed with all modes |
AA path failed after mode fallback |
Read the per-mode errors; use --eoa only if the user accepts EOA gas/payment semantics |
stateful: false in simulation |
Wrong batch order |
Reorder tx ids to match execution dependency |
RPC 401/429 |
Rate-limited or missing key |
Set --rpc-url to authenticated endpoint |
| No tx queued after chat |
Agent returned quote first |
Run aomi tx list; send a confirmation reply |
Orphaned tx-N in list |
Previous simulation failed |
Only sign txs with batch_status: passed |
Failed to get apps/models: HTTP 404 |
Public backend does not expose that introspection route |
Treat app list/model list as backend-dependent; do not block chat/sign flows on it |
Full troubleshooting in troubleshooting.md.
Safety Justification
This skill is risk_tier: L2 because it can sign and broadcast on-chain transactions. The permissions manifest enforces least privilege:
- Shell allowlist scopes execution to
aomi and npx @aomi-labs/client@latest only — no arbitrary subprocesses.
- Network allowlist restricts outbound traffic to
api.aomi.dev. User-supplied --rpc-url endpoints are resolved by the CLI itself; operators must review them before allowing signing.
- File scope is read+write to
~/.aomi/ only; identity files (SOUL.md, MEMORY.md, AGENTS.md) are deny-listed against writes per OWASP AST03 mitigation #3.
- No blind signing. Multi-step flows go through
aomi tx simulate on a forked chain before aomi tx sign. Drain-vector calldata fields (recipient, onBehalfOf, mintRecipient, _to) are blocked at simulation time when they do not equal msg.sender — see drain-vectors.md.
- Opaque credentials. The skill never fabricates, derives, or echoes credential values; setup commands run only when the user explicitly asks and supplies the value in this turn. Full rules in gotchas.md → Hard Rules.
When to Use
- The user wants to chat with the Aomi agent from the terminal.
- The user wants balances, prices, routes, quotes, or transaction status.
- The user wants to build, simulate, confirm, sign, or broadcast wallet requests.
- The user wants to inspect or switch apps, models, chains, or threads.
- The user wants to inspect or change Account Abstraction settings.
- The user wants to authenticate a CLI account with
aomi login, inspect it with aomi account, or inspect linked wallets with aomi wallet ls.
- The user wants to build a new app from an API spec or SDK — use the companion skill aomi-build.
Command Surface
aomi --prompt "<message>" Send one prompt and exit
aomi chat <message> Send a message
aomi tx list|simulate|sign
aomi thread list|new|resume|delete|status|log|events|close
aomi model list|current|set
aomi app list|current
aomi chain list|current|set
aomi wallet ls|dev-key|set-mode
aomi login|logout
aomi account
aomi cron ls|show|cancel
aomi config current|set-backend
aomi secret list|clear|add
aomi deploy
Full command reference, flags, and env vars in commands.md.
Resources
Source: jeremylongshore/claude-code-plugins-plus-skills → plugins/crypto/aomi/skills/transact/SKILL.md
1---2name: aomi-transact3description: > Build natural-language crypto agents, web3 assistants, and trading bots that read and write EVM chain state. Aomi turns prompts ("swap 1 ETH for USDC", "open a 3x GMX long", "bet $100 on Polymarket") into wallet-signed transactions on Ethereum, Base, Arbitrum, Optimism, Polygon, Linea — non-custodial, fork-simulated. Use when the user wants a crypto/DeFi agent, AI trading/wallet assistant, or on-chain execution against Uniswap, Aave, Lido, GMX, Hyperliquid, Polymarket, Binance, OKX, or 40+ other protocols. Trigger with prompts about swaps, lending, bridging, staking, perps, prediction markets, or any DeFi/CEX action needing a wallet signature. Account-abstraction first with EIP-7702/4337 and EOA fallback. MUST NOT fabricate or echo credentials; values reach the CLI only when the user explicitly supplied them.4---5
6
7# Aomi Transact
8
9## Overview
10
11Aomi Transact drives the `aomi` TypeScript CLI to build natural-language crypto agents and web3 assistants. It composes calldata, fork-simulates transactions as a batch, and stages wallet requests for explicit user signing — non-custodial throughout. Current chain metadata includes Ethereum, Polygon, Arbitrum, Base, Optimism, Sepolia, Linea, Monad, Monad Testnet, and local Anvil. The npm CLI is the production/end-user surface; the Rust `aomi-cli` in `product-mono` is an in-process dev/test CLI with different signing gates. For deep references, see [commands.md](references/commands.md), [workflows.md](references/workflows.md), [gotchas.md](references/gotchas.md), [account-abstraction.md](references/account-abstraction.md), [apps.md](references/apps.md), [examples.md](references/examples.md), [thread.md](references/thread.md), [drain-vectors.md](references/drain-vectors.md), [troubleshooting.md](references/troubleshooting.md).
12
13## Prerequisites
14
15- Node.js 18+ with npm or npx
16- `@aomi-labs/client` v0.1.42 or newer: `npm install -g @aomi-labs/client@latest`
17- For EVM signing: a 0x-prefixed private key via `aomi wallet dev-key`, `--private-key`, or `PRIVATE_KEY`
18- For Solana sign-only flows: a base58 or JSON keypair via `aomi wallet dev-key --solana`, `--solana-private-key`, or `SOLANA_PRIVATE_KEY`
19- Optional: `AOMI_ACCOUNT_BEARER` / `--account-bearer` for authenticated account-bound requests
20- Optional: Alchemy or Pimlico credentials for direct account-abstraction providers; otherwise the CLI tries the backend Alchemy proxy path
21
22## Instructions
23
241. Detect or install the CLI: `aomi --version 2>/dev/null || npx @aomi-labs/client@latest --version`
252. Start a new thread: `aomi chat "<task>" --new-session`
263. Inspect queue: `aomi tx list`
274. For multi-step flows, simulate first: `aomi tx simulate tx-1 tx-2`
285. Sign: `aomi tx sign tx-1`
296. Verify: `aomi thread status` or `aomi thread log`
30
31For the full procedure (read-only requests, building wallet requests, signing policy, batch simulation, secret ingestion), see [workflows.md](references/workflows.md).
32
33## Examples
34
35```bash
36aomi chat "what is the price of ETH?" --new-session
37aomi chat "swap 1 ETH for USDC" --new-session --public-key 0xYourAddress --chain 1
38aomi tx list && aomi tx simulate tx-1 tx-2 && aomi tx sign tx-1 tx-2
39aomi chat "stake 0.5 ETH on Lido" --app lido --chain 1 --new-session
40```
41
42Four end-to-end walkthroughs (approve+swap, lending, bridging, staking) in [examples.md](references/examples.md). Per-app first-turn examples (Khalani, 0x, Polymarket, Binance, Neynar) in [apps.md](references/apps.md#usage-examples).
43
44## Output
45
46- `aomi chat`: agent response or `⚡ Wallet request queued: tx-N`
47- `aomi tx list`: table of pending/signed tx ids with `batch_status`
48- `aomi tx simulate`: per-step success/failure, revert reason, gas usage
49- `aomi tx sign`: transaction hash and on-chain confirmation
50
51## Error Handling
52
53| Error | Cause | Solution |
54|-------|-------|----------|
55| `insufficient funds for transfer` | EOA has no native gas | Fund EOA or configure AA sponsorship |
56| `AA execution failed with all modes` | AA path failed after mode fallback | Read the per-mode errors; use `--eoa` only if the user accepts EOA gas/payment semantics |
57| `stateful: false` in simulation | Wrong batch order | Reorder tx ids to match execution dependency |
58| `RPC 401`/`429` | Rate-limited or missing key | Set `--rpc-url` to authenticated endpoint |
59| No tx queued after chat | Agent returned quote first | Run `aomi tx list`; send a confirmation reply |
60| Orphaned `tx-N` in list | Previous simulation failed | Only sign txs with `batch_status: passed` |
61| `Failed to get apps/models: HTTP 404` | Public backend does not expose that introspection route | Treat `app list`/`model list` as backend-dependent; do not block chat/sign flows on it |
62
63Full troubleshooting in [troubleshooting.md](references/troubleshooting.md).
64
65## Safety Justification
66
67This skill is `risk_tier: L2` because it can sign and broadcast on-chain transactions. The permissions manifest enforces least privilege:
68
69- **Shell allowlist** scopes execution to `aomi` and `npx @aomi-labs/client@latest` only — no arbitrary subprocesses.
70- **Network allowlist** restricts outbound traffic to `api.aomi.dev`. User-supplied `--rpc-url` endpoints are resolved by the CLI itself; operators must review them before allowing signing.
71- **File scope** is read+write to `~/.aomi/` only; identity files (`SOUL.md`, `MEMORY.md`, `AGENTS.md`) are deny-listed against writes per OWASP AST03 mitigation #3.
72- **No blind signing.** Multi-step flows go through `aomi tx simulate` on a forked chain before `aomi tx sign`. Drain-vector calldata fields (`recipient`, `onBehalfOf`, `mintRecipient`, `_to`) are blocked at simulation time when they do not equal `msg.sender` — see [drain-vectors.md](references/drain-vectors.md).
73- **Opaque credentials.** The skill never fabricates, derives, or echoes credential values; setup commands run only when the user explicitly asks and supplies the value in this turn. Full rules in [gotchas.md → Hard Rules](references/gotchas.md#hard-rules).
74
75## When to Use
76
77- The user wants to chat with the Aomi agent from the terminal.
78- The user wants balances, prices, routes, quotes, or transaction status.
79- The user wants to build, simulate, confirm, sign, or broadcast wallet requests.
80- The user wants to inspect or switch apps, models, chains, or threads.
81- The user wants to inspect or change Account Abstraction settings.
82- The user wants to authenticate a CLI account with `aomi login`, inspect it with `aomi account`, or inspect linked wallets with `aomi wallet ls`.
83- The user wants to build a new app from an API spec or SDK — use the companion skill **aomi-build**.
84
85## Command Surface
86
87```
88aomi --prompt "<message>" Send one prompt and exit
89aomi chat <message> Send a message
90aomi tx list|simulate|sign
91aomi thread list|new|resume|delete|status|log|events|close
92aomi model list|current|set
93aomi app list|current
94aomi chain list|current|set
95aomi wallet ls|dev-key|set-mode
96aomi login|logout
97aomi account
98aomi cron ls|show|cancel
99aomi config current|set-backend
100aomi secret list|clear|add
101aomi deploy
102```
103
104Full command reference, flags, and env vars in [commands.md](references/commands.md).
105
106## Resources
107
108- Source repository: https://github.com/aomi-labs/skills/tree/main/aomi-transact
109- npm package: https://www.npmjs.com/package/@aomi-labs/client
110- Companion skill for adding new protocol integrations: [aomi-build](https://github.com/aomi-labs/skills/tree/main/aomi-build)
111- Account abstraction deep-dive: [references/account-abstraction.md](references/account-abstraction.md)
112- Drain-vector catalog (security): [references/drain-vectors.md](references/drain-vectors.md)
113- End-to-end transaction examples: [references/examples.md](references/examples.md)
114- Troubleshooting playbook: [references/troubleshooting.md](references/troubleshooting.md)
115- OWASP AST03 (Over-Privileged Skills) spec: https://owasp.org/www-project-agentic-skills-top-10/ast03
116- Anthropic skill spec: https://docs.claude.com/en/docs/claude-code/skills
117
118---
119
120**Source:** [`jeremylongshore/claude-code-plugins-plus-skills`](https://github.com/jeremylongshore/claude-code-plugins-plus-skills) → `plugins/crypto/aomi/skills/transact/SKILL.md`