auramaxx 1.0.0-alpha.4
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/LICENSE +26 -0
- package/README.md +112 -0
- package/bin/aurawallet.js +121 -0
- package/docs/ADAPTERS.md +467 -0
- package/docs/API.md +2679 -0
- package/docs/APPS.md +198 -0
- package/docs/ARCHITECTURE.md +350 -0
- package/docs/AUTH.md +698 -0
- package/docs/BEST-PRACTICES.md +121 -0
- package/docs/CLI.md +61 -0
- package/docs/DEVELOPING-APPS.md +452 -0
- package/docs/EXTENSION.md +97 -0
- package/docs/JOBS.md +33 -0
- package/docs/MCP.md +76 -0
- package/docs/PROTOCOL.md +142 -0
- package/docs/SETUP.md +219 -0
- package/docs/WORKSPACE.md +672 -0
- package/docs/agent-auth.md +63 -0
- package/docs/aura-file.md +48 -0
- package/docs/credentials.md +53 -0
- package/docs/external/getting-started.md +65 -0
- package/docs/external/overview.md +45 -0
- package/docs/external/use-cases.md +48 -0
- package/docs/external/why-aura.md +35 -0
- package/docs/jobs/connect-agent.md +77 -0
- package/docs/jobs/migrate-from-dotenv.md +79 -0
- package/docs/jobs/recover-from-lockout.md +72 -0
- package/docs/jobs/secure-ci.md +63 -0
- package/docs/oauth2.md +42 -0
- package/docs/passkeys.md +60 -0
- package/docs/security.md +540 -0
- package/docs/specs/aura-open-protocol.md +61 -0
- package/docs/specs/aura-provider-plugin.md +24 -0
- package/docs/specs/aura-registry-model.md +31 -0
- package/docs/specs/fixtures/invalid-bad-key.aura +1 -0
- package/docs/specs/fixtures/invalid-bad-unicode-escape.aura +1 -0
- package/docs/specs/fixtures/invalid-duplicate-key.aura +2 -0
- package/docs/specs/fixtures/valid-basic.aura +4 -0
- package/docs/specs/fixtures/valid-provider-ref.aura +1 -0
- package/docs/specs/fixtures/valid-quoted-escapes.aura +2 -0
- package/docs/templates/RELEASE_NOTES_TEMPLATE.md +22 -0
- package/docs/totp.md +40 -0
- package/docs/wallet/AI.md +508 -0
- package/docs/wallet/DEVELOPING-STRATEGIES.md +713 -0
- package/docs/wallet/README.md +47 -0
- package/docs/wallet/STRATEGY.md +89 -0
- package/next.config.ts +21 -0
- package/package.json +151 -0
- package/postcss.config.mjs +8 -0
- package/prisma/migrations/20260214170000_baseline/migration.sql +511 -0
- package/prisma/migrations/20260216214537_add_passkey_model/migration.sql +18 -0
- package/prisma/migrations/20260217150500_add_credential_access_audit/migration.sql +31 -0
- package/prisma/migrations/migration_lock.toml +3 -0
- package/prisma/schema.prisma +447 -0
- package/public/logo-chevron.svg +31 -0
- package/public/logo-concentric.svg +31 -0
- package/public/logo-crosshatch.svg +39 -0
- package/public/logo-dashed.svg +39 -0
- package/public/logo-horizontal.svg +31 -0
- package/public/logo-m56.svg +64 -0
- package/public/logo.webp +0 -0
- package/scripts/add-app.js +245 -0
- package/scripts/init.sh +57 -0
- package/scripts/migrate-apikeys-to-credentials.ts +35 -0
- package/scripts/sandbox-agent-flow.sh +235 -0
- package/scripts/sandbox.sh +175 -0
- package/scripts/validate-job-docs.mjs +125 -0
- package/server/abi/SwapHelper.json +438 -0
- package/server/cli/approval.ts +447 -0
- package/server/cli/commands/app.ts +204 -0
- package/server/cli/commands/cron.ts +24 -0
- package/server/cli/commands/doctor.ts +1007 -0
- package/server/cli/commands/env.ts +456 -0
- package/server/cli/commands/init.ts +752 -0
- package/server/cli/commands/mcp.ts +125 -0
- package/server/cli/commands/restore.ts +314 -0
- package/server/cli/commands/shell-hook.ts +468 -0
- package/server/cli/commands/start.ts +62 -0
- package/server/cli/commands/status.ts +59 -0
- package/server/cli/commands/stop.ts +14 -0
- package/server/cli/commands/token.ts +180 -0
- package/server/cli/commands/unlock.ts +49 -0
- package/server/cli/commands/vault.ts +417 -0
- package/server/cli/index.ts +328 -0
- package/server/cli/lib/aura-parser.ts +64 -0
- package/server/cli/lib/credential-create.ts +74 -0
- package/server/cli/lib/credential-resolve.ts +254 -0
- package/server/cli/lib/dotenv-migrate.ts +116 -0
- package/server/cli/lib/dotenv-parser.ts +146 -0
- package/server/cli/lib/http.ts +91 -0
- package/server/cli/lib/init-steps.ts +76 -0
- package/server/cli/lib/local-agent-trust.ts +45 -0
- package/server/cli/lib/process.ts +136 -0
- package/server/cli/lib/prompt.ts +85 -0
- package/server/cli/lib/theme.ts +240 -0
- package/server/cli/socket.ts +570 -0
- package/server/cli/transport-client.ts +50 -0
- package/server/cron/index.ts +137 -0
- package/server/cron/job.ts +31 -0
- package/server/cron/jobs/balance-sync.ts +436 -0
- package/server/cron/jobs/incoming-scan.ts +506 -0
- package/server/cron/jobs/native-price.ts +70 -0
- package/server/cron/jobs/orphan-cleanup.ts +40 -0
- package/server/cron/jobs/strategy-runner.ts +175 -0
- package/server/cron/scheduler.ts +125 -0
- package/server/index.ts +406 -0
- package/server/lib/adapters/factory.ts +110 -0
- package/server/lib/adapters/index.ts +19 -0
- package/server/lib/adapters/router.ts +297 -0
- package/server/lib/adapters/telegram.ts +645 -0
- package/server/lib/adapters/types.ts +89 -0
- package/server/lib/adapters/webhook.ts +95 -0
- package/server/lib/address.ts +49 -0
- package/server/lib/agent-auth/contracts.ts +1194 -0
- package/server/lib/agent-profiles.ts +328 -0
- package/server/lib/ai.ts +285 -0
- package/server/lib/api-registry/contracts.ts +86 -0
- package/server/lib/api-registry/validation.ts +172 -0
- package/server/lib/apikey-migration.ts +189 -0
- package/server/lib/app-installer.ts +505 -0
- package/server/lib/app-tokens.ts +247 -0
- package/server/lib/auth.ts +314 -0
- package/server/lib/batch.ts +242 -0
- package/server/lib/cold.ts +874 -0
- package/server/lib/config.ts +381 -0
- package/server/lib/credential-access-audit.ts +85 -0
- package/server/lib/credential-access-policy.ts +110 -0
- package/server/lib/credential-health.ts +343 -0
- package/server/lib/credential-import.ts +487 -0
- package/server/lib/credential-scope.ts +87 -0
- package/server/lib/credential-shares.ts +190 -0
- package/server/lib/credential-transport.ts +342 -0
- package/server/lib/credential-vault.ts +77 -0
- package/server/lib/credentials.ts +333 -0
- package/server/lib/crypto.ts +8 -0
- package/server/lib/db.ts +15 -0
- package/server/lib/defaults.ts +366 -0
- package/server/lib/dex/index.ts +80 -0
- package/server/lib/dex/relay.ts +235 -0
- package/server/lib/dex/types.ts +59 -0
- package/server/lib/dex/uniswap.ts +370 -0
- package/server/lib/e2e-agent/artifacts.ts +36 -0
- package/server/lib/e2e-agent/contracts.ts +112 -0
- package/server/lib/e2e-agent/validation.ts +135 -0
- package/server/lib/encrypt.ts +128 -0
- package/server/lib/error.ts +20 -0
- package/server/lib/events.ts +205 -0
- package/server/lib/hot.ts +357 -0
- package/server/lib/key-fingerprint.ts +28 -0
- package/server/lib/logger.ts +331 -0
- package/server/lib/network.ts +137 -0
- package/server/lib/notifications.ts +219 -0
- package/server/lib/oauth2-refresh.ts +241 -0
- package/server/lib/oursecret.ts +54 -0
- package/server/lib/passkey-credential.ts +360 -0
- package/server/lib/passkey.ts +68 -0
- package/server/lib/permissions.ts +248 -0
- package/server/lib/pino.ts +24 -0
- package/server/lib/policy-preview.ts +138 -0
- package/server/lib/price.ts +338 -0
- package/server/lib/prices.ts +34 -0
- package/server/lib/project-scope.ts +239 -0
- package/server/lib/resolve-action.ts +427 -0
- package/server/lib/resolve.ts +36 -0
- package/server/lib/sessions.ts +632 -0
- package/server/lib/solana/connection.ts +26 -0
- package/server/lib/solana/jupiter.ts +128 -0
- package/server/lib/solana/transfer.ts +108 -0
- package/server/lib/solana/wallet.ts +136 -0
- package/server/lib/strategy/emits.ts +21 -0
- package/server/lib/strategy/engine.ts +1305 -0
- package/server/lib/strategy/executor.ts +115 -0
- package/server/lib/strategy/hook-context.ts +158 -0
- package/server/lib/strategy/hooks.ts +990 -0
- package/server/lib/strategy/index.ts +28 -0
- package/server/lib/strategy/installer.ts +305 -0
- package/server/lib/strategy/loader.ts +256 -0
- package/server/lib/strategy/message.ts +235 -0
- package/server/lib/strategy/repository.ts +218 -0
- package/server/lib/strategy/session-logger.ts +693 -0
- package/server/lib/strategy/sources.ts +288 -0
- package/server/lib/strategy/state.ts +189 -0
- package/server/lib/strategy/templates.ts +403 -0
- package/server/lib/strategy/tick.ts +404 -0
- package/server/lib/strategy/types.ts +230 -0
- package/server/lib/swap.ts +3 -0
- package/server/lib/temp.ts +86 -0
- package/server/lib/token-metadata.ts +86 -0
- package/server/lib/token-safety.ts +200 -0
- package/server/lib/token-search.ts +444 -0
- package/server/lib/totp.ts +194 -0
- package/server/lib/transactions.ts +123 -0
- package/server/lib/transport.ts +75 -0
- package/server/lib/txhistory/decoder.ts +262 -0
- package/server/lib/txhistory/enricher.ts +652 -0
- package/server/lib/txhistory/index.ts +391 -0
- package/server/lib/txhistory/signatures.ts +59 -0
- package/server/lib/verified-summary.ts +421 -0
- package/server/mcp/profile-policy.ts +30 -0
- package/server/mcp/server.ts +619 -0
- package/server/mcp/tools.ts +523 -0
- package/server/middleware/auth.ts +119 -0
- package/server/middleware/requestLogger.ts +84 -0
- package/server/routes/actions.ts +459 -0
- package/server/routes/adapters.ts +703 -0
- package/server/routes/addressbook.ts +113 -0
- package/server/routes/ai.ts +34 -0
- package/server/routes/apikeys.ts +295 -0
- package/server/routes/apps.ts +601 -0
- package/server/routes/auth.ts +457 -0
- package/server/routes/backup.ts +340 -0
- package/server/routes/batch.ts +270 -0
- package/server/routes/bookmarks.ts +162 -0
- package/server/routes/credential-shares.ts +198 -0
- package/server/routes/credential-vaults.ts +154 -0
- package/server/routes/credentials.ts +1290 -0
- package/server/routes/dashboard.ts +71 -0
- package/server/routes/defaults.ts +124 -0
- package/server/routes/fund.ts +229 -0
- package/server/routes/import.ts +352 -0
- package/server/routes/launch.ts +665 -0
- package/server/routes/lock.ts +54 -0
- package/server/routes/logs.ts +68 -0
- package/server/routes/nuke.ts +111 -0
- package/server/routes/passkey-credentials.ts +99 -0
- package/server/routes/passkey.ts +346 -0
- package/server/routes/portfolio.ts +217 -0
- package/server/routes/price.ts +63 -0
- package/server/routes/resolve.ts +31 -0
- package/server/routes/security.ts +45 -0
- package/server/routes/send-evm.ts +241 -0
- package/server/routes/send-solana.ts +281 -0
- package/server/routes/send.ts +178 -0
- package/server/routes/setup.ts +210 -0
- package/server/routes/strategy.ts +894 -0
- package/server/routes/swap-evm.ts +353 -0
- package/server/routes/swap-solana.ts +177 -0
- package/server/routes/swap.ts +356 -0
- package/server/routes/token.ts +247 -0
- package/server/routes/unlock.ts +403 -0
- package/server/routes/wallet-assets.ts +361 -0
- package/server/routes/wallet-transactions.ts +515 -0
- package/server/routes/wallet.ts +710 -0
- package/server/types.ts +146 -0
- package/skills/aurawallet/SKILL.md +739 -0
- package/skills/aurawallet-setup/SKILL.md +74 -0
- package/skills/security-review/SKILL.md +148 -0
- package/src/app/api/agent-requests/route.ts +30 -0
- package/src/app/api/apps/install/route.ts +126 -0
- package/src/app/api/apps/manifests/route.ts +16 -0
- package/src/app/api/apps/static/[...path]/route.ts +57 -0
- package/src/app/api/events/route.ts +92 -0
- package/src/app/api/page.tsx +212 -0
- package/src/app/api/workspace/[id]/apps/[wid]/route.ts +119 -0
- package/src/app/api/workspace/[id]/apps/route.ts +81 -0
- package/src/app/api/workspace/[id]/export/route.ts +67 -0
- package/src/app/api/workspace/[id]/route.ts +168 -0
- package/src/app/api/workspace/auth.ts +34 -0
- package/src/app/api/workspace/config/route.ts +106 -0
- package/src/app/api/workspace/import/route.ts +127 -0
- package/src/app/api/workspace/route.ts +116 -0
- package/src/app/app/page.tsx +2122 -0
- package/src/app/apple-icon.png +0 -0
- package/src/app/docs/page.tsx +178 -0
- package/src/app/favicon.ico +0 -0
- package/src/app/globals.css +572 -0
- package/src/app/health/page.tsx +5 -0
- package/src/app/hello/page.tsx +15 -0
- package/src/app/icon.png +0 -0
- package/src/app/layout.tsx +34 -0
- package/src/app/page.tsx +986 -0
- package/src/app/providers.tsx +90 -0
- package/src/app/share/[token]/page.tsx +295 -0
- package/src/components/ChainSelector.tsx +144 -0
- package/src/components/HumanActionBar.tsx +695 -0
- package/src/components/NotificationDrawer.tsx +129 -0
- package/src/components/apps/AgentKeysApp.tsx +490 -0
- package/src/components/apps/App.tsx +153 -0
- package/src/components/apps/AppGrid.tsx +15 -0
- package/src/components/apps/DetailedAddressDrawer.tsx +325 -0
- package/src/components/apps/DraggableApp.tsx +562 -0
- package/src/components/apps/IFrameApp.tsx +73 -0
- package/src/components/apps/LogsApp.tsx +360 -0
- package/src/components/apps/SendApp.tsx +394 -0
- package/src/components/apps/SetupWizardApp.tsx +1004 -0
- package/src/components/apps/SystemDefaultsApp.tsx +845 -0
- package/src/components/apps/ThirdPartyApp.tsx +428 -0
- package/src/components/apps/TokenApp.tsx +319 -0
- package/src/components/apps/TransactionsApp.tsx +438 -0
- package/src/components/apps/WalletDetailApp.tsx +1505 -0
- package/src/components/apps/index.ts +13 -0
- package/src/components/design-system/Button.tsx +53 -0
- package/src/components/design-system/ChainIndicator.tsx +65 -0
- package/src/components/design-system/ChainSelector.tsx +137 -0
- package/src/components/design-system/ConfirmationModal.tsx +106 -0
- package/src/components/design-system/ConfirmationPopover.tsx +81 -0
- package/src/components/design-system/Drawer.tsx +123 -0
- package/src/components/design-system/FilterDropdown.tsx +72 -0
- package/src/components/design-system/Modal.tsx +206 -0
- package/src/components/design-system/Popover.tsx +142 -0
- package/src/components/design-system/TextInput.tsx +85 -0
- package/src/components/design-system/Toggle.tsx +58 -0
- package/src/components/design-system/index.ts +11 -0
- package/src/components/docs/DocsThemeToggle.tsx +49 -0
- package/src/components/health/CredentialHealthDashboard.tsx +214 -0
- package/src/components/icons/ChainIcons.tsx +72 -0
- package/src/components/layout/AppStoreDrawer.tsx +369 -0
- package/src/components/layout/ContentArea.tsx +21 -0
- package/src/components/layout/TabBar.tsx +278 -0
- package/src/components/layout/WalletSidebar.tsx +1033 -0
- package/src/components/layout/index.ts +4 -0
- package/src/components/marketing/AuraWalletSpecOverlay.tsx +635 -0
- package/src/components/marketing/DeviceMorphExperience.tsx +216 -0
- package/src/components/vault/ApiKeysConsole.tsx +1080 -0
- package/src/components/vault/AuditConsole.tsx +584 -0
- package/src/components/vault/CredentialDetail.tsx +455 -0
- package/src/components/vault/CredentialEmpty.tsx +55 -0
- package/src/components/vault/CredentialField.tsx +361 -0
- package/src/components/vault/CredentialForm.tsx +1212 -0
- package/src/components/vault/CredentialList.tsx +165 -0
- package/src/components/vault/CredentialRow.tsx +97 -0
- package/src/components/vault/CredentialShareModal.tsx +178 -0
- package/src/components/vault/CredentialVault.tsx +754 -0
- package/src/components/vault/CredentialWalletWidget.tsx +103 -0
- package/src/components/vault/ImportCredentialsModal.tsx +515 -0
- package/src/components/vault/LargeTypeModal.tsx +64 -0
- package/src/components/vault/PasswordGenerator.tsx +224 -0
- package/src/components/vault/TOTPDisplay.tsx +123 -0
- package/src/components/vault/VaultSidebar.tsx +413 -0
- package/src/components/vault/types.ts +54 -0
- package/src/context/AuthContext.tsx +337 -0
- package/src/context/PriceContext.tsx +113 -0
- package/src/context/ThemeContext.tsx +164 -0
- package/src/context/WebSocketContext.tsx +269 -0
- package/src/context/WorkspaceContext.tsx +668 -0
- package/src/hooks/index.ts +3 -0
- package/src/hooks/useAgentActions.ts +368 -0
- package/src/hooks/useBalance.ts +103 -0
- package/src/hooks/useBalances.ts +129 -0
- package/src/instrumentation.ts +12 -0
- package/src/lib/api.ts +449 -0
- package/src/lib/app-loader.ts +148 -0
- package/src/lib/app-registry.ts +178 -0
- package/src/lib/app-sdk.ts +157 -0
- package/src/lib/audit-console-adapter.ts +151 -0
- package/src/lib/auth-client.ts +75 -0
- package/src/lib/config.ts +74 -0
- package/src/lib/crypto.ts +112 -0
- package/src/lib/db.ts +21 -0
- package/src/lib/docs.ts +390 -0
- package/src/lib/events.ts +361 -0
- package/src/lib/pino.ts +24 -0
- package/src/lib/theme-handlers.ts +168 -0
- package/src/lib/theme.ts +351 -0
- package/src/lib/tokenData.ts +378 -0
- package/src/lib/vault-crypto.ts +129 -0
- package/src/lib/websocket-server.ts +302 -0
- package/src/lib/websocket-setup.ts +79 -0
- package/src/lib/wordlist.ts +2050 -0
- package/src/lib/workspace-handlers.ts +285 -0
- package/start.sh +80 -0
- package/tailwind.config.ts +99 -0
- package/tsconfig.json +42 -0
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# AuraWallet Browser Extension
|
|
2
|
+
|
|
3
|
+
A 1Password-style browser extension for AuraWallet. Autofill credentials, browse wallets, and approve agent actions — all from your browser toolbar.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **🔑 Credential Autofill** — Fill usernames & passwords on any site with Cmd+Shift+L or one click
|
|
8
|
+
- **🌐 Domain Matching** — Automatically surfaces credentials matching the current site (subdomain-aware)
|
|
9
|
+
- **💰 Wallet Browser** — View wallet addresses and copy to clipboard
|
|
10
|
+
- **✅ Action Approval** — Approve or reject pending agent actions with badge count
|
|
11
|
+
- **🔒 Auto-Lock** — Configurable idle timer (default 15 min)
|
|
12
|
+
- **🔐 Scoped Token** — Extension gets a limited `extension:*` token, not full admin access
|
|
13
|
+
|
|
14
|
+
## Setup
|
|
15
|
+
|
|
16
|
+
### Prerequisites
|
|
17
|
+
|
|
18
|
+
- AuraWallet server running locally (`npx aurawallet`)
|
|
19
|
+
- Chrome or Chromium-based browser
|
|
20
|
+
|
|
21
|
+
### Install (Development)
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
cd extension
|
|
25
|
+
npm install
|
|
26
|
+
npm run build
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
1. Open `chrome://extensions`
|
|
30
|
+
2. Enable "Developer mode" (top right)
|
|
31
|
+
3. Click "Load unpacked"
|
|
32
|
+
4. Select the `extension/dist` directory
|
|
33
|
+
|
|
34
|
+
### Usage
|
|
35
|
+
|
|
36
|
+
1. Click the AuraWallet icon in your toolbar (or press **Cmd+Shift+L**)
|
|
37
|
+
2. Enter your vault password to unlock
|
|
38
|
+
3. Browse credentials — domain-matched items appear first
|
|
39
|
+
4. Click a login credential to autofill, or click non-login items to view details
|
|
40
|
+
5. Switch tabs to view wallets or pending actions
|
|
41
|
+
|
|
42
|
+
## Architecture
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
extension/
|
|
46
|
+
├── manifest.json # MV3 manifest
|
|
47
|
+
├── src/
|
|
48
|
+
│ ├── background/
|
|
49
|
+
│ │ └── service-worker.ts # Alarms, health checks, auto-lock
|
|
50
|
+
│ ├── components/
|
|
51
|
+
│ │ ├── App.tsx # Root: offline/locked/unlocked routing
|
|
52
|
+
│ │ ├── UnlockForm.tsx # Password → RSA-encrypted unlock
|
|
53
|
+
│ │ ├── Dashboard.tsx # Tabs: credentials/wallets/actions
|
|
54
|
+
│ │ ├── CredentialDetail.tsx # Field-level view with reveal/copy
|
|
55
|
+
│ │ └── Settings.tsx # Server URL, auto-lock timer
|
|
56
|
+
│ ├── lib/
|
|
57
|
+
│ │ ├── api.ts # Fetch wrapper + token management
|
|
58
|
+
│ │ ├── crypto.ts # RSA-OAEP keypair + encrypt/decrypt
|
|
59
|
+
│ │ └── state.ts # chrome.storage.session state
|
|
60
|
+
│ └── popup/
|
|
61
|
+
│ ├── index.html # Popup entry
|
|
62
|
+
│ ├── main.tsx # Preact render
|
|
63
|
+
│ └── styles.ts # Shared inline styles
|
|
64
|
+
├── public/icons/ # Extension icons (16/48/128)
|
|
65
|
+
├── vite.config.ts # Vite + @crxjs/vite-plugin + Preact
|
|
66
|
+
└── package.json
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Security Model
|
|
70
|
+
|
|
71
|
+
- Password is **RSA-OAEP encrypted** before sending to server (same as web UI)
|
|
72
|
+
- Extension receives a **scoped token** with `extension:*` permissions:
|
|
73
|
+
- `wallet:list` — Read-only wallet access
|
|
74
|
+
- `secret:read` — Read credentials (encrypted to extension's RSA pubkey)
|
|
75
|
+
- `action:read` — List pending actions
|
|
76
|
+
- `action:resolve` — Approve/reject actions
|
|
77
|
+
- Token stored in `chrome.storage.session` (cleared on browser close)
|
|
78
|
+
- RSA keypair stored in `chrome.storage.session` (regenerated each session)
|
|
79
|
+
- Auto-lock clears all session data after configurable idle period
|
|
80
|
+
|
|
81
|
+
## Server Changes
|
|
82
|
+
|
|
83
|
+
The extension required minimal server changes:
|
|
84
|
+
|
|
85
|
+
1. **`server/lib/permissions.ts`** — Added `action:read`, `action:resolve` permissions and `extension:*` compound permission
|
|
86
|
+
2. **`server/routes/actions.ts`** — Changed `requireAdmin` → `requirePermission('action:read'/'action:resolve')` on pending/resolve routes
|
|
87
|
+
3. **`server/routes/unlock.ts`** — Added `scope: "extension"` parameter to issue scoped tokens with `credentialAccess: { read: ['*'] }`
|
|
88
|
+
|
|
89
|
+
## Configuration
|
|
90
|
+
|
|
91
|
+
Settings accessible via the ⚙ gear icon:
|
|
92
|
+
|
|
93
|
+
| Setting | Default | Description |
|
|
94
|
+
|---------|---------|-------------|
|
|
95
|
+
| Server URL | `http://localhost:4242` | AuraWallet server address |
|
|
96
|
+
| Auto-lock | 15 minutes | Idle time before auto-locking |
|
|
97
|
+
| Shortcut | Cmd+Shift+L | Open popup (configurable in chrome://extensions/shortcuts) |
|
package/docs/JOBS.md
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Aura Docs by Job (Start Here)
|
|
2
|
+
|
|
3
|
+
Use this page when you need to get a real job done fast.
|
|
4
|
+
|
|
5
|
+
## Pick your goal
|
|
6
|
+
|
|
7
|
+
- **I am a developer**
|
|
8
|
+
- [Migrate from `.env` to vault-backed `.aura`](./jobs/migrate-from-dotenv.md)
|
|
9
|
+
- **I run agents locally**
|
|
10
|
+
- [Connect an agent with least privilege](./jobs/connect-agent.md)
|
|
11
|
+
- **I own CI/security**
|
|
12
|
+
- [Secure CI with scoped Aura access](./jobs/secure-ci.md)
|
|
13
|
+
- **I am locked out / recovery mode**
|
|
14
|
+
- [Recover from lockout safely](./jobs/recover-from-lockout.md)
|
|
15
|
+
|
|
16
|
+
## Contract for every runbook
|
|
17
|
+
|
|
18
|
+
Each guide includes:
|
|
19
|
+
- preflight checks
|
|
20
|
+
- copy/paste commands
|
|
21
|
+
- deterministic success checks
|
|
22
|
+
- known failure signatures + fixes
|
|
23
|
+
- a final `aura doctor` verification step
|
|
24
|
+
|
|
25
|
+
## Keep these docs trustworthy
|
|
26
|
+
|
|
27
|
+
Run the docs validator before release:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
npm run docs:validate
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
This checks job-guide structure and command snippets used in these runbooks.
|
package/docs/MCP.md
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# MCP
|
|
2
|
+
|
|
3
|
+
Aura MCP server exposes wallet + credential APIs to MCP clients over stdio.
|
|
4
|
+
|
|
5
|
+
## Start
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npx aurawallet mcp
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Auto-configure local IDE MCP files:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npx aurawallet mcp --install
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## MCP Resources
|
|
18
|
+
|
|
19
|
+
- `docs://api`
|
|
20
|
+
- `docs://auth`
|
|
21
|
+
- `docs://guide`
|
|
22
|
+
- `docs://setup-guide` (setup-only skill guide)
|
|
23
|
+
|
|
24
|
+
## Tools currently exposed
|
|
25
|
+
|
|
26
|
+
- `create_vault`
|
|
27
|
+
- `wallet_api`
|
|
28
|
+
- `request_human_action`
|
|
29
|
+
|
|
30
|
+
## Setup Skill
|
|
31
|
+
|
|
32
|
+
Install the setup-focused skill and ask your agent to onboard via MCP.
|
|
33
|
+
|
|
34
|
+
For local testing before a commit is pushed:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
TMP_SKILL_DIR="$(mktemp -d /tmp/aurawallet-setup-skill-XXXXXX)"
|
|
38
|
+
cp -R ./skills/aurawallet-setup "$TMP_SKILL_DIR/"
|
|
39
|
+
npx -y skills add "$TMP_SKILL_DIR/aurawallet-setup" --yes
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
For a pushed GitHub ref (branch or commit):
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
python3 ~/.codex/skills/.system/skill-installer/scripts/install-skill-from-github.py \
|
|
46
|
+
--repo Aura-Industry/aurawallet \
|
|
47
|
+
--path skills/aurawallet-setup \
|
|
48
|
+
--ref <branch-or-commit>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Note: dedicated `get_secret` / `put_secret` wrappers are not currently in `server/mcp/tools.ts`; use `wallet_api` against credential endpoints.
|
|
52
|
+
|
|
53
|
+
## Credential read flow via MCP
|
|
54
|
+
|
|
55
|
+
1. Obtain token (`POST /auth` + approval + `GET /auth/:id?secret=...`)
|
|
56
|
+
2. Create scoped token if needed (`POST /actions/token`)
|
|
57
|
+
3. Call `POST /credentials/:id/read`
|
|
58
|
+
4. Decrypt returned `encrypted` payload in your MCP host
|
|
59
|
+
|
|
60
|
+
## Safety pattern
|
|
61
|
+
|
|
62
|
+
- Start with least privilege (`secret:read`, narrow `credentialAccess.read` scopes)
|
|
63
|
+
- Use `request_human_action` when you hit 403
|
|
64
|
+
- Avoid broad long-lived tokens
|
|
65
|
+
|
|
66
|
+
## Example call
|
|
67
|
+
|
|
68
|
+
```json
|
|
69
|
+
{
|
|
70
|
+
"method": "POST",
|
|
71
|
+
"endpoint": "/credentials/cred-123/read",
|
|
72
|
+
"body": {}
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
See also: [agent auth model](./agent-auth.md).
|
package/docs/PROTOCOL.md
ADDED
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
# The `.aura` File Format
|
|
2
|
+
|
|
3
|
+
**Version:** 0.1.0 (Draft)
|
|
4
|
+
**Status:** Draft
|
|
5
|
+
**Date:** 2026-02-16
|
|
6
|
+
|
|
7
|
+
## 1. Introduction
|
|
8
|
+
|
|
9
|
+
### 1.1 Why
|
|
10
|
+
|
|
11
|
+
Applications need secrets. Developers pass them via environment variables, typically stored in `.env` files. This creates a problem: `.env` files contain plaintext secrets and must never be committed to version control. Teams share them over Slack, email, or sticky notes. They drift. They leak.
|
|
12
|
+
|
|
13
|
+
The `.aura` format solves this by separating **what a project needs** from **the secrets themselves**. A `.aura` file maps environment variables to credential references in a vault. It contains no secrets — only pointers. It is safe to commit, review, and share.
|
|
14
|
+
|
|
15
|
+
### 1.2 Design Goals
|
|
16
|
+
|
|
17
|
+
- **Commit-safe.** No secrets, ever.
|
|
18
|
+
- **Simple.** One mapping per line. No templating, no interpolation, no nesting.
|
|
19
|
+
- **Vault-agnostic.** Any secret store can implement resolution.
|
|
20
|
+
- **Familiar.** If you've used `.env`, you already know 90% of `.aura`.
|
|
21
|
+
|
|
22
|
+
## 2. File Format
|
|
23
|
+
|
|
24
|
+
### 2.1 General
|
|
25
|
+
|
|
26
|
+
- **Filename:** `.aura` (lowercase, leading dot)
|
|
27
|
+
- **Encoding:** UTF-8
|
|
28
|
+
- **Line endings:** LF or CRLF (implementations MUST accept both)
|
|
29
|
+
|
|
30
|
+
### 2.2 Grammar
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
file = *line
|
|
34
|
+
line = blank / comment / mapping
|
|
35
|
+
blank = *WSP NEWLINE
|
|
36
|
+
comment = "#" *CHAR NEWLINE
|
|
37
|
+
mapping = key "=" reference NEWLINE
|
|
38
|
+
key = 1*( ALPHA / DIGIT / "_" )
|
|
39
|
+
reference = [ "@" vault-name "/" ] credential-name "/" field
|
|
40
|
+
vault-name = 1*( ALPHA / DIGIT / "-" / "_" )
|
|
41
|
+
credential-name = 1*( ALPHA / DIGIT / "-" / "_" / "." )
|
|
42
|
+
field = 1*( ALPHA / DIGIT / "-" / "_" / "." )
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### 2.3 Mappings
|
|
46
|
+
|
|
47
|
+
Each mapping is a single line of the form:
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
ENV_VAR=reference
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
- **No whitespace** around `=`. `KEY = ref` is invalid.
|
|
54
|
+
- **No quoting.** Values are never quoted.
|
|
55
|
+
- **No multiline values.**
|
|
56
|
+
- **No duplicate keys.** If a key appears more than once, implementations MUST reject the file.
|
|
57
|
+
|
|
58
|
+
### 2.4 References
|
|
59
|
+
|
|
60
|
+
A reference points to a field within a credential in a vault:
|
|
61
|
+
|
|
62
|
+
| Form | Meaning |
|
|
63
|
+
|------|---------|
|
|
64
|
+
| `credential/field` | Field `field` of credential `credential` in the primary vault |
|
|
65
|
+
| `@vault/credential/field` | Field `field` of credential `credential` in vault `vault` |
|
|
66
|
+
|
|
67
|
+
The **primary vault** is determined by the resolution environment (e.g., a CLI config or SDK default). The `.aura` file itself does not define which vault is primary.
|
|
68
|
+
|
|
69
|
+
### 2.5 Comments and Blank Lines
|
|
70
|
+
|
|
71
|
+
Lines beginning with `#` (optionally preceded by whitespace) are comments. Blank lines are ignored. Both are preserved for human readability.
|
|
72
|
+
|
|
73
|
+
## 3. Resolution Algorithm
|
|
74
|
+
|
|
75
|
+
Given a `.aura` file, a resolver MUST:
|
|
76
|
+
|
|
77
|
+
1. **Parse** the file into an ordered list of `(key, reference)` mappings.
|
|
78
|
+
2. **For each mapping**, decompose the reference into `(vault, credential, field)`. If no `@vault` prefix, use the primary vault.
|
|
79
|
+
3. **Resolve** each `(vault, credential, field)` tuple against the vault provider. Obtain the plaintext secret value.
|
|
80
|
+
4. **Fail loudly** if any credential or field does not exist. Implementations MUST NOT substitute defaults, empty strings, or fallback values. A missing secret is a fatal error.
|
|
81
|
+
5. **Inject** each `key=resolved_value` pair into the target environment.
|
|
82
|
+
|
|
83
|
+
### 3.1 Error Handling
|
|
84
|
+
|
|
85
|
+
| Condition | Behavior |
|
|
86
|
+
|-----------|----------|
|
|
87
|
+
| Credential not found | MUST fail with error identifying the missing credential |
|
|
88
|
+
| Field not found | MUST fail with error identifying the credential and missing field |
|
|
89
|
+
| Vault not reachable | MUST fail with connection error |
|
|
90
|
+
| Duplicate key | MUST fail at parse time |
|
|
91
|
+
| Malformed line | MUST fail at parse time with line number |
|
|
92
|
+
|
|
93
|
+
Implementations MUST NOT partially inject. Either all mappings resolve or none do.
|
|
94
|
+
|
|
95
|
+
## 4. Example
|
|
96
|
+
|
|
97
|
+
```aura
|
|
98
|
+
# Database
|
|
99
|
+
DATABASE_URL=database-prod/url
|
|
100
|
+
DATABASE_POOL_SIZE=database-prod/pool_size
|
|
101
|
+
|
|
102
|
+
# Payments
|
|
103
|
+
STRIPE_SECRET_KEY=stripe/secret_key
|
|
104
|
+
STRIPE_WEBHOOK_SECRET=stripe/webhook_secret
|
|
105
|
+
|
|
106
|
+
# AWS (staging vault)
|
|
107
|
+
AWS_ACCESS_KEY_ID=@staging/aws/access_key
|
|
108
|
+
AWS_SECRET_ACCESS_KEY=@staging/aws/secret_key
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## 5. Implementing a Resolver
|
|
112
|
+
|
|
113
|
+
Any tool can resolve `.aura` files. A resolver needs:
|
|
114
|
+
|
|
115
|
+
1. **A parser** — split lines, ignore comments/blanks, extract `(key, reference)` pairs.
|
|
116
|
+
2. **A vault backend** — given `(vault, credential, field)`, return the secret value. This could be AuraWallet, 1Password, HashiCorp Vault, AWS Secrets Manager, a YAML file — anything.
|
|
117
|
+
3. **An injector** — set environment variables or write a `.env` file.
|
|
118
|
+
|
|
119
|
+
That's it. The format is intentionally trivial to parse. A working parser is ~30 lines in any language.
|
|
120
|
+
|
|
121
|
+
### 5.1 Reference CLI
|
|
122
|
+
|
|
123
|
+
The `aura` CLI provides a reference implementation:
|
|
124
|
+
|
|
125
|
+
| Command | Description |
|
|
126
|
+
|---------|-------------|
|
|
127
|
+
| `aura env -- <cmd>` | Resolve `.aura`, inject env vars, run `<cmd>` |
|
|
128
|
+
| `aura env inject` | Resolve `.aura`, write `.env` file |
|
|
129
|
+
| `aura env check` | Verify all referenced credentials exist (no values printed) |
|
|
130
|
+
| `aura env list` | Print mappings without resolving values |
|
|
131
|
+
| `aura init --from-dotenv` | Generate `.aura` from an existing `.env` file |
|
|
132
|
+
|
|
133
|
+
## 6. Security Considerations
|
|
134
|
+
|
|
135
|
+
- `.aura` files contain **no secrets** and are safe to commit to version control.
|
|
136
|
+
- Resolved `.env` files (output of `aura env inject`) MUST be gitignored.
|
|
137
|
+
- Implementations SHOULD NOT log resolved secret values.
|
|
138
|
+
- Implementations SHOULD clear resolved values from memory after injection when possible.
|
|
139
|
+
|
|
140
|
+
## 7. MIME Type
|
|
141
|
+
|
|
142
|
+
`text/x-aura` (informational, not registered).
|
package/docs/SETUP.md
ADDED
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
# Setup & First-Time Guide
|
|
2
|
+
|
|
3
|
+
End-to-end walkthrough from zero to an agent with a token executing operations.
|
|
4
|
+
|
|
5
|
+
**Prerequisites:** Node.js 18+
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 1. Install & Initialize
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npx aurawallet init
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
> **Agents:** The base `init` command is interactive. For agent-driven setup, use `npx aurawallet init --dashboard` — this skips prompts, starts the dashboard, and waits for the human to create the vault in the browser.
|
|
16
|
+
|
|
17
|
+
This will:
|
|
18
|
+
- Create the data directory (`~/.aurawallet/`)
|
|
19
|
+
- Run database migrations
|
|
20
|
+
- Start the wallet server
|
|
21
|
+
- Ask: **Dashboard** or **Terminal** setup?
|
|
22
|
+
- Walk you through vault creation
|
|
23
|
+
- Print your cold wallet address + funding guidance
|
|
24
|
+
- Keep the servers running
|
|
25
|
+
|
|
26
|
+
After init completes, the servers stay running. Press `Ctrl+C` to stop them. To start again later:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
npx aurawallet start
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Dashboard Mode (default)
|
|
33
|
+
|
|
34
|
+
Press Enter (or type `1`) at the mode prompt. This opens the dashboard in your browser at `http://localhost:4747/app` where you create your vault with a password. One browser action and you're done.
|
|
35
|
+
|
|
36
|
+
### Autonomous Mode (agents / CI)
|
|
37
|
+
|
|
38
|
+
For fully non-interactive vault creation — no browser, no prompts:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
npx aurawallet init --password "your-secure-password"
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
This creates the vault, prints the seed phrase and admin token to stdout, and keeps the servers running. Store the password securely (e.g. as `AURA_VAULT_PASSWORD`) for future unlocks.
|
|
45
|
+
|
|
46
|
+
Agents using MCP can also call `create_vault` directly — see [MCP.md](./MCP.md).
|
|
47
|
+
|
|
48
|
+
### Terminal Mode
|
|
49
|
+
|
|
50
|
+
Type `2` at the mode prompt. This walks you through setup entirely in the terminal:
|
|
51
|
+
|
|
52
|
+
1. **Password** — enter and confirm (min 8 characters, hidden input)
|
|
53
|
+
2. **Seed phrase** — displayed in a numbered box; confirm you've saved it
|
|
54
|
+
3. **Anthropic API key** — optional, validates before saving (Enter to skip)
|
|
55
|
+
4. **Alchemy API key** — optional, same validate-and-save flow (Enter to skip)
|
|
56
|
+
5. **Telegram** — optional bot token + chat ID, tests the connection (Enter to skip)
|
|
57
|
+
6. **Summary** — shows what's configured vs skipped
|
|
58
|
+
|
|
59
|
+
Terminal mode is ideal for headless servers, SSH sessions, and power users who prefer not to leave the terminal.
|
|
60
|
+
|
|
61
|
+
### Verify it's running
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
npx aurawallet status
|
|
65
|
+
# or
|
|
66
|
+
curl -s http://localhost:4242/health
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## 3. Unlock the Vault
|
|
72
|
+
|
|
73
|
+
After starting (or after a server restart), the vault is locked. Three ways to unlock:
|
|
74
|
+
|
|
75
|
+
### Option A: Dashboard (recommended for agent + human collaboration)
|
|
76
|
+
|
|
77
|
+
Open `http://localhost:4747/app` — the dashboard auto-prompts for your password on first load.
|
|
78
|
+
|
|
79
|
+
An agent can tell the human: *"Open http://localhost:4747/app to unlock your vault."*
|
|
80
|
+
|
|
81
|
+
### Option B: ENV auto-unlock (headless / autonomous agents)
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
VAULT_PASSWORD=yourpassword npx aurawallet start
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
The vault auto-unlocks on server startup. The password is scrubbed from the process environment after use. The agent then calls `POST /unlock` with the same password **and a caller RSA pubkey** to get its admin token (same flow as the dashboard). Wrong password causes the server to exit with an error.
|
|
88
|
+
|
|
89
|
+
### Option C: CLI
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
npx aurawallet unlock
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Prompts for password in the terminal. Works over SSH.
|
|
96
|
+
|
|
97
|
+
### Option D: Standalone unlock page (fallback)
|
|
98
|
+
|
|
99
|
+
If the dashboard isn't running (headless mode), the Express server serves a
|
|
100
|
+
self-contained unlock page at `http://localhost:4242/unlock`.
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## 4. Agent Gets a Token
|
|
105
|
+
|
|
106
|
+
Once the vault is unlocked, an agent requests a token:
|
|
107
|
+
|
|
108
|
+
Generate an RSA keypair in the caller runtime and send the public key on token mint requests.
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
# One-time example (store private key locally in your runtime)
|
|
112
|
+
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out agent-private.pem
|
|
113
|
+
openssl rsa -pubout -in agent-private.pem -out agent-public.pem
|
|
114
|
+
|
|
115
|
+
# 1. Request access (no auth required)
|
|
116
|
+
curl -X POST http://localhost:4242/auth \
|
|
117
|
+
-H "Content-Type: application/json" \
|
|
118
|
+
-d '{
|
|
119
|
+
"agentId": "my-agent",
|
|
120
|
+
"limit": 0.5,
|
|
121
|
+
"permissions": ["trade:all"],
|
|
122
|
+
"ttl": 3600,
|
|
123
|
+
"pubkey": "<contents of agent-public.pem>"
|
|
124
|
+
}'
|
|
125
|
+
# Returns: { "requestId": "...", "secret": "..." }
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
A human approves the request via:
|
|
129
|
+
- Dashboard UI (`http://localhost:4747/app`)
|
|
130
|
+
- CLI mode (`npm run cli`)
|
|
131
|
+
- Telegram / webhook adapter (if configured)
|
|
132
|
+
|
|
133
|
+
Then the agent polls for its token:
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
# 2. Poll until approved
|
|
137
|
+
curl "http://localhost:4242/auth/<requestId>?secret=<secret>"
|
|
138
|
+
# When approved: { "status": "approved", "token": "eyJ..." }
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
The agent uses the token for all subsequent requests:
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
curl http://localhost:4242/wallets -H "Authorization: Bearer <token>"
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## 5. Agent Starts Working
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
# Create a hot wallet
|
|
153
|
+
curl -X POST http://localhost:4242/wallet/create \
|
|
154
|
+
-H "Authorization: Bearer $TOKEN" \
|
|
155
|
+
-H "Content-Type: application/json" \
|
|
156
|
+
-d '{"tier": "hot", "name": "trading"}'
|
|
157
|
+
|
|
158
|
+
# Fund it from the cold wallet
|
|
159
|
+
curl -X POST http://localhost:4242/fund \
|
|
160
|
+
-H "Authorization: Bearer $TOKEN" \
|
|
161
|
+
-H "Content-Type: application/json" \
|
|
162
|
+
-d '{"to": "0xHOT_ADDRESS", "amount": "0.1"}'
|
|
163
|
+
|
|
164
|
+
# Execute a swap
|
|
165
|
+
curl -X POST http://localhost:4242/swap \
|
|
166
|
+
-H "Authorization: Bearer $TOKEN" \
|
|
167
|
+
-H "Content-Type: application/json" \
|
|
168
|
+
-d '{"from": "0xHOT_ADDRESS", "token": "0xTOKEN", "direction": "buy", "amount": "0.05", "slippage": 1}'
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## 6. After Server Restart
|
|
174
|
+
|
|
175
|
+
Server restart is a security feature — all tokens are invalidated (new signing key generated).
|
|
176
|
+
|
|
177
|
+
The recovery flow:
|
|
178
|
+
1. **Start the server** — `npx aurawallet start` or `npx aurawallet start --headless`
|
|
179
|
+
2. **Unlock the vault** — Option A, B, or C from step 3
|
|
180
|
+
3. **Agent re-requests a token** — same flow as step 4
|
|
181
|
+
4. **Hot wallets and data persist** — only tokens are reset, not wallets or transaction history
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## 7. Optional Configuration
|
|
186
|
+
|
|
187
|
+
Configure these after init, via the dashboard or API:
|
|
188
|
+
|
|
189
|
+
| Feature | How to Configure |
|
|
190
|
+
|---------|-----------------|
|
|
191
|
+
| Alchemy RPC | `POST /apikeys` or dashboard Settings |
|
|
192
|
+
| Telegram approvals | `POST /adapters` or dashboard Settings — see [ADAPTERS.md](./ADAPTERS.md) |
|
|
193
|
+
| Custom RPC endpoints | Dashboard Settings or `POST /api/workspace/config` with `chainOverrides` |
|
|
194
|
+
| Strategies | Place YAML manifests in `~/.aurawallet/strategies/` — see strategy docs |
|
|
195
|
+
|
|
196
|
+
Agents can check `GET /setup` to see which optional features are configured:
|
|
197
|
+
|
|
198
|
+
```json
|
|
199
|
+
{
|
|
200
|
+
"hasWallet": true,
|
|
201
|
+
"unlocked": true,
|
|
202
|
+
"address": "0x...",
|
|
203
|
+
"adapters": { "telegram": false, "webhook": false },
|
|
204
|
+
"apiKeys": { "alchemy": true, "anthropic": false },
|
|
205
|
+
"defaultChain": "base"
|
|
206
|
+
}
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
## 8. MCP Server (Optional)
|
|
212
|
+
|
|
213
|
+
Connect AI agents (Claude Code, Claude Desktop, Cursor, etc.) via MCP:
|
|
214
|
+
|
|
215
|
+
```bash
|
|
216
|
+
npx aurawallet mcp # starts stdio MCP server
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
Or configure your IDE to spawn it automatically. See [MCP.md](./MCP.md) for config examples.
|