@aomi-labs/client 0.1.13 → 0.1.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -63,30 +63,30 @@ new Session(clientOptions: AomiClientOptions, sessionOptions?: SessionOptions)
63
63
  new Session(client: AomiClient, sessionOptions?: SessionOptions)
64
64
  ```
65
65
 
66
- | Option | Default | Description |
67
- |--------|---------|-------------|
68
- | `sessionId` | `crypto.randomUUID()` | Thread/session ID |
69
- | `namespace` | `"default"` | Backend namespace |
70
- | `publicKey` | — | Wallet address |
71
- | `apiKey` | — | API key for private namespaces |
72
- | `userState` | — | Arbitrary user state sent with requests |
73
- | `pollIntervalMs` | `500` | Polling interval in ms |
74
- | `logger` | — | Pass `console` for debug output |
66
+ | Option | Default | Description |
67
+ | ---------------- | --------------------- | --------------------------------------- |
68
+ | `sessionId` | `crypto.randomUUID()` | Thread/session ID |
69
+ | `namespace` | `"default"` | Backend namespace |
70
+ | `publicKey` | — | Wallet address |
71
+ | `apiKey` | — | API key for private namespaces |
72
+ | `userState` | — | Arbitrary user state sent with requests |
73
+ | `pollIntervalMs` | `500` | Polling interval in ms |
74
+ | `logger` | — | Pass `console` for debug output |
75
75
 
76
76
  #### Methods
77
77
 
78
- | Method | Description |
79
- |--------|-------------|
80
- | `send(message)` | Send a message, wait for completion, return `{ messages, title }` |
81
- | `sendAsync(message)` | Send without waiting — poll in background, listen via events |
82
- | `resolve(id, result)` | Resolve a pending wallet request |
83
- | `reject(id, reason?)` | Reject a pending wallet request |
84
- | `interrupt()` | Cancel current processing |
85
- | `close()` | Stop polling, unsubscribe SSE, clean up |
86
- | `getMessages()` | Current messages |
87
- | `getTitle()` | Current session title |
88
- | `getPendingRequests()` | Pending wallet requests |
89
- | `getIsProcessing()` | Whether the agent is processing |
78
+ | Method | Description |
79
+ | ---------------------- | ----------------------------------------------------------------- |
80
+ | `send(message)` | Send a message, wait for completion, return `{ messages, title }` |
81
+ | `sendAsync(message)` | Send without waiting — poll in background, listen via events |
82
+ | `resolve(id, result)` | Resolve a pending wallet request |
83
+ | `reject(id, reason?)` | Reject a pending wallet request |
84
+ | `interrupt()` | Cancel current processing |
85
+ | `close()` | Stop polling, unsubscribe SSE, clean up |
86
+ | `getMessages()` | Current messages |
87
+ | `getTitle()` | Current session title |
88
+ | `getPendingRequests()` | Pending wallet requests |
89
+ | `getIsProcessing()` | Whether the agent is processing |
90
90
 
91
91
  #### Events
92
92
 
@@ -119,11 +119,15 @@ When installed globally or in a project, the executable name is `aomi`.
119
119
  For one-off usage, run commands via `npx @aomi-labs/client ...`.
120
120
 
121
121
  ```bash
122
+ npx @aomi-labs/client --version # print installed CLI version
122
123
  npx @aomi-labs/client chat "swap 1 ETH for USDC" # talk to the agent
123
124
  npx @aomi-labs/client chat "swap 1 ETH for USDC" --model claude-sonnet-4
124
125
  npx @aomi-labs/client chat "swap 1 ETH" --verbose # stream tool calls + responses live
125
- npx @aomi-labs/client models # list available models
126
+ npx @aomi-labs/client app list # list available apps
127
+ npx @aomi-labs/client model list # list available models
126
128
  npx @aomi-labs/client model set claude-sonnet-4 # switch the current session model
129
+ npx @aomi-labs/client secret list # list configured secret handles
130
+ npx @aomi-labs/client --secret ALCHEMY_API_KEY=... # ingest a secret for the active session
127
131
  npx @aomi-labs/client log # show full conversation history
