auramaxx 0.0.1
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 +77 -0
- package/apps/desktop-electron/main.js +428 -0
- package/bin/auramaxx.js +1063 -0
- package/docs/ADAPTERS.md +466 -0
- package/docs/AGENT_SETUP.md +159 -0
- package/docs/API.md +127 -0
- package/docs/APPS.md +199 -0
- package/docs/ARCHITECTURE.md +235 -0
- package/docs/AUTH.md +318 -0
- package/docs/BEST-PRACTICES.md +82 -0
- package/docs/CLI.md +141 -0
- package/docs/DESKTOP_ELECTRON.md +26 -0
- package/docs/DEVELOPING-APPS.md +453 -0
- package/docs/MCP.md +122 -0
- package/docs/PACKAGING_POLICY.md +19 -0
- package/docs/PERMISSION.md +137 -0
- package/docs/PROTOCOL.md +142 -0
- package/docs/README.md +50 -0
- package/docs/SKILLS.md +132 -0
- package/docs/TROUBLESHOOTING.md +376 -0
- package/docs/WORKSPACE.md +673 -0
- package/docs/agent-auth.md +14 -0
- package/docs/api/authentication.md +79 -0
- package/docs/api/secrets/api-keys.md +28 -0
- package/docs/api/secrets/credentials.md +80 -0
- package/docs/api/secrets/sharing.md +48 -0
- package/docs/api/system.md +41 -0
- package/docs/api/wallets/apps-strategies.md +66 -0
- package/docs/api/wallets/core.md +46 -0
- package/docs/api/wallets/data-portfolio.md +42 -0
- package/docs/aura-file.md +48 -0
- package/docs/core-concepts/FEATURES.md +114 -0
- package/docs/credentials.md +120 -0
- package/docs/external/HOW_TO_AURAMAXX/GETTING_SECRETS.md +33 -0
- package/docs/external/HOW_TO_AURAMAXX/README.md +45 -0
- package/docs/external/getting-started.md +10 -0
- package/docs/external/overview.md +19 -0
- package/docs/external/persona-paths.md +7 -0
- package/docs/external/share-secret.md +76 -0
- package/docs/external/why-aura.md +7 -0
- package/docs/security.md +227 -0
- package/docs/templates/RELEASE_NOTES_TEMPLATE.md +22 -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 +28 -0
- package/package.json +167 -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/20260222090000_update_admin_ttl_default/migration.sql +10 -0
- package/prisma/migrations/migration_lock.toml +3 -0
- package/prisma/schema.prisma +447 -0
- package/public/logo.webp +0 -0
- package/scripts/add-app.js +245 -0
- package/server/abi/SwapHelper.json +438 -0
- package/server/cli/approval.ts +447 -0
- package/server/cli/commands/actions.ts +474 -0
- package/server/cli/commands/api.ts +220 -0
- package/server/cli/commands/apikey.ts +277 -0
- package/server/cli/commands/app.ts +204 -0
- package/server/cli/commands/auth.ts +464 -0
- package/server/cli/commands/cron.ts +24 -0
- package/server/cli/commands/diary.ts +274 -0
- package/server/cli/commands/doctor.ts +1247 -0
- package/server/cli/commands/env.ts +476 -0
- package/server/cli/commands/experimental.ts +69 -0
- package/server/cli/commands/init.ts +798 -0
- package/server/cli/commands/lock.ts +157 -0
- package/server/cli/commands/mcp.ts +285 -0
- package/server/cli/commands/quickhack.ts +86 -0
- package/server/cli/commands/release-check.ts +231 -0
- package/server/cli/commands/restore.ts +314 -0
- package/server/cli/commands/service.ts +320 -0
- package/server/cli/commands/shell-hook.ts +512 -0
- package/server/cli/commands/skill.ts +216 -0
- package/server/cli/commands/start.ts +139 -0
- package/server/cli/commands/status.ts +59 -0
- package/server/cli/commands/stop.ts +36 -0
- package/server/cli/commands/token.ts +180 -0
- package/server/cli/commands/unlock.ts +50 -0
- package/server/cli/commands/vault.ts +1323 -0
- package/server/cli/commands/wallet.ts +209 -0
- package/server/cli/index.ts +280 -0
- package/server/cli/lib/approval-poll.ts +94 -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 +280 -0
- package/server/cli/lib/dotenv-migrate.ts +116 -0
- package/server/cli/lib/dotenv-parser.ts +146 -0
- package/server/cli/lib/escalation.ts +57 -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/lock-unlock-helper.ts +71 -0
- package/server/cli/lib/process.ts +162 -0
- package/server/cli/lib/prompt.ts +294 -0
- package/server/cli/lib/theme.ts +240 -0
- package/server/cli/socket.ts +579 -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 +420 -0
- package/server/lib/adapters/factory.ts +119 -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 +419 -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 +258 -0
- package/server/lib/app-installer.ts +505 -0
- package/server/lib/app-tokens.ts +247 -0
- package/server/lib/approval-link.ts +27 -0
- package/server/lib/auth.ts +314 -0
- package/server/lib/auto-execute.ts +160 -0
- package/server/lib/batch.ts +242 -0
- package/server/lib/cold.ts +1048 -0
- package/server/lib/config.ts +408 -0
- package/server/lib/credential-access-audit.ts +85 -0
- package/server/lib/credential-access-policy.ts +111 -0
- package/server/lib/credential-health.ts +343 -0
- package/server/lib/credential-import.ts +608 -0
- package/server/lib/credential-scope.ts +102 -0
- package/server/lib/credential-shares.ts +190 -0
- package/server/lib/credential-transport.ts +533 -0
- package/server/lib/credential-vault.ts +77 -0
- package/server/lib/credentials.ts +422 -0
- package/server/lib/crypto.ts +8 -0
- package/server/lib/db.ts +58 -0
- package/server/lib/defaults.ts +386 -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/diary.ts +34 -0
- package/server/lib/dont-ask-again-policy.ts +41 -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 +114 -0
- package/server/lib/error.ts +20 -0
- package/server/lib/events.ts +217 -0
- package/server/lib/feature-flags.ts +93 -0
- package/server/lib/hot.ts +357 -0
- package/server/lib/human-action-summary.ts +80 -0
- package/server/lib/key-fingerprint.ts +28 -0
- package/server/lib/logger.ts +340 -0
- package/server/lib/network.ts +137 -0
- package/server/lib/notifications.ts +230 -0
- package/server/lib/oauth2-refresh.ts +241 -0
- package/server/lib/oursecret.ts +71 -0
- package/server/lib/passkey-credential.ts +360 -0
- package/server/lib/passkey.ts +68 -0
- package/server/lib/permissions.ts +299 -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 +297 -0
- package/server/lib/resolve-action.ts +328 -0
- package/server/lib/resolve.ts +36 -0
- package/server/lib/secret-gist-share.ts +296 -0
- package/server/lib/sessions.ts +634 -0
- package/server/lib/socket-path.ts +56 -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 +159 -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 +237 -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 +84 -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/update-check.ts +35 -0
- package/server/lib/verified-summary.ts +414 -0
- package/server/lib/view-registry.ts +80 -0
- package/server/mcp/profile-policy.ts +30 -0
- package/server/mcp/server.ts +1589 -0
- package/server/mcp/tools.ts +276 -0
- package/server/middleware/auth.ts +119 -0
- package/server/middleware/requestLogger.ts +84 -0
- package/server/routes/actions.ts +539 -0
- package/server/routes/adapters.ts +711 -0
- package/server/routes/addressbook.ts +113 -0
- package/server/routes/ai.ts +34 -0
- package/server/routes/apikeys.ts +343 -0
- package/server/routes/apps.ts +601 -0
- package/server/routes/auth.ts +406 -0
- package/server/routes/backup.ts +404 -0
- package/server/routes/batch.ts +270 -0
- package/server/routes/bookmarks.ts +162 -0
- package/server/routes/credential-shares.ts +380 -0
- package/server/routes/credential-vaults.ts +159 -0
- package/server/routes/credentials.ts +1782 -0
- package/server/routes/dashboard.ts +97 -0
- package/server/routes/defaults.ts +124 -0
- package/server/routes/flags.ts +11 -0
- package/server/routes/fund.ts +225 -0
- package/server/routes/heartbeat.ts +375 -0
- package/server/routes/import.ts +364 -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 +366 -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 +352 -0
- package/server/routes/swap-solana.ts +176 -0
- package/server/routes/swap.ts +356 -0
- package/server/routes/token.ts +247 -0
- package/server/routes/unlock.ts +467 -0
- package/server/routes/views.ts +41 -0
- package/server/routes/wallet-assets.ts +361 -0
- package/server/routes/wallet-transactions.ts +515 -0
- package/server/routes/wallet.ts +709 -0
- package/server/types.ts +146 -0
- package/shared/credential-field-schema.ts +248 -0
- package/skills/auramaxx/HEARTBEAT.md +78 -0
- package/skills/auramaxx/SKILL.md +745 -0
- package/skills/auramaxx/docs/AGENT_SETUP.md +155 -0
- package/skills/auramaxx/docs/API.md +127 -0
- package/skills/auramaxx/docs/AUTH.md +318 -0
- package/skills/auramaxx/docs/CLI.md +130 -0
- package/skills/auramaxx/docs/MCP.md +122 -0
- package/skills/auramaxx/docs/TROUBLESHOOTING.md +357 -0
- package/skills/auramaxx/docs/WORKSPACE.md +673 -0
- package/skills/auramaxx/docs/security.md +227 -0
- package/skills/task-lifecycle/SKILL.md +378 -0
- package/src/app/api/[...doc]/page.tsx +36 -0
- package/src/app/api/agent-requests/route.ts +30 -0
- package/src/app/api/apps/install/route.ts +132 -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/docs/plain/route.ts +74 -0
- package/src/app/api/events/route.ts +92 -0
- package/src/app/api/page.tsx +290 -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 +40 -0
- package/src/app/api/workspace/config/route.ts +121 -0
- package/src/app/api/workspace/import/route.ts +127 -0
- package/src/app/api/workspace/route.ts +116 -0
- package/src/app/app-legacy-do-not-use/page.tsx +2245 -0
- package/src/app/apple-icon.png +0 -0
- package/src/app/approve/[actionId]/page.tsx +409 -0
- package/src/app/docs/DocsPageContent.tsx +269 -0
- package/src/app/docs/[...doc]/page.tsx +41 -0
- package/src/app/docs/page.tsx +38 -0
- package/src/app/favicon.ico +0 -0
- package/src/app/globals.css +819 -0
- package/src/app/health/page.tsx +5 -0
- package/src/app/hello/page.tsx +102 -0
- package/src/app/icon.png +0 -0
- package/src/app/layout.tsx +39 -0
- package/src/app/page.tsx +1964 -0
- package/src/app/privacy/page.tsx +63 -0
- package/src/app/providers.tsx +87 -0
- package/src/app/share/[token]/page.tsx +295 -0
- package/src/app/terms/page.tsx +80 -0
- package/src/components/ChainSelector.tsx +44 -0
- package/src/components/HumanActionBar.tsx +697 -0
- package/src/components/NotificationDrawer.tsx +387 -0
- package/src/components/PasskeyEnrollmentPrompt.tsx +235 -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 +88 -0
- package/src/components/design-system/ChainIndicator.tsx +65 -0
- package/src/components/design-system/ChainSelector.tsx +147 -0
- package/src/components/design-system/ConfirmationModal.tsx +107 -0
- package/src/components/design-system/ConfirmationPopover.tsx +81 -0
- package/src/components/design-system/DownloadButton.tsx +149 -0
- package/src/components/design-system/Drawer.tsx +133 -0
- package/src/components/design-system/FilterDropdown.tsx +183 -0
- package/src/components/design-system/ItemPicker.tsx +157 -0
- package/src/components/design-system/Modal.tsx +296 -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 +65 -0
- package/src/components/design-system/TyvekCollapsibleSection.tsx +55 -0
- package/src/components/design-system/index.ts +14 -0
- package/src/components/docs/ClientSideMarkdown.tsx +51 -0
- package/src/components/docs/DocsSearchBar.tsx +118 -0
- package/src/components/docs/DocsThemeToggle.tsx +38 -0
- package/src/components/docs/PersistentDocGroup.tsx +91 -0
- package/src/components/docs/ShareUrlButton.tsx +33 -0
- package/src/components/docs/SidebarScrollMemory.tsx +56 -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/CreateViewModal.tsx +88 -0
- package/src/components/layout/LeftRail.tsx +114 -0
- package/src/components/layout/TabBar.tsx +284 -0
- package/src/components/layout/WalletSidebar.tsx +1030 -0
- package/src/components/layout/index.ts +6 -0
- package/src/components/marketing/AuraMaxxSpecOverlay.tsx +653 -0
- package/src/components/marketing/DeviceMorphExperience.tsx +216 -0
- package/src/components/vault/ApiKeysConsole.tsx +1272 -0
- package/src/components/vault/AuditConsole.tsx +600 -0
- package/src/components/vault/CredentialDetail.tsx +625 -0
- package/src/components/vault/CredentialEmpty.tsx +55 -0
- package/src/components/vault/CredentialField.tsx +583 -0
- package/src/components/vault/CredentialForm.tsx +1484 -0
- package/src/components/vault/CredentialList.tsx +265 -0
- package/src/components/vault/CredentialRow.tsx +130 -0
- package/src/components/vault/CredentialShareModal.tsx +273 -0
- package/src/components/vault/CredentialVault.tsx +1662 -0
- package/src/components/vault/CredentialWalletWidget.tsx +103 -0
- package/src/components/vault/DocsConsole.tsx +113 -0
- package/src/components/vault/ImportCredentialsModal.tsx +578 -0
- package/src/components/vault/LargeTypeModal.tsx +88 -0
- package/src/components/vault/PasswordGenerator.tsx +232 -0
- package/src/components/vault/TOTPDisplay.tsx +108 -0
- package/src/components/vault/TotpSetupPanel.tsx +198 -0
- package/src/components/vault/VaultSidebar.tsx +881 -0
- package/src/components/vault/credentialFormName.ts +91 -0
- package/src/components/vault/hooks/useVaultKeyboardShortcuts.ts +69 -0
- package/src/components/vault/types.ts +56 -0
- package/src/context/AuthContext.tsx +365 -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 +4 -0
- package/src/hooks/useAgentActions.ts +552 -0
- package/src/hooks/useBalance.ts +103 -0
- package/src/hooks/useBalances.ts +129 -0
- package/src/hooks/useTheme.ts +156 -0
- package/src/instrumentation.ts +12 -0
- package/src/lib/api-docs.ts +154 -0
- package/src/lib/api.ts +474 -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/credential-field-schema.ts +11 -0
- package/src/lib/crypto.ts +112 -0
- package/src/lib/db.ts +21 -0
- package/src/lib/docs.ts +544 -0
- package/src/lib/events.ts +363 -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/totp-import.ts +57 -0
- package/src/lib/vault-crypto.ts +129 -0
- package/src/lib/view-registry.ts +57 -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 +170 -0
- package/tailwind.config.ts +99 -0
- package/tsconfig.json +42 -0
package/docs/API.md
ADDED
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
# AuraMaxx API
|
|
2
|
+
|
|
3
|
+
This file is the **API entrypoint** for agents.
|
|
4
|
+
|
|
5
|
+
Use this page for the common path, then jump to the deep reference docs listed below.
|
|
6
|
+
|
|
7
|
+
Server base URL:
|
|
8
|
+
|
|
9
|
+
```text
|
|
10
|
+
http://localhost:4242
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Common Path (Agent First)
|
|
14
|
+
|
|
15
|
+
### 1) Request an agent token
|
|
16
|
+
|
|
17
|
+
```http
|
|
18
|
+
POST /auth
|
|
19
|
+
Content-Type: application/json
|
|
20
|
+
|
|
21
|
+
{
|
|
22
|
+
"agentId": "my-agent",
|
|
23
|
+
"profile": "strict",
|
|
24
|
+
"profileVersion": "v1",
|
|
25
|
+
"pubkey": "<RSA public key PEM or base64>",
|
|
26
|
+
"action": { // optional: auto-execute on approval
|
|
27
|
+
"endpoint": "/send",
|
|
28
|
+
"method": "POST",
|
|
29
|
+
"body": { "to": "0x...", "amount": "0.01" }
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
When `action` is provided, the pre-computed action auto-executes with the newly-minted token after human approval.
|
|
35
|
+
|
|
36
|
+
Human approves in dashboard, then poll:
|
|
37
|
+
|
|
38
|
+
```http
|
|
39
|
+
GET /auth/:requestId?secret=:secret
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### 2) Read a secret (`get_secret`)
|
|
43
|
+
|
|
44
|
+
`get_secret` maps to credential APIs under the hood:
|
|
45
|
+
|
|
46
|
+
- find credential metadata: `GET /credentials`
|
|
47
|
+
- read encrypted fields: `POST /credentials/:id/read`
|
|
48
|
+
|
|
49
|
+
### 3) Set/update a secret (`put_secret`)
|
|
50
|
+
|
|
51
|
+
Most common write path:
|
|
52
|
+
|
|
53
|
+
```http
|
|
54
|
+
POST /credentials
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Update existing credential:
|
|
58
|
+
|
|
59
|
+
```http
|
|
60
|
+
PUT /credentials/:id
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### 4) Write diary (`write_diary`)
|
|
64
|
+
|
|
65
|
+
```http
|
|
66
|
+
POST /what_is_happening/diary
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### 5) Call broader APIs (`wallet_api`)
|
|
70
|
+
|
|
71
|
+
Common starts:
|
|
72
|
+
|
|
73
|
+
```http
|
|
74
|
+
GET /wallets
|
|
75
|
+
GET /token/search?q=PEPE&chain=base
|
|
76
|
+
POST /wallet/create
|
|
77
|
+
POST /send
|
|
78
|
+
POST /swap
|
|
79
|
+
POST /fund
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
If you get `403`, request human approval via `POST /auth` (include an `action` field for auto-execute on approval).
|
|
83
|
+
|
|
84
|
+
## Quick Common Endpoints
|
|
85
|
+
|
|
86
|
+
| Endpoint | Method | Typical Use |
|
|
87
|
+
|---|---|---|
|
|
88
|
+
| `/auth` | POST | Request token (approval flow) |
|
|
89
|
+
| `/auth/:requestId?secret=...` | GET | Poll token request status |
|
|
90
|
+
| `/credentials` | GET | List credential metadata |
|
|
91
|
+
| `/credentials` | POST | Create credential |
|
|
92
|
+
| `/credentials/:id/read` | POST | Read credential (encrypted response) |
|
|
93
|
+
| `/credentials/:id` | PUT | Update credential |
|
|
94
|
+
| `/credential-shares` | POST | Create share link |
|
|
95
|
+
| `/credential-shares/gist` | POST | Create GitHub secret gist share |
|
|
96
|
+
| `/what_is_happening/diary` | POST | Append diary note |
|
|
97
|
+
| `/wallets` | GET | List wallets |
|
|
98
|
+
|
|
99
|
+
## Read More In Depth (Complete API Docs Map)
|
|
100
|
+
|
|
101
|
+
All API docs files are listed here. Keep this section updated when adding/moving API docs.
|
|
102
|
+
|
|
103
|
+
### Getting Started
|
|
104
|
+
|
|
105
|
+
- `docs/API.md` (this file)
|
|
106
|
+
- [`docs/api/authentication.md`](/api?doc=api/authentication.md)
|
|
107
|
+
|
|
108
|
+
### Secrets
|
|
109
|
+
|
|
110
|
+
- [`docs/api/secrets/credentials.md`](/api?doc=api/secrets/credentials.md)
|
|
111
|
+
- [`docs/api/secrets/sharing.md`](/api?doc=api/secrets/sharing.md)
|
|
112
|
+
- [`docs/api/secrets/api-keys.md`](/api?doc=api/secrets/api-keys.md)
|
|
113
|
+
|
|
114
|
+
### Wallets
|
|
115
|
+
|
|
116
|
+
- [`docs/api/wallets/core.md`](/api?doc=api/wallets/core.md)
|
|
117
|
+
- [`docs/api/wallets/data-portfolio.md`](/api?doc=api/wallets/data-portfolio.md)
|
|
118
|
+
- [`docs/api/wallets/apps-strategies.md`](/api?doc=api/wallets/apps-strategies.md)
|
|
119
|
+
|
|
120
|
+
### System
|
|
121
|
+
|
|
122
|
+
- [`docs/api/system.md`](/api?doc=api/system.md)
|
|
123
|
+
|
|
124
|
+
## Related Docs
|
|
125
|
+
|
|
126
|
+
- [AUTH.md](/docs/AUTH.md) — full auth/permission model
|
|
127
|
+
- [MCP.md](/docs/MCP.md) — MCP tools and usage
|
package/docs/APPS.md
ADDED
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
# Apps
|
|
2
|
+
|
|
3
|
+
Overview of the AuraMaxx app system — what apps are, how to install them, and how to create a minimal one.
|
|
4
|
+
|
|
5
|
+
For the full developer reference (manifest format, SDK API, theming, security model, strategy hooks, examples), see [DEVELOPING-APPS.md](./DEVELOPING-APPS.md).
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Overview
|
|
10
|
+
|
|
11
|
+
Apps are self-contained HTML applications that run inside sandboxed iframes on the AuraMaxx dashboard. There are two kinds:
|
|
12
|
+
|
|
13
|
+
- **Built-in apps** -- React components registered in `src/lib/app-registry.ts` (wallets, logs, send, etc.)
|
|
14
|
+
- **Installed apps** -- standalone HTML+JS bundles installed as folders under `apps/`
|
|
15
|
+
|
|
16
|
+
Apps can also be extended with AI capabilities by adding strategy fields (`ticker`, `hooks`, `sources`, etc.) to the manifest. This activates the AI engine, turning the app into a strategy that runs on a schedule or responds to messages. See [STRATEGY.md](./wallet/STRATEGY.md) for an overview and [DEVELOPING-STRATEGIES.md](./wallet/DEVELOPING-STRATEGIES.md) for the full reference.
|
|
17
|
+
|
|
18
|
+
Installed apps consist of two files in a folder inside `apps/`:
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
apps/
|
|
22
|
+
my-app/
|
|
23
|
+
app.md <-- manifest (YAML frontmatter + description)
|
|
24
|
+
index.html <-- app entry point (HTML + inline JS/CSS)
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
The system discovers apps at runtime by scanning `apps/*/app.md`. Each app's `index.html` is served via `/api/apps/static/<folder>/index.html`, then loaded into a sandboxed iframe as a blob URL with the SDK and theme CSS injected.
|
|
28
|
+
|
|
29
|
+
### How It Works (Lifecycle)
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
1. Server starts: scans apps/ → creates scoped Bearer tokens for each app
|
|
33
|
+
2. GET /api/apps/manifests returns parsed manifest data to the App Store UI
|
|
34
|
+
3. User clicks "ADD" in App Store
|
|
35
|
+
4. ThirdPartyApp component fetches /api/apps/static/<id>/index.html
|
|
36
|
+
5. ThirdPartyApp fetches GET /apps/<id>/token to get the app's Bearer token
|
|
37
|
+
6. Host injects: theme CSS + token globals + App SDK script + app HTML
|
|
38
|
+
7. Combined HTML is turned into a blob URL and loaded in a sandboxed iframe
|
|
39
|
+
8. SDK makes direct fetch() calls to Express :4242/apps/<id>/storage/* with Bearer token
|
|
40
|
+
9. SDK makes direct fetch() calls to Express :4242/apps/<id>/message for send()
|
|
41
|
+
10. SDK proxies external API requests through Express :4242/apps/<id>/fetch
|
|
42
|
+
11. postMessage used only for on() subscriptions (host-bridged)
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Installing Apps
|
|
48
|
+
|
|
49
|
+
Apps can be installed from git repos, tarballs, zips, or local paths using the CLI or the dashboard UI.
|
|
50
|
+
|
|
51
|
+
### CLI
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
# Install from a git repo
|
|
55
|
+
auramaxx app install github.com/user/my-app
|
|
56
|
+
|
|
57
|
+
# Install from a git repo subdirectory
|
|
58
|
+
auramaxx app install github.com/user/repo#path=apps/my-app
|
|
59
|
+
|
|
60
|
+
# Install from a local path
|
|
61
|
+
auramaxx app install ./path/to/app
|
|
62
|
+
|
|
63
|
+
# Install from a tarball or zip
|
|
64
|
+
auramaxx app install https://example.com/app.tar.gz
|
|
65
|
+
|
|
66
|
+
# Override the app folder name
|
|
67
|
+
auramaxx app install github.com/user/app --name custom-id
|
|
68
|
+
|
|
69
|
+
# Overwrite an existing app
|
|
70
|
+
auramaxx app install github.com/user/app --force
|
|
71
|
+
|
|
72
|
+
# List all installed apps
|
|
73
|
+
auramaxx app list
|
|
74
|
+
|
|
75
|
+
# Update an app from its original source
|
|
76
|
+
auramaxx app update my-app
|
|
77
|
+
|
|
78
|
+
# Remove an app
|
|
79
|
+
auramaxx app remove my-app
|
|
80
|
+
|
|
81
|
+
# Remove without confirmation prompt
|
|
82
|
+
auramaxx app remove my-app --yes
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Dashboard UI
|
|
86
|
+
|
|
87
|
+
1. Open the App Store drawer (click the "+" button on the dashboard)
|
|
88
|
+
2. Select the **ALL** or **INSTALLED** tab
|
|
89
|
+
3. Paste a source URL into the "Install from URL" input at the top
|
|
90
|
+
4. Click **INSTALL** (or press Enter)
|
|
91
|
+
5. The app appears in the installed list immediately
|
|
92
|
+
|
|
93
|
+
### Supported Sources
|
|
94
|
+
|
|
95
|
+
| Pattern | Type | Example |
|
|
96
|
+
|---------|------|---------|
|
|
97
|
+
| Starts with `.` or `/` | Local copy | `./apps/my-app` |
|
|
98
|
+
| Ends with `.tar.gz` / `.tgz` | Tarball download | `https://example.com/app.tar.gz` |
|
|
99
|
+
| Ends with `.zip` | Zip download | `https://example.com/app.zip` |
|
|
100
|
+
| Everything else | Git clone | `github.com/user/repo` |
|
|
101
|
+
| `#path=subdir` fragment | Subdirectory | `github.com/user/repo#path=apps/foo` |
|
|
102
|
+
|
|
103
|
+
### Validation
|
|
104
|
+
|
|
105
|
+
The installer validates each app before copying it to `apps/`:
|
|
106
|
+
|
|
107
|
+
- `app.md` must exist with valid YAML frontmatter
|
|
108
|
+
- `index.html` is loaded if present (optional — headless apps use a default UI)
|
|
109
|
+
- No symlinks escaping the app directory
|
|
110
|
+
- No file larger than 5MB
|
|
111
|
+
- Total size under 20MB
|
|
112
|
+
- No ID conflict with existing apps (unless `--force`)
|
|
113
|
+
|
|
114
|
+
### Provenance
|
|
115
|
+
|
|
116
|
+
Each installed app gets a `.source.json` file recording where it was installed from:
|
|
117
|
+
|
|
118
|
+
```json
|
|
119
|
+
{
|
|
120
|
+
"type": "git",
|
|
121
|
+
"url": "https://github.com/user/my-app.git",
|
|
122
|
+
"ref": null,
|
|
123
|
+
"subdir": null,
|
|
124
|
+
"installedAt": "2026-02-10T12:00:00.000Z"
|
|
125
|
+
}
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
This file is used by `auramaxx app update <id>` to re-install from the original source.
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## Quick Start
|
|
133
|
+
|
|
134
|
+
Create a minimal app in 3 steps:
|
|
135
|
+
|
|
136
|
+
### 1. Create the folder
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
mkdir apps/hello-world
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### 2. Create the manifest (`apps/hello-world/app.md`)
|
|
143
|
+
|
|
144
|
+
```markdown
|
|
145
|
+
---
|
|
146
|
+
name: Hello World
|
|
147
|
+
icon: Smile
|
|
148
|
+
category: general
|
|
149
|
+
size: 1x1
|
|
150
|
+
permissions:
|
|
151
|
+
data:
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
A minimal example app that displays a greeting.
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### 3. Create the entry point (`apps/hello-world/index.html`)
|
|
158
|
+
|
|
159
|
+
```html
|
|
160
|
+
<!DOCTYPE html>
|
|
161
|
+
<html>
|
|
162
|
+
<head>
|
|
163
|
+
<style>
|
|
164
|
+
body {
|
|
165
|
+
font-family: ui-monospace, monospace;
|
|
166
|
+
background: var(--color-surface, #fff);
|
|
167
|
+
color: var(--color-text, #0a0a0a);
|
|
168
|
+
display: flex;
|
|
169
|
+
align-items: center;
|
|
170
|
+
justify-content: center;
|
|
171
|
+
height: 100vh;
|
|
172
|
+
font-size: 12px;
|
|
173
|
+
}
|
|
174
|
+
</style>
|
|
175
|
+
</head>
|
|
176
|
+
<body>
|
|
177
|
+
<div>Hello from an app!</div>
|
|
178
|
+
</body>
|
|
179
|
+
</html>
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
The app will appear in the App Store under the "INSTALLED" tab. Click "ADD" to place it on your workspace.
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
## Built-in Apps
|
|
187
|
+
|
|
188
|
+
These apps ship with AuraMaxx and appear in the App Store under "BUILT-IN":
|
|
189
|
+
|
|
190
|
+
| Type | Title | Singleton | Description |
|
|
191
|
+
|------|-------|:---------:|-------------|
|
|
192
|
+
| `logs` | EVENT LOGS | Yes | Real-time event log viewer |
|
|
193
|
+
| `send` | SEND | Yes | Send transactions from hot wallets |
|
|
194
|
+
| `agentKeys` | AGENT KEYS | Yes | View and manage agent tokens |
|
|
195
|
+
| `token` | TOKEN | No | Market data for a token |
|
|
196
|
+
| `setup` | GETTING STARTED | Yes | First-time setup wizard |
|
|
197
|
+
| `transactions` | TRANSACTIONS | Yes | Transaction history log |
|
|
198
|
+
| `walletDetail` | WALLET | No | Detailed view of a single wallet |
|
|
199
|
+
| `iframe` | IFRAME | No | Embed any URL in an iframe |
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
# Architecture
|
|
2
|
+
|
|
3
|
+
How AuraMaxx works, from the simple version to the full security model.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## What AuraMaxx Is
|
|
8
|
+
|
|
9
|
+
AuraMaxx is a local-first credential and wallet manager designed for AI agents. It runs on your machine, stores secrets encrypted on disk, and gives agents scoped access through short-lived tokens that a human must approve.
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
Human unlocks vault → Agent requests access → Human approves → Agent gets scoped token
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
That's it. Everything else is enforcement.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## The Simple Version
|
|
20
|
+
|
|
21
|
+
**Three things run locally:**
|
|
22
|
+
|
|
23
|
+
1. **Wallet server** (`:4242`) — the API. Handles auth, wallets, credentials, transactions.
|
|
24
|
+
2. **Dashboard** (`:4747`) — web UI for approvals, wallet management, monitoring.
|
|
25
|
+
3. **Cron** — background jobs (balance sync, price updates). No HTTP port.
|
|
26
|
+
|
|
27
|
+
**Data lives in `~/.auramaxx/`** — SQLite database, encrypted vault files, config. All local, outside the repo.
|
|
28
|
+
|
|
29
|
+
**Agents talk to the wallet server** with a Bearer token. Humans interact through the dashboard or CLI.
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## How Agents Get Access
|
|
34
|
+
|
|
35
|
+
Agents cannot self-issue tokens. Every token starts with a human decision.
|
|
36
|
+
|
|
37
|
+
### The standard flow
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
1. Agent sends POST /auth with { agentId, profile, pubkey }
|
|
41
|
+
2. Server creates a pending request, returns requestId + secret + approveUrl
|
|
42
|
+
3. Human opens approval URL, reviews permissions, approves or denies
|
|
43
|
+
4. Agent polls GET /auth/:requestId?secret=... and claims the encrypted token
|
|
44
|
+
5. Agent uses token as Bearer header on all subsequent API calls
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
The token is encrypted to the agent's RSA public key during transport — the server never sends a plaintext token over the wire.
|
|
48
|
+
|
|
49
|
+
### Why profiles instead of raw permissions
|
|
50
|
+
|
|
51
|
+
Agents request access by **profile name** (`strict`, `dev`, `admin`), not by listing individual permissions. This is intentional:
|
|
52
|
+
|
|
53
|
+
- Profiles bundle sensible defaults — permissions, vault scopes, field redactions, TTL, read limits
|
|
54
|
+
- Agents cannot request arbitrary permission sets on the standard path (`POST /auth` rejects raw `permissions`, `ttl`, and `credentialAccess`)
|
|
55
|
+
- Humans review a known profile with predictable behavior, not an ad-hoc permission list
|
|
56
|
+
- Overrides are **tighten-only** — an agent can ask for less access than a profile grants, never more
|
|
57
|
+
|
|
58
|
+
See [AUTH.md — Built-in Profiles](./AUTH.md#built-in-profiles-v1) for the full profile breakdown.
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Why It's Secure
|
|
63
|
+
|
|
64
|
+
### 1. Memory-only auth state
|
|
65
|
+
|
|
66
|
+
The core security property: **auth decisions never touch the database**.
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
IN MEMORY (drives all auth): IN DATABASE (display only):
|
|
70
|
+
├── SIGNING_KEY (random 32 bytes) ├── AgentToken table
|
|
71
|
+
├── sessions Map (spending tracking) │ ├── tokenHash
|
|
72
|
+
├── revokedTokens Set │ ├── agentId, limit, spent
|
|
73
|
+
└── pendingRequests Map │ └── isRevoked, expiresAt
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
- `SIGNING_KEY` is generated fresh on every server start — all old tokens are instantly invalid
|
|
77
|
+
- A stolen database is useless without the in-memory key
|
|
78
|
+
- Token validation checks memory signature + expiry + revocation status, never the DB
|
|
79
|
+
- Restart = forced re-approval = security feature, not a bug
|
|
80
|
+
|
|
81
|
+
### 2. Three-layer enforcement
|
|
82
|
+
|
|
83
|
+
Every API call passes through three independent checks:
|
|
84
|
+
|
|
85
|
+
**Layer 1 — Profile issuance** (what the token was created with):
|
|
86
|
+
- Permissions, vault scopes, field exclusions, TTL, read budget
|
|
87
|
+
- Set at creation time, cannot be modified after
|
|
88
|
+
|
|
89
|
+
**Layer 2 — Route middleware** (checked on every request):
|
|
90
|
+
- Signature validation against in-memory `SIGNING_KEY`
|
|
91
|
+
- Expiry check
|
|
92
|
+
- Revocation check
|
|
93
|
+
- Permission check (`requirePermission` / `hasAnyPermission`)
|
|
94
|
+
|
|
95
|
+
**Layer 3 — Credential access policy** (for secret operations):
|
|
96
|
+
- Vault/tag/ID selector matching
|
|
97
|
+
- Per-token read budget tracking
|
|
98
|
+
- Field minimization (`excludeFields` strips sensitive data before encryption)
|
|
99
|
+
- Rate limiting per credential per minute
|
|
100
|
+
|
|
101
|
+
A request must pass all three layers. Issuance defines the ceiling; runtime enforcement is the live guardrail.
|
|
102
|
+
|
|
103
|
+
### 3. Encrypted transport everywhere
|
|
104
|
+
|
|
105
|
+
- **Vault unlock**: password is RSA-OAEP encrypted before transmission (server pubkey from `GET /auth/connect`)
|
|
106
|
+
- **Token claim**: token is encrypted to the agent's RSA public key
|
|
107
|
+
- **Secret reads**: credential fields are encrypted to the caller's key material
|
|
108
|
+
- No plaintext secrets cross the wire in normal operation
|
|
109
|
+
|
|
110
|
+
### 4. Human approval gate
|
|
111
|
+
|
|
112
|
+
Every token issuance path requires human involvement:
|
|
113
|
+
|
|
114
|
+
| Path | Human gate |
|
|
115
|
+
|------|-----------|
|
|
116
|
+
| `POST /auth` | Human must approve the pending request |
|
|
117
|
+
| `POST /actions` | Human must resolve the action (`/actions/:id/resolve`) |
|
|
118
|
+
| `POST /actions/token` | Caller must already have admin token |
|
|
119
|
+
| Socket bootstrap | Trust-dependent (configurable, default: `localAutoApprove = false`) |
|
|
120
|
+
|
|
121
|
+
Agents cannot escalate their own permissions — `admin:*` and `action:create` are blocked from self-escalation via `POST /actions`.
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## Credential Vault
|
|
126
|
+
|
|
127
|
+
Credentials are the core data type. The vault provides encrypted storage with scoped access.
|
|
128
|
+
|
|
129
|
+
### Encryption
|
|
130
|
+
|
|
131
|
+
```
|
|
132
|
+
Vault Mnemonic → HKDF("credential-v1:<vaultId>") → Per-Vault Key → AES-256-GCM per credential
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
- Each vault derives its own encryption key from its mnemonic
|
|
136
|
+
- Credentials are individual encrypted files under `~/.auramaxx/credentials/`
|
|
137
|
+
- Metadata (name, type, tags) stays plaintext for listing/search
|
|
138
|
+
- Sensitive fields are encrypted at rest and in transport
|
|
139
|
+
|
|
140
|
+
### Access control
|
|
141
|
+
|
|
142
|
+
Token-level scoping via `credentialAccess`:
|
|
143
|
+
|
|
144
|
+
- **Selectors** define where: `vault:agent`, `vault:*`, `tag:<label>`, `cred-xxxxx`, `*`
|
|
145
|
+
- **Permissions** define what: `secret:read`, `secret:write`, `totp:read`
|
|
146
|
+
- **Limits** define how much: `maxReads`, `ttl`, per-credential rate limits
|
|
147
|
+
- **Field minimization** defines visibility: `excludeFields` strips fields before they're encrypted to the caller
|
|
148
|
+
|
|
149
|
+
Mental model: permissions say **action**, selectors say **scope**, limits say **budget**.
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## Process Model
|
|
154
|
+
|
|
155
|
+
```
|
|
156
|
+
┌────────────────────┐ ┌────────────────────┐
|
|
157
|
+
│ Express :4242 │ │ Dashboard :4747 │
|
|
158
|
+
│ Wallet API │◄────│ Next.js UI │
|
|
159
|
+
└────────┬───────────┘ └────────┬────────────┘
|
|
160
|
+
│ │
|
|
161
|
+
▼ ▼
|
|
162
|
+
┌────────────────────┐ ┌────────────────────┐
|
|
163
|
+
│ WebSocket :4748 │◄────│ Cron (background) │
|
|
164
|
+
│ Event broadcast │ │ Balance sync │
|
|
165
|
+
└────────────────────┘ │ Price updates │
|
|
166
|
+
└────────────────────┘
|
|
167
|
+
┌────────────────────┐
|
|
168
|
+
│ MCP Server │
|
|
169
|
+
│ stdio transport │──── HTTP ───► Express :4242
|
|
170
|
+
│ Claude/Cursor/etc │
|
|
171
|
+
└────────────────────┘
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
| Process | Port | Purpose |
|
|
175
|
+
|---------|------|---------|
|
|
176
|
+
| **Express** | 4242 | Wallet API — auth, wallets, credentials, transactions |
|
|
177
|
+
| **Dashboard** | 4747 / 4748 (WS) | Web UI + real-time event broadcast |
|
|
178
|
+
| **Cron** | None | Background jobs — balance sync, price updates |
|
|
179
|
+
| **MCP** | None (stdio) | Tool interface for AI agents (Claude, Cursor, etc.) |
|
|
180
|
+
|
|
181
|
+
All processes communicate through WebSocket broadcasts and HTTP calls to Express.
|
|
182
|
+
|
|
183
|
+
### Data directory (`~/.auramaxx/`)
|
|
184
|
+
|
|
185
|
+
| Path | Purpose |
|
|
186
|
+
|------|---------|
|
|
187
|
+
| `auramaxx.db` | SQLite database |
|
|
188
|
+
| `vault-primary.json` | Primary vault (encrypted seed phrase) |
|
|
189
|
+
| `vault-*.json` | Additional vaults |
|
|
190
|
+
| `config.json` | Chain configs, server port |
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## Middleware Stack
|
|
195
|
+
|
|
196
|
+
```
|
|
197
|
+
Request
|
|
198
|
+
│
|
|
199
|
+
├─ CORS
|
|
200
|
+
├─ JSON body parser
|
|
201
|
+
├─ Rate limiters (hot-reloadable)
|
|
202
|
+
│ ├─ Brute-force: 5/15min → /unlock, /setup, /actions, /nuke
|
|
203
|
+
│ ├─ Auth: 10/min → /auth
|
|
204
|
+
│ ├─ Transaction: 30/min → /send, /swap, /fund, /launch
|
|
205
|
+
│ └─ General: 100/min → everything else
|
|
206
|
+
├─ Request logging
|
|
207
|
+
└─ Error handler
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
Rate limits are configurable via SystemDefaults (hot-reloadable without restart).
|
|
211
|
+
|
|
212
|
+
---
|
|
213
|
+
|
|
214
|
+
## Token Lifecycle
|
|
215
|
+
|
|
216
|
+
```
|
|
217
|
+
Agent requests token → Pending (in memory, waiting for human)
|
|
218
|
+
Human approves → Token signed with SIGNING_KEY, encrypted to agent pubkey
|
|
219
|
+
Agent claims token → One-time claim, token cleared from escrow
|
|
220
|
+
Agent uses token → Every call: signature + expiry + revocation + permission check
|
|
221
|
+
Spending tracked in memory, synced to DB for display
|
|
222
|
+
Server restarts → Memory wiped, new SIGNING_KEY, all tokens invalid
|
|
223
|
+
Agent must re-request, human must re-approve
|
|
224
|
+
Token revoked → Added to revokedTokens set, immediately rejected
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
## Related Docs
|
|
230
|
+
|
|
231
|
+
- [Auth](./AUTH.md) — practical auth guide, profile builder, CLI examples
|
|
232
|
+
- [Security](./security.md) — security model deep dive, enforcement details
|
|
233
|
+
- [MCP](./MCP.md) — MCP server configuration and tool reference
|
|
234
|
+
- [CLI](./CLI.md) — headless CLI mode
|
|
235
|
+
- [Credentials](./credentials.md) — credential types and vault reference
|