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.
Files changed (418) hide show
  1. package/LICENSE +26 -0
  2. package/README.md +77 -0
  3. package/apps/desktop-electron/main.js +428 -0
  4. package/bin/auramaxx.js +1063 -0
  5. package/docs/ADAPTERS.md +466 -0
  6. package/docs/AGENT_SETUP.md +159 -0
  7. package/docs/API.md +127 -0
  8. package/docs/APPS.md +199 -0
  9. package/docs/ARCHITECTURE.md +235 -0
  10. package/docs/AUTH.md +318 -0
  11. package/docs/BEST-PRACTICES.md +82 -0
  12. package/docs/CLI.md +141 -0
  13. package/docs/DESKTOP_ELECTRON.md +26 -0
  14. package/docs/DEVELOPING-APPS.md +453 -0
  15. package/docs/MCP.md +122 -0
  16. package/docs/PACKAGING_POLICY.md +19 -0
  17. package/docs/PERMISSION.md +137 -0
  18. package/docs/PROTOCOL.md +142 -0
  19. package/docs/README.md +50 -0
  20. package/docs/SKILLS.md +132 -0
  21. package/docs/TROUBLESHOOTING.md +376 -0
  22. package/docs/WORKSPACE.md +673 -0
  23. package/docs/agent-auth.md +14 -0
  24. package/docs/api/authentication.md +79 -0
  25. package/docs/api/secrets/api-keys.md +28 -0
  26. package/docs/api/secrets/credentials.md +80 -0
  27. package/docs/api/secrets/sharing.md +48 -0
  28. package/docs/api/system.md +41 -0
  29. package/docs/api/wallets/apps-strategies.md +66 -0
  30. package/docs/api/wallets/core.md +46 -0
  31. package/docs/api/wallets/data-portfolio.md +42 -0
  32. package/docs/aura-file.md +48 -0
  33. package/docs/core-concepts/FEATURES.md +114 -0
  34. package/docs/credentials.md +120 -0
  35. package/docs/external/HOW_TO_AURAMAXX/GETTING_SECRETS.md +33 -0
  36. package/docs/external/HOW_TO_AURAMAXX/README.md +45 -0
  37. package/docs/external/getting-started.md +10 -0
  38. package/docs/external/overview.md +19 -0
  39. package/docs/external/persona-paths.md +7 -0
  40. package/docs/external/share-secret.md +76 -0
  41. package/docs/external/why-aura.md +7 -0
  42. package/docs/security.md +227 -0
  43. package/docs/templates/RELEASE_NOTES_TEMPLATE.md +22 -0
  44. package/docs/wallet/AI.md +508 -0
  45. package/docs/wallet/DEVELOPING-STRATEGIES.md +713 -0
  46. package/docs/wallet/README.md +47 -0
  47. package/docs/wallet/STRATEGY.md +89 -0
  48. package/next.config.ts +28 -0
  49. package/package.json +167 -0
  50. package/postcss.config.mjs +8 -0
  51. package/prisma/migrations/20260214170000_baseline/migration.sql +511 -0
  52. package/prisma/migrations/20260216214537_add_passkey_model/migration.sql +18 -0
  53. package/prisma/migrations/20260217150500_add_credential_access_audit/migration.sql +31 -0
  54. package/prisma/migrations/20260222090000_update_admin_ttl_default/migration.sql +10 -0
  55. package/prisma/migrations/migration_lock.toml +3 -0
  56. package/prisma/schema.prisma +447 -0
  57. package/public/logo.webp +0 -0
  58. package/scripts/add-app.js +245 -0
  59. package/server/abi/SwapHelper.json +438 -0
  60. package/server/cli/approval.ts +447 -0
  61. package/server/cli/commands/actions.ts +474 -0
  62. package/server/cli/commands/api.ts +220 -0
  63. package/server/cli/commands/apikey.ts +277 -0
  64. package/server/cli/commands/app.ts +204 -0
  65. package/server/cli/commands/auth.ts +464 -0
  66. package/server/cli/commands/cron.ts +24 -0
  67. package/server/cli/commands/diary.ts +274 -0
  68. package/server/cli/commands/doctor.ts +1247 -0
  69. package/server/cli/commands/env.ts +476 -0
  70. package/server/cli/commands/experimental.ts +69 -0
  71. package/server/cli/commands/init.ts +798 -0
  72. package/server/cli/commands/lock.ts +157 -0
  73. package/server/cli/commands/mcp.ts +285 -0
  74. package/server/cli/commands/quickhack.ts +86 -0
  75. package/server/cli/commands/release-check.ts +231 -0
  76. package/server/cli/commands/restore.ts +314 -0
  77. package/server/cli/commands/service.ts +320 -0
  78. package/server/cli/commands/shell-hook.ts +512 -0
  79. package/server/cli/commands/skill.ts +216 -0
  80. package/server/cli/commands/start.ts +139 -0
  81. package/server/cli/commands/status.ts +59 -0
  82. package/server/cli/commands/stop.ts +36 -0
  83. package/server/cli/commands/token.ts +180 -0
  84. package/server/cli/commands/unlock.ts +50 -0
  85. package/server/cli/commands/vault.ts +1323 -0
  86. package/server/cli/commands/wallet.ts +209 -0
  87. package/server/cli/index.ts +280 -0
  88. package/server/cli/lib/approval-poll.ts +94 -0
  89. package/server/cli/lib/aura-parser.ts +64 -0
  90. package/server/cli/lib/credential-create.ts +74 -0
  91. package/server/cli/lib/credential-resolve.ts +280 -0
  92. package/server/cli/lib/dotenv-migrate.ts +116 -0
  93. package/server/cli/lib/dotenv-parser.ts +146 -0
  94. package/server/cli/lib/escalation.ts +57 -0
  95. package/server/cli/lib/http.ts +91 -0
  96. package/server/cli/lib/init-steps.ts +76 -0
  97. package/server/cli/lib/local-agent-trust.ts +45 -0
  98. package/server/cli/lib/lock-unlock-helper.ts +71 -0
  99. package/server/cli/lib/process.ts +162 -0
  100. package/server/cli/lib/prompt.ts +294 -0
  101. package/server/cli/lib/theme.ts +240 -0
  102. package/server/cli/socket.ts +579 -0
  103. package/server/cli/transport-client.ts +50 -0
  104. package/server/cron/index.ts +137 -0
  105. package/server/cron/job.ts +31 -0
  106. package/server/cron/jobs/balance-sync.ts +436 -0
  107. package/server/cron/jobs/incoming-scan.ts +506 -0
  108. package/server/cron/jobs/native-price.ts +70 -0
  109. package/server/cron/jobs/orphan-cleanup.ts +40 -0
  110. package/server/cron/jobs/strategy-runner.ts +175 -0
  111. package/server/cron/scheduler.ts +125 -0
  112. package/server/index.ts +420 -0
  113. package/server/lib/adapters/factory.ts +119 -0
  114. package/server/lib/adapters/index.ts +19 -0
  115. package/server/lib/adapters/router.ts +297 -0
  116. package/server/lib/adapters/telegram.ts +645 -0
  117. package/server/lib/adapters/types.ts +89 -0
  118. package/server/lib/adapters/webhook.ts +95 -0
  119. package/server/lib/address.ts +49 -0
  120. package/server/lib/agent-auth/contracts.ts +1194 -0
  121. package/server/lib/agent-profiles.ts +419 -0
  122. package/server/lib/ai.ts +285 -0
  123. package/server/lib/api-registry/contracts.ts +86 -0
  124. package/server/lib/api-registry/validation.ts +172 -0
  125. package/server/lib/apikey-migration.ts +258 -0
  126. package/server/lib/app-installer.ts +505 -0
  127. package/server/lib/app-tokens.ts +247 -0
  128. package/server/lib/approval-link.ts +27 -0
  129. package/server/lib/auth.ts +314 -0
  130. package/server/lib/auto-execute.ts +160 -0
  131. package/server/lib/batch.ts +242 -0
  132. package/server/lib/cold.ts +1048 -0
  133. package/server/lib/config.ts +408 -0
  134. package/server/lib/credential-access-audit.ts +85 -0
  135. package/server/lib/credential-access-policy.ts +111 -0
  136. package/server/lib/credential-health.ts +343 -0
  137. package/server/lib/credential-import.ts +608 -0
  138. package/server/lib/credential-scope.ts +102 -0
  139. package/server/lib/credential-shares.ts +190 -0
  140. package/server/lib/credential-transport.ts +533 -0
  141. package/server/lib/credential-vault.ts +77 -0
  142. package/server/lib/credentials.ts +422 -0
  143. package/server/lib/crypto.ts +8 -0
  144. package/server/lib/db.ts +58 -0
  145. package/server/lib/defaults.ts +386 -0
  146. package/server/lib/dex/index.ts +80 -0
  147. package/server/lib/dex/relay.ts +235 -0
  148. package/server/lib/dex/types.ts +59 -0
  149. package/server/lib/dex/uniswap.ts +370 -0
  150. package/server/lib/diary.ts +34 -0
  151. package/server/lib/dont-ask-again-policy.ts +41 -0
  152. package/server/lib/e2e-agent/artifacts.ts +36 -0
  153. package/server/lib/e2e-agent/contracts.ts +112 -0
  154. package/server/lib/e2e-agent/validation.ts +135 -0
  155. package/server/lib/encrypt.ts +114 -0
  156. package/server/lib/error.ts +20 -0
  157. package/server/lib/events.ts +217 -0
  158. package/server/lib/feature-flags.ts +93 -0
  159. package/server/lib/hot.ts +357 -0
  160. package/server/lib/human-action-summary.ts +80 -0
  161. package/server/lib/key-fingerprint.ts +28 -0
  162. package/server/lib/logger.ts +340 -0
  163. package/server/lib/network.ts +137 -0
  164. package/server/lib/notifications.ts +230 -0
  165. package/server/lib/oauth2-refresh.ts +241 -0
  166. package/server/lib/oursecret.ts +71 -0
  167. package/server/lib/passkey-credential.ts +360 -0
  168. package/server/lib/passkey.ts +68 -0
  169. package/server/lib/permissions.ts +299 -0
  170. package/server/lib/pino.ts +24 -0
  171. package/server/lib/policy-preview.ts +138 -0
  172. package/server/lib/price.ts +338 -0
  173. package/server/lib/prices.ts +34 -0
  174. package/server/lib/project-scope.ts +297 -0
  175. package/server/lib/resolve-action.ts +328 -0
  176. package/server/lib/resolve.ts +36 -0
  177. package/server/lib/secret-gist-share.ts +296 -0
  178. package/server/lib/sessions.ts +634 -0
  179. package/server/lib/socket-path.ts +56 -0
  180. package/server/lib/solana/connection.ts +26 -0
  181. package/server/lib/solana/jupiter.ts +128 -0
  182. package/server/lib/solana/transfer.ts +108 -0
  183. package/server/lib/solana/wallet.ts +136 -0
  184. package/server/lib/strategy/emits.ts +21 -0
  185. package/server/lib/strategy/engine.ts +1305 -0
  186. package/server/lib/strategy/executor.ts +115 -0
  187. package/server/lib/strategy/hook-context.ts +159 -0
  188. package/server/lib/strategy/hooks.ts +990 -0
  189. package/server/lib/strategy/index.ts +28 -0
  190. package/server/lib/strategy/installer.ts +305 -0
  191. package/server/lib/strategy/loader.ts +256 -0
  192. package/server/lib/strategy/message.ts +237 -0
  193. package/server/lib/strategy/repository.ts +218 -0
  194. package/server/lib/strategy/session-logger.ts +693 -0
  195. package/server/lib/strategy/sources.ts +288 -0
  196. package/server/lib/strategy/state.ts +189 -0
  197. package/server/lib/strategy/templates.ts +403 -0
  198. package/server/lib/strategy/tick.ts +404 -0
  199. package/server/lib/strategy/types.ts +230 -0
  200. package/server/lib/swap.ts +3 -0
  201. package/server/lib/temp.ts +86 -0
  202. package/server/lib/token-metadata.ts +86 -0
  203. package/server/lib/token-safety.ts +200 -0
  204. package/server/lib/token-search.ts +444 -0
  205. package/server/lib/totp.ts +194 -0
  206. package/server/lib/transactions.ts +123 -0
  207. package/server/lib/transport.ts +84 -0
  208. package/server/lib/txhistory/decoder.ts +262 -0
  209. package/server/lib/txhistory/enricher.ts +652 -0
  210. package/server/lib/txhistory/index.ts +391 -0
  211. package/server/lib/txhistory/signatures.ts +59 -0
  212. package/server/lib/update-check.ts +35 -0
  213. package/server/lib/verified-summary.ts +414 -0
  214. package/server/lib/view-registry.ts +80 -0
  215. package/server/mcp/profile-policy.ts +30 -0
  216. package/server/mcp/server.ts +1589 -0
  217. package/server/mcp/tools.ts +276 -0
  218. package/server/middleware/auth.ts +119 -0
  219. package/server/middleware/requestLogger.ts +84 -0
  220. package/server/routes/actions.ts +539 -0
  221. package/server/routes/adapters.ts +711 -0
  222. package/server/routes/addressbook.ts +113 -0
  223. package/server/routes/ai.ts +34 -0
  224. package/server/routes/apikeys.ts +343 -0
  225. package/server/routes/apps.ts +601 -0
  226. package/server/routes/auth.ts +406 -0
  227. package/server/routes/backup.ts +404 -0
  228. package/server/routes/batch.ts +270 -0
  229. package/server/routes/bookmarks.ts +162 -0
  230. package/server/routes/credential-shares.ts +380 -0
  231. package/server/routes/credential-vaults.ts +159 -0
  232. package/server/routes/credentials.ts +1782 -0
  233. package/server/routes/dashboard.ts +97 -0
  234. package/server/routes/defaults.ts +124 -0
  235. package/server/routes/flags.ts +11 -0
  236. package/server/routes/fund.ts +225 -0
  237. package/server/routes/heartbeat.ts +375 -0
  238. package/server/routes/import.ts +364 -0
  239. package/server/routes/launch.ts +665 -0
  240. package/server/routes/lock.ts +54 -0
  241. package/server/routes/logs.ts +68 -0
  242. package/server/routes/nuke.ts +111 -0
  243. package/server/routes/passkey-credentials.ts +99 -0
  244. package/server/routes/passkey.ts +366 -0
  245. package/server/routes/portfolio.ts +217 -0
  246. package/server/routes/price.ts +63 -0
  247. package/server/routes/resolve.ts +31 -0
  248. package/server/routes/security.ts +45 -0
  249. package/server/routes/send-evm.ts +241 -0
  250. package/server/routes/send-solana.ts +281 -0
  251. package/server/routes/send.ts +178 -0
  252. package/server/routes/setup.ts +210 -0
  253. package/server/routes/strategy.ts +894 -0
  254. package/server/routes/swap-evm.ts +352 -0
  255. package/server/routes/swap-solana.ts +176 -0
  256. package/server/routes/swap.ts +356 -0
  257. package/server/routes/token.ts +247 -0
  258. package/server/routes/unlock.ts +467 -0
  259. package/server/routes/views.ts +41 -0
  260. package/server/routes/wallet-assets.ts +361 -0
  261. package/server/routes/wallet-transactions.ts +515 -0
  262. package/server/routes/wallet.ts +709 -0
  263. package/server/types.ts +146 -0
  264. package/shared/credential-field-schema.ts +248 -0
  265. package/skills/auramaxx/HEARTBEAT.md +78 -0
  266. package/skills/auramaxx/SKILL.md +745 -0
  267. package/skills/auramaxx/docs/AGENT_SETUP.md +155 -0
  268. package/skills/auramaxx/docs/API.md +127 -0
  269. package/skills/auramaxx/docs/AUTH.md +318 -0
  270. package/skills/auramaxx/docs/CLI.md +130 -0
  271. package/skills/auramaxx/docs/MCP.md +122 -0
  272. package/skills/auramaxx/docs/TROUBLESHOOTING.md +357 -0
  273. package/skills/auramaxx/docs/WORKSPACE.md +673 -0
  274. package/skills/auramaxx/docs/security.md +227 -0
  275. package/skills/task-lifecycle/SKILL.md +378 -0
  276. package/src/app/api/[...doc]/page.tsx +36 -0
  277. package/src/app/api/agent-requests/route.ts +30 -0
  278. package/src/app/api/apps/install/route.ts +132 -0
  279. package/src/app/api/apps/manifests/route.ts +16 -0
  280. package/src/app/api/apps/static/[...path]/route.ts +57 -0
  281. package/src/app/api/docs/plain/route.ts +74 -0
  282. package/src/app/api/events/route.ts +92 -0
  283. package/src/app/api/page.tsx +290 -0
  284. package/src/app/api/workspace/[id]/apps/[wid]/route.ts +119 -0
  285. package/src/app/api/workspace/[id]/apps/route.ts +81 -0
  286. package/src/app/api/workspace/[id]/export/route.ts +67 -0
  287. package/src/app/api/workspace/[id]/route.ts +168 -0
  288. package/src/app/api/workspace/auth.ts +40 -0
  289. package/src/app/api/workspace/config/route.ts +121 -0
  290. package/src/app/api/workspace/import/route.ts +127 -0
  291. package/src/app/api/workspace/route.ts +116 -0
  292. package/src/app/app-legacy-do-not-use/page.tsx +2245 -0
  293. package/src/app/apple-icon.png +0 -0
  294. package/src/app/approve/[actionId]/page.tsx +409 -0
  295. package/src/app/docs/DocsPageContent.tsx +269 -0
  296. package/src/app/docs/[...doc]/page.tsx +41 -0
  297. package/src/app/docs/page.tsx +38 -0
  298. package/src/app/favicon.ico +0 -0
  299. package/src/app/globals.css +819 -0
  300. package/src/app/health/page.tsx +5 -0
  301. package/src/app/hello/page.tsx +102 -0
  302. package/src/app/icon.png +0 -0
  303. package/src/app/layout.tsx +39 -0
  304. package/src/app/page.tsx +1964 -0
  305. package/src/app/privacy/page.tsx +63 -0
  306. package/src/app/providers.tsx +87 -0
  307. package/src/app/share/[token]/page.tsx +295 -0
  308. package/src/app/terms/page.tsx +80 -0
  309. package/src/components/ChainSelector.tsx +44 -0
  310. package/src/components/HumanActionBar.tsx +697 -0
  311. package/src/components/NotificationDrawer.tsx +387 -0
  312. package/src/components/PasskeyEnrollmentPrompt.tsx +235 -0
  313. package/src/components/apps/AgentKeysApp.tsx +490 -0
  314. package/src/components/apps/App.tsx +153 -0
  315. package/src/components/apps/AppGrid.tsx +15 -0
  316. package/src/components/apps/DetailedAddressDrawer.tsx +325 -0
  317. package/src/components/apps/DraggableApp.tsx +562 -0
  318. package/src/components/apps/IFrameApp.tsx +73 -0
  319. package/src/components/apps/LogsApp.tsx +360 -0
  320. package/src/components/apps/SendApp.tsx +394 -0
  321. package/src/components/apps/SetupWizardApp.tsx +1004 -0
  322. package/src/components/apps/SystemDefaultsApp.tsx +845 -0
  323. package/src/components/apps/ThirdPartyApp.tsx +428 -0
  324. package/src/components/apps/TokenApp.tsx +319 -0
  325. package/src/components/apps/TransactionsApp.tsx +438 -0
  326. package/src/components/apps/WalletDetailApp.tsx +1505 -0
  327. package/src/components/apps/index.ts +13 -0
  328. package/src/components/design-system/Button.tsx +88 -0
  329. package/src/components/design-system/ChainIndicator.tsx +65 -0
  330. package/src/components/design-system/ChainSelector.tsx +147 -0
  331. package/src/components/design-system/ConfirmationModal.tsx +107 -0
  332. package/src/components/design-system/ConfirmationPopover.tsx +81 -0
  333. package/src/components/design-system/DownloadButton.tsx +149 -0
  334. package/src/components/design-system/Drawer.tsx +133 -0
  335. package/src/components/design-system/FilterDropdown.tsx +183 -0
  336. package/src/components/design-system/ItemPicker.tsx +157 -0
  337. package/src/components/design-system/Modal.tsx +296 -0
  338. package/src/components/design-system/Popover.tsx +142 -0
  339. package/src/components/design-system/TextInput.tsx +85 -0
  340. package/src/components/design-system/Toggle.tsx +65 -0
  341. package/src/components/design-system/TyvekCollapsibleSection.tsx +55 -0
  342. package/src/components/design-system/index.ts +14 -0
  343. package/src/components/docs/ClientSideMarkdown.tsx +51 -0
  344. package/src/components/docs/DocsSearchBar.tsx +118 -0
  345. package/src/components/docs/DocsThemeToggle.tsx +38 -0
  346. package/src/components/docs/PersistentDocGroup.tsx +91 -0
  347. package/src/components/docs/ShareUrlButton.tsx +33 -0
  348. package/src/components/docs/SidebarScrollMemory.tsx +56 -0
  349. package/src/components/health/CredentialHealthDashboard.tsx +214 -0
  350. package/src/components/icons/ChainIcons.tsx +72 -0
  351. package/src/components/layout/AppStoreDrawer.tsx +369 -0
  352. package/src/components/layout/ContentArea.tsx +21 -0
  353. package/src/components/layout/CreateViewModal.tsx +88 -0
  354. package/src/components/layout/LeftRail.tsx +114 -0
  355. package/src/components/layout/TabBar.tsx +284 -0
  356. package/src/components/layout/WalletSidebar.tsx +1030 -0
  357. package/src/components/layout/index.ts +6 -0
  358. package/src/components/marketing/AuraMaxxSpecOverlay.tsx +653 -0
  359. package/src/components/marketing/DeviceMorphExperience.tsx +216 -0
  360. package/src/components/vault/ApiKeysConsole.tsx +1272 -0
  361. package/src/components/vault/AuditConsole.tsx +600 -0
  362. package/src/components/vault/CredentialDetail.tsx +625 -0
  363. package/src/components/vault/CredentialEmpty.tsx +55 -0
  364. package/src/components/vault/CredentialField.tsx +583 -0
  365. package/src/components/vault/CredentialForm.tsx +1484 -0
  366. package/src/components/vault/CredentialList.tsx +265 -0
  367. package/src/components/vault/CredentialRow.tsx +130 -0
  368. package/src/components/vault/CredentialShareModal.tsx +273 -0
  369. package/src/components/vault/CredentialVault.tsx +1662 -0
  370. package/src/components/vault/CredentialWalletWidget.tsx +103 -0
  371. package/src/components/vault/DocsConsole.tsx +113 -0
  372. package/src/components/vault/ImportCredentialsModal.tsx +578 -0
  373. package/src/components/vault/LargeTypeModal.tsx +88 -0
  374. package/src/components/vault/PasswordGenerator.tsx +232 -0
  375. package/src/components/vault/TOTPDisplay.tsx +108 -0
  376. package/src/components/vault/TotpSetupPanel.tsx +198 -0
  377. package/src/components/vault/VaultSidebar.tsx +881 -0
  378. package/src/components/vault/credentialFormName.ts +91 -0
  379. package/src/components/vault/hooks/useVaultKeyboardShortcuts.ts +69 -0
  380. package/src/components/vault/types.ts +56 -0
  381. package/src/context/AuthContext.tsx +365 -0
  382. package/src/context/PriceContext.tsx +113 -0
  383. package/src/context/ThemeContext.tsx +164 -0
  384. package/src/context/WebSocketContext.tsx +269 -0
  385. package/src/context/WorkspaceContext.tsx +668 -0
  386. package/src/hooks/index.ts +4 -0
  387. package/src/hooks/useAgentActions.ts +552 -0
  388. package/src/hooks/useBalance.ts +103 -0
  389. package/src/hooks/useBalances.ts +129 -0
  390. package/src/hooks/useTheme.ts +156 -0
  391. package/src/instrumentation.ts +12 -0
  392. package/src/lib/api-docs.ts +154 -0
  393. package/src/lib/api.ts +474 -0
  394. package/src/lib/app-loader.ts +148 -0
  395. package/src/lib/app-registry.ts +178 -0
  396. package/src/lib/app-sdk.ts +157 -0
  397. package/src/lib/audit-console-adapter.ts +151 -0
  398. package/src/lib/auth-client.ts +75 -0
  399. package/src/lib/config.ts +74 -0
  400. package/src/lib/credential-field-schema.ts +11 -0
  401. package/src/lib/crypto.ts +112 -0
  402. package/src/lib/db.ts +21 -0
  403. package/src/lib/docs.ts +544 -0
  404. package/src/lib/events.ts +363 -0
  405. package/src/lib/pino.ts +24 -0
  406. package/src/lib/theme-handlers.ts +168 -0
  407. package/src/lib/theme.ts +351 -0
  408. package/src/lib/tokenData.ts +378 -0
  409. package/src/lib/totp-import.ts +57 -0
  410. package/src/lib/vault-crypto.ts +129 -0
  411. package/src/lib/view-registry.ts +57 -0
  412. package/src/lib/websocket-server.ts +302 -0
  413. package/src/lib/websocket-setup.ts +79 -0
  414. package/src/lib/wordlist.ts +2050 -0
  415. package/src/lib/workspace-handlers.ts +285 -0
  416. package/start.sh +170 -0
  417. package/tailwind.config.ts +99 -0
  418. package/tsconfig.json +42 -0