128
132
  npx @aomi-labs/client tx # list pending + signed txs
129
133
  npx @aomi-labs/client sign tx-1 # sign a specific pending tx
@@ -150,7 +154,7 @@ session don't need it again.
150
154
  The CLI can discover and switch backend models for the active session:
151
155
 
152
156
  ```bash
153
- $ npx @aomi-labs/client models
157
+ $ npx @aomi-labs/client model list
154
158
  claude-sonnet-4
155
159
  gpt-5
156
160
 
@@ -164,6 +168,29 @@ $ npx @aomi-labs/client chat "hello" --model claude-sonnet-4
164
168
  successful backend update. `aomi chat --model ...` applies the requested model
165
169
  before sending the message and updates that persisted state as well.
166
170
 
171
+ ### Secret management
172
+
173
+ The CLI supports per-session secret ingestion. This lets the backend use opaque
174
+ handles instead of raw secret values:
175
+
176
+ ```bash
177
+ $ npx @aomi-labs/client --secret ALCHEMY_API_KEY=sk_live_123
178
+ Configured 1 secret for session 7f8a...
179
+ ALCHEMY_API_KEY $SECRET:ALCHEMY_API_KEY
180
+
181
+ $ npx @aomi-labs/client --secret ALCHEMY_API_KEY=sk_live_123 chat "simulate a swap on Base"
182
+ ```
183
+
184
+ You can inspect or clear the current session's secret handles:
185
+
186
+ ```bash
187
+ $ npx @aomi-labs/client secret list
188
+ ALCHEMY_API_KEY $SECRET:ALCHEMY_API_KEY
189
+
190
+ $ npx @aomi-labs/client secret clear
191
+ Cleared all secrets for the active session.
192
+ ```
193
+
167
194
  ### Transaction flow
168
195
 
169
196
  The backend builds transactions; the CLI persists and signs them:
@@ -252,17 +279,19 @@ $ npx @aomi-labs/client log
252
279
 
253
280
  All config can be passed as flags (which take priority over env vars):
254
281
 
255
- | Flag | Env Variable | Default | Description |
256
- |------|-------------|---------|-------------|
257
- | `--backend-url` | `AOMI_BASE_URL` | `https://api.aomi.dev` | Backend URL |
258
- | `--api-key` | `AOMI_API_KEY` | — | API key for non-default apps |
259
- | `--app` | `AOMI_APP` | `default` | App |
260
- | `--model` | `AOMI_MODEL` | — | Model rig to apply before chat |
261
- | `--public-key` | `AOMI_PUBLIC_KEY` | — | Wallet address (tells agent your wallet) |
262
- | `--private-key` | `PRIVATE_KEY` | — | Hex private key for `aomi sign` |
263
- | `--rpc-url` | `CHAIN_RPC_URL` | — | RPC URL for transaction submission |
264
- | `--chain` | `AOMI_CHAIN_ID` | `1` | Chain ID (1, 137, 42161, 8453, 10, 11155111) |
265
- | `--verbose`, `-v` | | | Stream tool calls and agent responses live |
282
+ | Flag | Env Variable | Default | Description |
283
+ | ----------------------- | ----------------- | ---------------------- | -------------------------------------------- |
284
+ | `--backend-url` | `AOMI_BASE_URL` | `https://api.aomi.dev` | Backend URL |
285
+ | `--api-key` | `AOMI_API_KEY` | — | API key for non-default apps |
286
+ | `--app` | `AOMI_APP` | `default` | App |
287
+ | `--model` | `AOMI_MODEL` | — | Model rig to apply before chat |
288
+ | `--secret <NAME=value>` | | — | Ingest secret values for the active session |
289
+ | `--public-key` | `AOMI_PUBLIC_KEY` | — | Wallet address (tells agent your wallet) |
290
+ | `--private-key` | `PRIVATE_KEY` | — | Hex private key for `aomi sign` |
291
+ | `--rpc-url` | `CHAIN_RPC_URL` | | RPC URL for transaction submission |
292
+ | `--chain` | `AOMI_CHAIN_ID` | `1` | Chain ID (1, 137, 42161, 8453, 10, 11155111) |
293
+ | `--verbose`, `-v` | — | — | Stream tool calls and agent responses live |
294
+ | `--version`, `-V` | — | — | Print the installed CLI version |
266
295
 
267
296
  ```bash
268
297
  # Use a custom backend
@@ -293,14 +322,16 @@ The CLI is **not** a long-running process — each command starts, runs, and
293
322
  exits. Conversation history lives on the backend. Between invocations, the CLI
294
323
  persists local state under `AOMI_STATE_DIR` or `~/.aomi` by default:
295
324
 
296
- | Field | Purpose |
297
- |-------|---------|
298
- | `sessionId` | Which conversation to continue |
299
- | `model` | Last successfully applied model for the session |
300
- | `publicKey` | Wallet address (from `--public-key`) |
301
- | `chainId` | Active chain ID (from `--chain`) |
302
- | `pendingTxs` | Unsigned transactions waiting for `aomi sign <id>` |
303
- | `signedTxs` | Completed transactions with hashes/signatures |
325
+ | Field | Purpose |
326
+ | --------------- | ------------------------------------------------------ |
327
+ | `sessionId` | Which conversation to continue |
328
+ | `clientId` | Stable client identity used for session secret handles |
329
+ | `model` | Last successfully applied model for the session |
330
+ | `publicKey` | Wallet address (from `--public-key`) |
331
+ | `chainId` | Active chain ID (from `--chain`) |
332
+ | `secretHandles` | Opaque handles returned for ingested secrets |
333
+ | `pendingTxs` | Unsigned transactions waiting for `aomi sign <id>` |
334
+ | `signedTxs` | Completed transactions with hashes/signatures |
304
335
 
305
336
  ```
306
337
  $ npx @aomi-labs/client chat "hello" # creates session, saves sessionId
package/dist/cli.js CHANGED
@@ -19,6 +19,46 @@ var __spreadValues = (a, b) => {
19
19
  };
20
20
  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
21
21
 
22
+ // package.json
23
+ var package_default = {
24
+ name: "@aomi-labs/client",
25
+ version: "0.1.14",
26
+ description: "Platform-agnostic TypeScript client for the Aomi backend API",
27
+ type: "module",
28
+ main: "./dist/index.cjs",
29
+ module: "./dist/index.js",
30
+ types: "./dist/index.d.ts",
31
+ bin: {
32
+ aomi: "./dist/cli.js"
33
+ },
34
+ exports: {
35
+ ".": {
36
+ import: {
37
+ types: "./dist/index.d.ts",
38
+ default: "./dist/index.js"
39
+ },
40
+ require: {
41
+ types: "./dist/index.d.cts",
42
+ default: "./dist/index.cjs"
43
+ }
44
+ }
45
+ },
46
+ files: [
47
+ "dist",
48
+ "skills",
49
+ "README.md"
50
+ ],
51
+ scripts: {
52
+ build: "tsup",
53
+ "clean:dist": "rm -rf dist"
54
+ },
55
+ dependencies: {
56
+ "@getpara/aa-alchemy": "2.18.0",
57
+ "@getpara/aa-pimlico": "2.18.0",
58
+ viem: "^2.40.3"
59
+ }
60
+ };
61
+
22
62
  // src/cli/errors.ts