package/docs/AUTH.md ADDED
@@ -0,0 +1,318 @@
1
+ # Authentication & Permissions
2
+
3
+ This document is the practical entry point for onboarding and using AuraMaxx auth safely.
4
+
5
+ ## Quick Start (read this first)
6
+
7
+ ### Who is this for?
8
+
9
+ - 🤖 **Agents/CI tooling**: prefer `POST /auth` and token polling flows.
10
+ - 🧑 **Humans**: open the approval link (`/approve/<requestId>`) to review and approve/deny requests.
11
+ - 🛠️ **Developers running local MCP/CLI**: use MCP/socket defaults only when local trust is intentionally configured.
12
+
13
+ ### Fastest path (recommended)
14
+
15
+ #### 1) Agent onboarding (least privilege, human approval)
16
+
17
+ ```bash
18
+ # Request an agent token under a named profile.
19
+ auramaxx auth request --agent-id my-agent --profile strict
20
+
21
+ # Wait for approval in dashboard, then poll locally (or use --no-wait and poll manually)
22
+ auramaxx auth poll <requestId> --secret <secret> --private-key-file /tmp/aura-agent-private.pem
23
+ ```
24
+
25
+ #### 2) Human unlock (admin session)
26
+
27
+ ```bash
28
+ auramaxx unlock
29
+ # (or: curl POST /unlock for script-driven unlock with encrypted password)
30
+ ```
31
+
32
+ #### 3) Validate and troubleshoot
33
+
34
+ ```bash
35
+ curl -sS http://localhost:4242/auth/validate \
36
+ -H "Authorization: Bearer <token>"
37
+ ```
38
+
39
+ - `200` = token is currently valid for permission checks.
40
+ - non-200 = expired/revoked/syntax mismatch, re-run onboarding.
41
+
42
+ ---
43
+
44
+ ## Decision Matrix (pick the right path)
45
+
46
+ | Use case | Best flow | Why | Typical command/endpoint |
47
+ |---|---|---|---|
48
+ | Standard agent needs ongoing access | **Profile onboarding** | Bound by profile defaults + tighten-only overrides | `POST /auth` (via `auramaxx auth request`) |
49
+ | One-off escalation for one action | **Auth + action** | Token + auto-execute in one approval | `POST /auth` with `action` field |
50
+ | Trusted admin automation / headless tool | **Direct issue (admin only)** | Explicit admin-controlled issuance | `POST /actions/token` |
51
+ | Local MCP/CLI bootstrap on same host | **Socket bootstrap** | Fast path for trusted local callers | Unix socket + trust defaults |
52
+ | Validate active token before use | **Token check** | Detect expiration/revocation before a failing call | `POST /auth/validate` |
53
+ | Revoke compromised token | **Revoke token** | Immediate disable for one token | `POST /actions/tokens/revoke` |
54
+
55
+ If uncertain, default to **profile onboarding** and keep it strict.
56
+
57
+ ---
58
+
59
+ ## Auth Flow Summary
60
+
61
+ - `POST /auth` is **profile-based** and requires human approval. Supports an optional `action` field for auto-execute on approval.
62
+ - `POST /actions` is **internal** (used by the strategy engine). Agents should use `POST /auth` with `action` instead.
63
+ - `POST /actions/token` is **admin-only** and supports profile-mode or permissions-mode (never both).
64
+ - `POST /auth/validate` checks token validity at runtime.
65
+ - `POST /actions/tokens/revoke` invalidates issued tokens.
66
+
67
+ ---
68
+
69
+ ## For Agents
70
+
71
+ > **IMPORTANT**: Agents should request tokens via `POST /auth` and use the approval flow. Human approval is still the security boundary, even when local trust is enabled.
72
+
73
+ ## CLI (recommended)
74
+
75
+ ```bash
76
+ # Create auth request (profile flow)
77
+ auramaxx auth request --agent-id my-agent --profile strict
78
+
79
+ # Poll with CLI helper (agent private key decrypts response)
80
+ auramaxx auth poll <requestId> --secret <secret> --private-key-file /tmp/aura-agent-private.pem
81
+ ```
82
+
83
+ Advanced option (no interactive poll):
84
+
85
+ ```bash
86
+ auramaxx auth request --agent-id my-agent --profile strict --no-wait
87
+ auramaxx auth poll <requestId> --secret <secret> --private-key-file /tmp/aura-agent-private.pem --once
88
+ ```
89
+
90
+ ## MCP / socket bootstrap
91
+
92
+ ```bash
93
+ # Start runtime
94
+ auramaxx
95
+
96
+ # Optional one-time IDE setup
97
+ auramaxx mcp --install
98
+ ```
99
+
100
+ MCP bootstrap path:
101
+ 1. Unix socket auto-approve (if local trust permits)
102
+ 2. `AURA_TOKEN` env fallback
103
+
104
+ If socket bootstrap is blocked, fall back to normal token flow:
105
+
106
+ ```bash
107
+ AURA_TOKEN=<token> auramaxx mcp
108
+ ```
109
+
110
+ ## Raw HTTP / cURL examples
111
+
112
+ ### `POST /auth` (profile flow)
113
+
114
+ `POST /auth` is profile-based. Raw permission payloads and raw TTL are rejected.
115
+
116
+ ```bash
117
+ # 1) Generate ephemeral RSA keypair for token transport
118
+ openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out /tmp/aura-agent-private.pem
119
+ openssl rsa -in /tmp/aura-agent-private.pem -pubout -out /tmp/aura-agent-public.pem
120
+ PUBKEY_B64="$(base64 < /tmp/aura-agent-public.pem | tr -d '\n')"
121
+
122
+ # 2) Request token issuance
123
+ curl -sS -X POST http://localhost:4242/auth \
124
+ -H "Content-Type: application/json" \
125
+ -d "{\"agentId\":\"my-agent\",\"profile\":\"strict\",\"profileVersion\":\"v1\",\"pubkey\":\"$PUBKEY_B64\"}"
126
+
127
+ # 3) Poll request status
128
+ curl -sS "http://localhost:4242/auth/<requestId>?secret=<secret>"
129
+ ```
130
+
131
+ ### `POST /auth/validate`
132
+
133
+ ```bash
134
+ curl -sS -X POST http://localhost:4242/auth/validate \
135
+ -H "Authorization: Bearer <token>"
136
+ ```
137
+
138
+ ### `POST /actions/token`
139
+
140
+ `/actions/token` supports **exactly one** issue mode:
141
+
142
+ - `profile` mode: `profile`, `profileVersion`, optional tighten-only overrides
143
+ - `permissions` mode: explicit permission grant
144
+
145
+ ```bash
146
+ curl -sS -X POST http://localhost:4242/actions/token \
147
+ -H "Authorization: Bearer <admin_token>" \
148
+ -H "Content-Type: application/json" \
149
+ -d '{"profile":"strict","profileVersion":"v1","pubkey":"'$PUBKEY_B64'"}'
150
+ ```
151
+
152
+ ### Revoke a token
153
+
154
+ ```bash
155
+ curl -sS -X POST http://localhost:4242/actions/tokens/revoke \
156
+ -H "Authorization: Bearer <admin_token>" \
157
+ -H "Content-Type: application/json" \
158
+ -d '{"jti":"<token_id>","reason":"Compromised agent key"}'
159
+ ```
160
+
161
+ ## Auth Flow Comparison
162
+
163
+ | Flow | Endpoint | Human gate? | Intended for |
164
+ |---|---|---|---|
165
+ | Agent Request | `POST /auth` + claim | Yes | Standard agent onboarding |
166
+ | Auth + Action | `POST /auth` with `action` field | Yes | One-off action-scoped escalation (auto-executes on approval) |
167
+ | Direct Admin Issue | `POST /actions/token` | Yes (admin required) | Headless/admin orchestration |
168
+ | Local Socket | Unix socket bootstrap | Trust-dependent | Fast local MCP bootstrap |
169
+ | Unlock/session | `POST /unlock` | Yes | Local machine setup/bootstrap |
170
+
171
+ ## Profile-Based Issuance
172
+
173
+ ### `/auth` is profile-only
174
+
175
+ `POST /auth` requires:
176
+ - `agentId`
177
+ - `profile`
178
+ - `pubkey`
179
+
180
+ Optional:
181
+ - `profileVersion` (defaults to `v1`)
182
+ - `profileOverrides` (tighten-only)
183
+ - `limit` / `limits.fund`
184
+ - `action` — pre-computed action to auto-execute on approval: `{ endpoint, method, body? }`
185
+
186
+ Rejected:
187
+ - raw `permissions`
188
+ - raw `ttl`
189
+ - raw `credentialAccess`
190
+
191
+ ### `/actions/token` strict mode
192
+
193
+ `POST /actions/token` accepts **exactly one** issuance strategy:
194
+
195
+ - profile mode (`profile`, `profileVersion`, `profileOverrides`)
196
+ - permissions mode (`permissions`)
197
+
198
+ ### Built-in Profiles (v1)
199
+
200
+ | Profile | Permissions | Read Scopes | Write Scopes | Excluded Fields | TTL | Max Reads |
201
+ |---------|------------|-------------|-------------|-----------------|-----|-----------|
202
+ | `strict` | `secret:read` | `vault:agent` | none | `password, cvv, privateKey, seedPhrase, refresh_token` | 15 min | 50 |
203
+ | `dev` | `wallet:list, secret:read, secret:write, action:create, action:read, action:resolve` | `vault:*` | `vault:*` | `cvv, seedPhrase, privateKey, refresh_token` | 1 hour | 500 |
204
+ | `admin` | `admin:*` | `*` | `*` | none | 1 hour | unlimited |
205
+
206
+ ### Credential Scope Selectors
207
+
208
+ Use selectors to bound what an agent can see or edit:
209
+
210
+ - `vault:agent` — agent vault only
211
+ - `vault:primary` — primary vault only
212
+ - `vault:*` — all vaults
213
+ - `*` — all credentials
214
+ - `tag:<label>` — credentials with a specific tag
215
+ - `cred-xxxxx` — a specific credential by ID
216
+
217
+ ### Profile Overrides (`profileOverrides`)
218
+
219
+ Overrides are **tighten-only** — they can only reduce privilege, never broaden it.
220
+
221
+ | Override Key | Type | Tighten-only Rule |
222
+ |---|---|---|
223
+ | `ttlSeconds` | number | Must be shorter than profile default |
224
+ | `maxReads` | number | Must be ≤ profile default |
225
+ | `scope` | string[] | Must be subset of profile permissions |
226
+ | `readScopes` | string[] | Must be subset of profile read scopes |
227
+ | `writeScopes` | string[] | Must be subset of profile write scopes |
228
+ | `excludeFields` | string[] | Can only add exclusions, never remove profile-required ones |
229
+
230
+ Example — request a `dev` profile but restrict to agent vault and shorten TTL:
231
+
232
+ ```bash
233
+ curl -sS -X POST http://localhost:4242/auth \
234
+ -H "Content-Type: application/json" \
235
+ -d '{
236
+ "agentId": "my-agent",
237
+ "profile": "dev",
238
+ "pubkey": "'$PUBKEY_B64'",
239
+ "profileOverrides": {
240
+ "ttlSeconds": 600,
241
+ "readScopes": ["vault:agent"],
242
+ "writeScopes": ["vault:agent"],
243
+ "excludeFields": ["cvv", "seedPhrase", "privateKey", "refresh_token", "password"]
244
+ }
245
+ }'
246
+ ```
247
+
248
+ Use `POST /actions/token/preview` to inspect the effective policy before issuing:
249
+
250
+ ```bash
251
+ curl -sS -X POST http://localhost:4242/actions/token/preview \
252
+ -H "Authorization: Bearer <admin_token>" \
253
+ -H "Content-Type: application/json" \
254
+ -d '{"profile": "dev", "profileOverrides": {"ttlSeconds": 600}}'
255
+ ```
256
+
257
+ ## Socket defaults and trust
258
+
259
+ Defaults:
260
+
261
+ - API server: `http://localhost:4242`
262
+ - Socket path: `/tmp/aura-cli-<uid>.sock`
263
+ - Local socket perms: `0600`
264
+ - Default trust profile: `dev`
265
+ - `trust.localAutoApprove = false`
266
+
267
+ Use admin auth for trust tuning:
268
+
269
+ ```bash
270
+ curl -sS -X PATCH http://localhost:4242/defaults/trust.localAutoApprove \
271
+ -H "Authorization: Bearer <admin_token>" \
272
+ -H "Content-Type: application/json" \
273
+ -d '{"value": true}'
274
+ ```
275
+
276
+ ## Approving Requests (for humans)
277
+
278
+ When an agent requests access, a human must approve it. Every request gets a dedicated approval page:
279
+
280
+ ```
281
+ http://localhost:4747/approve/<requestId>
282
+ ```
283
+
284
+ The page shows the action summary, requested permissions, risk level, and spending limits. Review the details, then click **Approve** or **Deny**.
285
+
286
+ **Where to find the link:**
287
+ - The `POST /auth` response includes an `approveUrl` field — agents should surface this to the human
288
+ - MCP `auth` tool returns `approveUrl` — give this link to the human
289
+ - CLI `auramaxx auth request` prints the approval URL
290
+ - The dashboard at `http://localhost:4747` also shows pending requests
291
+
292
+ **For agents:** Always give the human the approval URL. Do not just say "approve in the dashboard" — provide the direct link so they can review and approve with one click.
293
+
294
+ ## Token lifecycle and claim behavior
295
+
296
+ 1) Agent requests token → returns `requestId` + `secret` + `approveUrl`.
297
+ 2) Human opens approval URL, reviews permissions, and approves.
298
+ 3) Agent polls `GET /auth/:requestId?secret=...` → one-time claim semantics.
299
+ 4) On approval returns `encryptedToken` + metadata.
300
+ 5) On restart: in-memory state rotates, tokens may be invalidated.
301
+ 6) On revoke: `POST /actions/tokens/revoke` removes active token from trust boundary immediately.
302
+
303
+ ## Encrypted password transport
304
+
305
+ Passwords for `/unlock` and `/setup` are RSA-OAEP encrypted before transmission.
306
+
307
+ - RSA keypair generated on server startup
308
+ - Frontend fetches `/auth/connect` pubkey and encrypts password
309
+ - Password decrypts server-side; token returns only to validated clients
310
+ - Private key stays in process memory
311
+
312
+ ## Related references
313
+
314
+ - [MCP](./MCP.md)
315
+ - [CLI](./CLI.md)
316
+ - [Security](./security.md)
317
+ - [Authentication API](./api/authentication.md)
318
+ - [Troubleshooting](./TROUBLESHOOTING.md)
@@ -0,0 +1,82 @@
1
+ # Best Practices
2
+
3
+ Guidance for humans, agents, and developers working with AuraMaxx.
4
+
5
+ ---
6
+
7
+ ## For Humans
8
+
9
+ ### Password Management
10
+
11
+ - Use a strong, unique password for each vault (min 8 characters, passphrase recommended)
12
+ - Never share your vault password - it unlocks all child vaults
13
+ - Never store your vault password digitally — treat it like a seed phrase
14
+ - If you forget your password, the seed phrase is your only recovery path
15
+
16
+ ### Multi-Vault Usage
17
+
18
+ - Use separate vaults for separate purposes (e.g., trading vault, savings vault)
19
+ - Child vaults can auto-unlock when the parent vault is unlocked; independent vaults stay separate
20
+ - Hot wallets are bound to their vault and cannot be moved between vaults
21
+
22
+ ### Backup Schedule
23
+
24
+ - Back up your seed phrase on paper immediately after vault creation
25
+ - Store it offline in a secure location (safe, safety deposit box)
26
+ - Never photograph, screenshot, or digitally copy your seed phrase
27
+ - Test your backup by verifying the cold wallet address matches
28
+
29
+ ### Token Hygiene
30
+
31
+ - Revoke tokens you're no longer using — don't leave stale tokens active
32
+ - Each agent should have its own token with its own limits
33
+ - Review active tokens periodically in the dashboard
34
+ - Server restart invalidates all tokens — this is intentional security, not a bug
35
+
36
+ ### Secret Input Safety
37
+
38
+ - Never give your agent a plaintext secret directly in chat/prompt text — model providers may see prompt content.
39
+ - Only set secrets manually via AuraMaxx CLI or UI.
40
+
41
+ ---
42
+
43
+ ## For Agents
44
+
45
+ ### Permission Scoping
46
+
47
+ - Request the minimum permissions needed for your task
48
+ - Use `trade:all` for trading operations instead of listing individual permissions
49
+ - `trade:all` does NOT include `apikey:set` or `adapter:manage` — request those explicitly if needed for onboarding
50
+ - Never request `admin:*` unless you genuinely need full access
51
+
52
+ ### Token Lifecycle
53
+
54
+ - Tokens live only in server memory — expect them to vanish on restart
55
+ - Always implement re-authentication logic: catch 401 → re-request via `POST /auth`
56
+ - Don't persist tokens to disk — request fresh ones each session
57
+ - The token from `GET /auth/:id?secret=...` can only be read once — save it immediately
58
+
59
+ ### Error Handling Patterns
60
+
61
+ | Error | Pattern |
62
+ |-------|---------|
63
+ | 401 `Invalid or expired token` | Re-request token via `POST /auth`, wait for human approval |
64
+ | 401 `Cold wallet must be unlocked` | Tell human to unlock at dashboard or `http://localhost:4242/unlock` |
65
+ | 403 `Insufficient permissions` | Use `request_human_action` for one-time approval, or request a new token via `POST /auth` with the needed profile/scope |
66
+ | 403 `Amount exceeds spending limit` | Use `request_human_action` with the specific amount needed |
67
+ | Connection refused | Server not running — tell human to run `auramaxx` |
68
+
69
+ ### Credential Access
70
+
71
+ - Use `secret:read` with narrow `credentialAccess.read` scopes — don't request wildcard access unless needed
72
+ - Use `excludeFields` to strip fields you don't need (e.g., exclude `refresh_token` if you only need `access_token`)
73
+ - For OAuth2 credentials, just read the credential — auto-refresh handles expired tokens transparently
74
+ - For TOTP, use `POST /credentials/:id/totp` to get the current code rather than reading the raw secret
75
+ - Check credential health badges — flag compromised credentials to the user proactively
76
+
77
+ ### Multi-Step Operations
78
+
79
+ - Check `GET /setup` before starting any workflow — know what's configured
80
+ - For operations that require multiple endpoints (e.g., create wallet → fund → swap), verify each step succeeded before proceeding
81
+ - If a multi-step operation fails partway through, report what completed and what didn't — don't silently retry
82
+
package/docs/CLI.md ADDED
@@ -0,0 +1,141 @@
1
+ # CLI
2
+
3
+ ## Commands
4
+
5
+ The most common commands. All use the `aura` alias (or `npx auramaxx`).
6
+
7
+ | Command | Description |
8
+ |---------|-------------|
9
+ | `aura get <name>` | Read a credential (`--json` for full payload) |
10
+ | `aura set <name> <value>` | Create or update a secret |
11
+ | `aura list` | List credential names |
12
+ | `aura diary write --entry "<text>"` | Append an authenticated daily diary entry |
13
+ | `aura share <name>` | Create a shareable secret gist link |
14
+ | `aura inject <name> [-- <cmd>]` | Save to env var and optionally run command |
15
+ | `aura del <name>` | Delete a credential |
16
+
17
+ > **Note:** `aura get` returns encrypted ciphertext by default — this is a protected route.
18
+ > To decrypt and print a value, use `aura inject <name> -- printenv AURA_SECRET`.
19
+ > To pass a secret to a command under a custom env var: `aura inject <name> --env MY_VAR -- <your-command>`.
20
+
21
+ ## Fast Path
22
+
23
+ If your vault is unlocked, secret reads work immediately via CLI or MCP:
24
+
25
+ ```bash
26
+ aura get OURSECRET
27
+ # or
28
+ npx auramaxx get OURSECRET
29
+ ```
30
+
31
+ ## First Success (Run In Order)
32
+
33
+ ```bash
34
+ aura status
35
+ aura list
36
+ aura set OURSECRET 123
37
+ aura get OURSECRET
38
+ aura share OURSECRET --expires-after 24h
39
+ ```
40
+
41
+ If `status` fails, see [TROUBLESHOOTING.md](./TROUBLESHOOTING.md).
42
+ `status` checks both services: API server (`http://localhost:4242`) and dashboard UI (`http://localhost:4747`).
43
+
44
+ ## Admin Commands
45
+
46
+ Essential admin commands for setup and maintenance.
47
+
48
+ | Command | Description |
49
+ |---------|-------------|
50
+ | `aura start` | Start Aura services (includes first-run bootstrap) |
51
+ | `aura status` | Check runtime health |
52
+ | `aura init` | Advanced/recovery setup flow (most users should run `start`) |
53
+ | `aura mcp` | Start MCP server for Claude Code, Cursor, etc. |
54
+ | `aura skill` | Install AuraMaxx skills for Claude/Codex/OpenClaw |
55
+ | `aura auth` | Request/poll agent auth approvals |
56
+
57
+ Run `aura --help --all` to see all commands including advanced admin (stop, lock, unlock, doctor, restore, etc.).
58
+
59
+ ## Stopping Servers
60
+
61
+ ```bash
62
+ aura stop
63
+ ```
64
+
65
+ Stops all running AuraMaxx processes:
66
+
67
+ - **Wallet server** (`server/index.ts` on port 4242)
68
+ - **Cron server** (`server/cron/index.ts` — balance sync, price sync)
69
+ - **Dashboard** (`next dev` on port 4747)
70
+
71
+ Also cleans up temp files (CLI lock file, Unix socket).
72
+
73
+ This does **not** affect the MCP server — that runs in its own stdio process managed by the client (Claude Code, Cursor, etc.) that started it.
74
+
75
+ ## Examples
76
+
77
+ ```bash
78
+ # Check services
79
+ aura status
80
+
81
+ # Credentials
82
+ aura list # List credential names
83
+ aura get OURSECRET # Read a credential
84
+ aura set OURSECRET 123 # Create or update a credential value
85
+ aura set GITHUB_LOGIN hunter2 --type login # Store as login credential (password field)
86
+ aura share OURSECRET --expires-after 24h # Create a shareable secret gist link
87
+ aura del OURSECRET # Delete a credential
88
+
89
+ # Inject secret into a command
90
+ aura inject DONTLOOK --env HIDETHIS -- printenv HIDETHIS # Execute command with injected secret env var
91
+
92
+ # Auth and approvals
93
+ aura auth request --agent-id codex --profile strict
94
+ aura auth request --profile strict --action '{"endpoint":"/send","method":"POST","body":{"to":"0x...","amount":"0.01"}}'
95
+ aura auth poll <requestId> --secret <secret>
96
+ aura diary write --entry "Heartbeat: no pending requests, sync ok"
97
+
98
+ # Advanced
99
+ aura api GET /health --no-auth # Call any API endpoint
100
+ aura doctor # Run diagnostics
101
+ ```
102
+
103
+ Sensitive output defaults:
104
+
105
+ - Sensitive fields return encrypted output by default.
106
+ - To auto-decrypt sensitive output, set `AUTO_DECRYPT=true` and `AURA_VAULT_PASSWORD=<password>`.
107
+
108
+ ## All Commands
109
+
110
+ Full list visible via `aura --help --all`. Summary:
111
+
112
+ | Command | Description |
113
+ |---------|-------------|
114
+ | `start` | Start Aura services (includes bootstrap/setup) |
115
+ | `stop` | Stop running servers |
116
+ | `status` | Check runtime health |
117
+ | `init` | Advanced/recovery setup flow |
118
+ | `unlock` / `lock` | Unlock or lock vaults |
119
+ | `mcp` | Start MCP server for Claude Code, Cursor, etc. |
120
+ | `skill` | Install AuraMaxx skills for agents |
121
+ | `auth` | Request/poll agent auth approvals |
122
+ | `diary` | Append daily diary entries (auth-aware) |
123
+ | `actions` | Internal: human actions and token management (use `auth` instead) |
124
+ | `api` | Call any wallet API endpoint from CLI |
125
+ | `doctor` | Run diagnostics |
126
+ | `restore` | Restore backup + run migrations |
127
+ | `app` | Manage installed apps |
128
+ | `apikey` | List/validate/set/delete API keys |
129
+ | `env` | Load env vars from vault via .aura file |
130
+ | `shell-hook` | Auto-load .aura env vars on cd (like direnv) |
131
+ | `experimental` | Toggle dev feature flags |
132
+ | `cron` | Run cron server standalone |
133
+ | `secret` | Run commands with injected secret env vars |
134
+ | `release-check` | Run pre-release checklist (diff audit, sanity, privacy scan, security routes) |
135
+ | `token` | Preview profile-based token policy |
136
+ | `wallet` | Wallet API wrappers (status, assets, swap, send, fund) |
137
+
138
+ ## Next Steps
139
+
140
+ - Builder / AI integration -> [MCP.md](./MCP.md)
141
+ - Operator / Security -> [security.md](./security.md)
@@ -0,0 +1,26 @@
1
+ # Aura Desktop (Electron)
2
+
3
+ ## Overview
4
+ Aura Desktop wraps the existing Aura web app in an Electron shell (no duplicate UI fork).
5
+
6
+ ## Security defaults
7
+ - `contextIsolation: true`
8
+ - `nodeIntegration: false`
9
+ - `sandbox: true`
10
+ - preload-only API bridge (`window.auraDesktop`)
11
+
12
+ ## Run (dev)
13
+ 1. Install deps: `npm install`
14
+ 2. Start desktop shell: `AURA_ELECTRON_DEV=1 electron apps/desktop-electron/main.js`
15
+
16
+ This launches the web runtime and opens Electron against `http://localhost:4747`.
17
+
18
+ ## Build + package (local artifact)
19
+ 1. Build web app: `npx prisma generate && npx next build`
20
+ 2. Package desktop app: `npx electron-builder --config apps/desktop-electron/electron-builder.yml`
21
+
22
+ Artifacts are generated under `dist/electron/`.
23
+
24
+ ## Signing notes
25
+ - macOS notarization / Windows code signing are environment-specific and not enabled by default in this baseline.
26
+ - Configure signing credentials in CI/local env before publishing distributables.