23
63
  var CliExit = class extends Error {
24
64
  constructor(code) {
@@ -95,7 +135,7 @@ function parseAAMode(value) {
95
135
  }
96
136
  function parseArgs(argv) {
97
137
  const raw = argv.slice(2);
98
- const command = raw[0] && !raw[0].startsWith("--") ? raw[0] : void 0;
138
+ const command = raw[0] && !raw[0].startsWith("-") ? raw[0] : void 0;
99
139
  const rest = command ? raw.slice(1) : raw;
100
140
  const positional = [];
101
141
  const flags = {};
@@ -3665,6 +3705,7 @@ async function signCommand(runtime) {
3665
3705
  }
3666
3706
 
3667
3707
  // src/cli/main.ts
3708
+ var CLI_VERSION = package_default.version;
3668
3709
  function printUsage() {
3669
3710
  console.log(`
3670
3711
  aomi \u2014 CLI client for Aomi on-chain agent
@@ -3691,6 +3732,7 @@ Usage:
3691
3732
  aomi status Show current session state
3692
3733
  aomi events List system events
3693
3734
  aomi close Close the current session
3735
+ aomi --version Print the installed CLI version
3694
3736
 
3695
3737
  Options:
3696
3738
  --backend-url <url> Backend URL (default: https://api.aomi.dev)
@@ -3701,6 +3743,7 @@ Options:
3701
3743
  --private-key <key> Hex private key for signing
3702
3744
  --rpc-url <url> RPC URL for transaction submission
3703
3745
  --verbose, -v Show tool calls and streaming output (for chat)
3746
+ --version, -V Print the installed CLI version
3704
3747
 
3705
3748
  Sign options:
3706
3749
  aomi sign <tx-id> --eoa
@@ -3734,8 +3777,8 @@ Environment (overridden by flags):
3734
3777
  `.trim());
3735
3778
  }
3736
3779
  async function main(runtime) {
3737
- var _a3;
3738
- const command = (_a3 = runtime.parsed.command) != null ? _a3 : runtime.parsed.flags["help"] || runtime.parsed.flags["h"] ? "help" : void 0;
3780
+ var _a3, _b;
3781
+ const command = (_b = (_a3 = runtime.parsed.command) != null ? _a3 : runtime.parsed.flags["version"] || runtime.parsed.flags["V"] ? "version" : void 0) != null ? _b : runtime.parsed.flags["help"] || runtime.parsed.flags["h"] ? "help" : void 0;
3739
3782
  switch (command) {
3740
3783
  case "chat":
3741
3784
  await chatCommand(runtime);
@@ -3770,6 +3813,9 @@ async function main(runtime) {
3770
3813
  case "close":
3771
3814
  closeCommand(runtime);
3772
3815
  break;
3816
+ case "version":
3817
+ console.log(CLI_VERSION);
3818
+ break;
3773
3819
  case "help":
3774
3820
  printUsage();
3775
3821
  break;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aomi-labs/client",
3
- "version": "0.1.13",
3
+ "version": "0.1.14",
4
4
  "description": "Platform-agnostic TypeScript client for the Aomi backend API",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -5,13 +5,14 @@ description: >
5
5
  check balances or prices, build wallet requests, confirm quotes or routes,
6
6
  sign transactions or EIP-712 payloads, switch apps or chains, or execute
7
7
  swaps, transfers, and DeFi actions on-chain. Covers Aomi chat, transaction
8
- review, AA-first signing with automatic EOA fallback, and session controls.
9
- compatibility: "Requires @aomi-labs/client (`npm install -g @aomi-labs/client`). CLI executable is `aomi`. Requires viem for signing (`npm install viem`). Use AOMI_APP / --app, AOMI_MODEL / --model, AOMI_CHAIN_ID / --chain, CHAIN_RPC_URL / --rpc-url, and AOMI_STATE_DIR for local session storage."
8
+ review, AA-first signing with automatic EOA fallback, session controls, and
9
+ per-session secret ingestion.
10
+ compatibility: "Requires @aomi-labs/client (`npm install -g @aomi-labs/client`). CLI executable is `aomi`. Requires viem for signing (`npm install viem`). Use AOMI_APP / --app, AOMI_MODEL / --model, AOMI_CHAIN_ID / --chain, CHAIN_RPC_URL / --rpc-url, optional --secret NAME=value ingestion, and AOMI_STATE_DIR for local session storage."
10
11
  license: MIT
11
12
  allowed-tools: Bash
12
13
  metadata:
13
14
  author: aomi-labs
14
- version: "0.4"
15
+ version: "0.5"
15
16
  ---
16
17
 
17
18
  # Aomi Transact
@@ -26,12 +27,14 @@ backend. Local session data lives under `AOMI_STATE_DIR` or `~/.aomi`.
26
27
  - The user wants balances, prices, routes, quotes, or transaction status.
27
28
  - The user wants to build, confirm, sign, or broadcast wallet requests.
28
29
  - The user wants to inspect or switch apps, models, chains, or sessions.
30
+ - The user wants to inject API keys or other backend secrets for the current session.
29
31
 
30
32
  ## Hard Rules
31
33
 
32
34
  - Never print secrets verbatim in normal status, preflight, or confirmation output.
33
35
  - Treat `PRIVATE_KEY`, `AOMI_API_KEY`, `ALCHEMY_API_KEY`, `PIMLICO_API_KEY`, and private RPC URLs as secrets.
34
36
  - If the user provides a private key or API key, do not repeat it back unless they explicitly ask for that exact value to be reformatted.
37
+ - Prefer `aomi --secret NAME=value ...` over stuffing provider API keys into normal chat text.
35
38
  - Do not sign anything unless the CLI has actually queued a wallet request and you can identify its `tx-N` ID.
36
39
  - If `PRIVATE_KEY` is set in the environment, do not also pass `--private-key` unless you intentionally want to override the environment value.
37
40
  - `--public-key` must match the address derived from the signing key. If they differ, `aomi sign` will update the session to the signer address.
@@ -45,6 +48,7 @@ backend. Local session data lives under `AOMI_STATE_DIR` or `~/.aomi`.
45
48
  Run this once at the start of the session:
46
49
 
47
50
  ```bash
51
+ aomi --version
48
52
  aomi status 2>/dev/null || echo "no session"
49
53
  ```
50
54
 
@@ -75,6 +79,7 @@ aomi tx
75
79
  aomi log
76
80
  aomi status
77
81
  aomi events
82
+ aomi --version
78
83
  aomi app list
79
84
  aomi app current
80
85
  aomi model list
@@ -89,8 +94,29 @@ Notes:
89
94
  - Quote the chat message.
90
95
  - Use `--verbose` when debugging tool calls or streaming behavior.
91
96
  - Pass `--public-key` on the first wallet-aware chat if the backend needs the user's address.
97
+ - Use `aomi secret list` to inspect configured secret handles for the active session.
92
98
  - `aomi close` wipes the active local session pointer and starts a fresh thread next time.
93
99
 
100
+ ### Secret Ingestion
101
+
102
+ Use this when the backend or selected app needs API keys, provider tokens, or
103
+ other named secrets for the current session:
104
+
105
+ ```bash
106
+ aomi --secret ALCHEMY_API_KEY=sk_live_123
107
+ aomi --secret ALCHEMY_API_KEY=sk_live_123 chat "simulate a swap on Base"
108
+ aomi secret list
109
+ aomi secret clear
110
+ ```
111
+
112
+ Important behavior:
113
+
114
+ - `aomi --secret NAME=value` with no command ingests secrets into the active session and exits.
115
+ - `aomi --secret NAME=value chat "..."` ingests first, then runs the command.
116
+ - `aomi secret list` prints secret handle names, not raw values.
117
+ - `aomi secret clear` removes all secrets for the active session.
118
+ - Do not combine `--secret` with `aomi secret clear`.
119
+
94
120
  ### Building Wallet Requests
95
121
 
96
122
  Use the first chat turn to give the agent the task and, if relevant, the wallet
@@ -203,12 +229,16 @@ aomi tx
203
229
  aomi log
204
230
  aomi status
205
231
  aomi events
232
+ aomi secret list
233
+ aomi secret clear
206
234
  ```
207
235
 
208
236
  - `aomi tx` inspects pending and signed requests.
209
237
  - `aomi log` replays conversation and tool output.
210
238
  - `aomi status` shows the current session summary.
211
239
  - `aomi events` shows raw backend system events.
240
+ - `aomi secret list` shows configured secret handles for the active session.
241
+ - `aomi secret clear` removes all configured secrets for the active session.
212
242
 
213
243
  ### App And Model Commands
214
244
 
@@ -253,10 +283,10 @@ aomi close
253
283
 
254
284
  ### AA Providers
255
285
 
256
- | Provider | Flag | Env Var | Notes |
257
- |----------|------|---------|-------|
258
- | Alchemy | `--aa-provider alchemy` | `ALCHEMY_API_KEY` | Supports sponsorship, 4337, 7702 |
259
- | Pimlico | `--aa-provider pimlico` | `PIMLICO_API_KEY` | Supports 4337 and 7702 |
286
+ | Provider | Flag | Env Var | Notes |
287
+ | -------- | ----------------------- | ----------------- | -------------------------------- |
288
+ | Alchemy | `--aa-provider alchemy` | `ALCHEMY_API_KEY` | Supports sponsorship, 4337, 7702 |
289
+ | Pimlico | `--aa-provider pimlico` | `PIMLICO_API_KEY` | Supports 4337 and 7702 |
260
290
 
261
291
  Provider selection rules:
262
292
 
@@ -266,20 +296,20 @@ Provider selection rules:
266
296
 
267
297
  ### AA Modes
268
298
 
269
- | Mode | Flag | Meaning |
270
- |------|------|---------|
299
+ | Mode | Flag | Meaning |
300
+ | ------ | ---------------- | -------------------------------- |
271
301
  | `4337` | `--aa-mode 4337` | Bundler-based smart account flow |
272
- | `7702` | `--aa-mode 7702` | Delegated execution flow |
302
+ | `7702` | `--aa-mode 7702` | Delegated execution flow |
273
303
 
274
304
  ### Default Chain Modes
275
305
 
276
- | Chain | ID | Default AA Mode |
277
- |-------|----|-----------------|
278
- | Ethereum | 1 | 7702 |
279
- | Polygon | 137 | 4337 |
280
- | Arbitrum | 42161 | 4337 |
281
- | Base | 8453 | 4337 |
282
- | Optimism | 10 | 4337 |
306
+ | Chain | ID | Default AA Mode |
307
+ | -------- | ----- | --------------- |
308
+ | Ethereum | 1 | 7702 |
309
+ | Polygon | 137 | 4337 |
310
+ | Arbitrum | 42161 | 4337 |
311
+ | Base | 8453 | 4337 |
312
+ | Optimism | 10 | 4337 |
283
313
 
284
314
  ### Sponsorship
285
315
 
@@ -299,14 +329,14 @@ Default signing behavior for Alchemy:
299
329
 
300
330
  ### Supported Chains
301
331
 
302
- | Chain | ID |
303
- |-------|----|
304
- | Ethereum | 1 |
305
- | Polygon | 137 |
306
- | Arbitrum One | 42161 |
307
- | Base | 8453 |
308
- | Optimism | 10 |
309
- | Sepolia | 11155111 |
332
+ | Chain | ID |
333
+ | ------------ | -------- |
334
+ | Ethereum | 1 |
335
+ | Polygon | 137 |
336
+ | Arbitrum One | 42161 |
337
+ | Base | 8453 |
338
+ | Optimism | 10 |
339
+ | Sepolia | 11155111 |
310
340
 
311
341
  ### RPC Guidance By Chain
312
342
 
@@ -331,42 +361,42 @@ Practical rule:
331
361
 
332
362
  All config can be passed as flags. Flags override environment variables.
333
363
 
334
- | Flag | Env Var | Default | Purpose |
335
- |------|---------|---------|---------|
336
- | `--backend-url` | `AOMI_BASE_URL` | `https://api.aomi.dev` | Backend URL |
337
- | `--api-key` | `AOMI_API_KEY` | none | API key for non-default apps |
338
- | `--app` | `AOMI_APP` | `default` | Backend app |
339
- | `--model` | `AOMI_MODEL` | backend default | Session model |
340
- | `--public-key` | `AOMI_PUBLIC_KEY` | none | Wallet address for chat/session context |
341
- | `--private-key` | `PRIVATE_KEY` | none | Signing key for `aomi sign` |
342
- | `--rpc-url` | `CHAIN_RPC_URL` | chain RPC default | RPC override for signing |
343
- | `--chain` | `AOMI_CHAIN_ID` | `1` | Active wallet chain |
344
- | `--aa-provider` | `AOMI_AA_PROVIDER` | auto | AA provider override |
345
- | `--aa-mode` | `AOMI_AA_MODE` | chain default | AA mode override |
364
+ | Flag | Env Var | Default | Purpose |
365
+ | --------------- | ------------------ | ---------------------- | --------------------------------------- |
366
+ | `--backend-url` | `AOMI_BASE_URL` | `https://api.aomi.dev` | Backend URL |
367
+ | `--api-key` | `AOMI_API_KEY` | none | API key for non-default apps |
368
+ | `--app` | `AOMI_APP` | `default` | Backend app |
369
+ | `--model` | `AOMI_MODEL` | backend default | Session model |
370
+ | `--public-key` | `AOMI_PUBLIC_KEY` | none | Wallet address for chat/session context |
371
+ | `--private-key` | `PRIVATE_KEY` | none | Signing key for `aomi sign` |
372
+ | `--rpc-url` | `CHAIN_RPC_URL` | chain RPC default | RPC override for signing |
373
+ | `--chain` | `AOMI_CHAIN_ID` | `1` | Active wallet chain |
374
+ | `--aa-provider` | `AOMI_AA_PROVIDER` | auto | AA provider override |
375
+ | `--aa-mode` | `AOMI_AA_MODE` | chain default | AA mode override |
346
376
 
347
377
  ### AA Provider Credentials
348
378
 
349
- | Env Var | Purpose |
350
- |---------|---------|
351
- | `ALCHEMY_API_KEY` | Enables Alchemy AA |
379
+ | Env Var | Purpose |
380
+ | ----------------------- | ----------------------------------- |
381
+ | `ALCHEMY_API_KEY` | Enables Alchemy AA |
352
382
  | `ALCHEMY_GAS_POLICY_ID` | Optional Alchemy sponsorship policy |
353
- | `PIMLICO_API_KEY` | Enables Pimlico AA |
383
+ | `PIMLICO_API_KEY` | Enables Pimlico AA |
354
384
 
355
385
  `ALCHEMY_API_KEY` can also be used to construct chain-specific signing RPCs:
356
386
 
357
- | Chain | Example Alchemy RPC |
358
- |-------|---------------------|
359
- | Ethereum | `https://eth-mainnet.g.alchemy.com/v2/<ALCHEMY_API_KEY>` |
360
- | Polygon | `https://polygon-mainnet.g.alchemy.com/v2/<ALCHEMY_API_KEY>` |
361
- | Arbitrum | `https://arb-mainnet.g.alchemy.com/v2/<ALCHEMY_API_KEY>` |
362
- | Base | `https://base-mainnet.g.alchemy.com/v2/<ALCHEMY_API_KEY>` |
363
- | Optimism | `https://opt-mainnet.g.alchemy.com/v2/<ALCHEMY_API_KEY>` |
364
- | Sepolia | `https://eth-sepolia.g.alchemy.com/v2/<ALCHEMY_API_KEY>` |
387
+ | Chain | Example Alchemy RPC |
388
+ | -------- | ------------------------------------------------------------ |
389
+ | Ethereum | `https://eth-mainnet.g.alchemy.com/v2/<ALCHEMY_API_KEY>` |
390
+ | Polygon | `https://polygon-mainnet.g.alchemy.com/v2/<ALCHEMY_API_KEY>` |
391
+ | Arbitrum | `https://arb-mainnet.g.alchemy.com/v2/<ALCHEMY_API_KEY>` |
392
+ | Base | `https://base-mainnet.g.alchemy.com/v2/<ALCHEMY_API_KEY>` |
393
+ | Optimism | `https://opt-mainnet.g.alchemy.com/v2/<ALCHEMY_API_KEY>` |
394
+ | Sepolia | `https://eth-sepolia.g.alchemy.com/v2/<ALCHEMY_API_KEY>` |
365
395
 
366
396
  ### Storage
367
397
 
368
- | Env Var | Default | Purpose |
369
- |---------|---------|---------|
398
+ | Env Var | Default | Purpose |
399
+ | ---------------- | --------- | -------------------------------------- |
370
400
  | `AOMI_STATE_DIR` | `~/.aomi` | Root directory for local session state |
371
401
 
372
402
  Storage layout by default: