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.
Files changed (363) hide show
  1. package/LICENSE +26 -0
  2. package/README.md +112 -0
  3. package/bin/aurawallet.js +121 -0
  4. package/docs/ADAPTERS.md +467 -0
  5. package/docs/API.md +2679 -0
  6. package/docs/APPS.md +198 -0
  7. package/docs/ARCHITECTURE.md +350 -0
  8. package/docs/AUTH.md +698 -0
  9. package/docs/BEST-PRACTICES.md +121 -0
  10. package/docs/CLI.md +61 -0
  11. package/docs/DEVELOPING-APPS.md +452 -0
  12. package/docs/EXTENSION.md +97 -0
  13. package/docs/JOBS.md +33 -0
  14. package/docs/MCP.md +76 -0
  15. package/docs/PROTOCOL.md +142 -0
  16. package/docs/SETUP.md +219 -0
  17. package/docs/WORKSPACE.md +672 -0
  18. package/docs/agent-auth.md +63 -0
  19. package/docs/aura-file.md +48 -0
  20. package/docs/credentials.md +53 -0
  21. package/docs/external/getting-started.md +65 -0
  22. package/docs/external/overview.md +45 -0
  23. package/docs/external/use-cases.md +48 -0
  24. package/docs/external/why-aura.md +35 -0
  25. package/docs/jobs/connect-agent.md +77 -0
  26. package/docs/jobs/migrate-from-dotenv.md +79 -0
  27. package/docs/jobs/recover-from-lockout.md +72 -0
  28. package/docs/jobs/secure-ci.md +63 -0
  29. package/docs/oauth2.md +42 -0
  30. package/docs/passkeys.md +60 -0
  31. package/docs/security.md +540 -0
  32. package/docs/specs/aura-open-protocol.md +61 -0
  33. package/docs/specs/aura-provider-plugin.md +24 -0
  34. package/docs/specs/aura-registry-model.md +31 -0
  35. package/docs/specs/fixtures/invalid-bad-key.aura +1 -0
  36. package/docs/specs/fixtures/invalid-bad-unicode-escape.aura +1 -0
  37. package/docs/specs/fixtures/invalid-duplicate-key.aura +2 -0
  38. package/docs/specs/fixtures/valid-basic.aura +4 -0
  39. package/docs/specs/fixtures/valid-provider-ref.aura +1 -0
  40. package/docs/specs/fixtures/valid-quoted-escapes.aura +2 -0
  41. package/docs/templates/RELEASE_NOTES_TEMPLATE.md +22 -0
  42. package/docs/totp.md +40 -0
  43. package/docs/wallet/AI.md +508 -0
  44. package/docs/wallet/DEVELOPING-STRATEGIES.md +713 -0
  45. package/docs/wallet/README.md +47 -0
  46. package/docs/wallet/STRATEGY.md +89 -0
  47. package/next.config.ts +21 -0
  48. package/package.json +151 -0
  49. package/postcss.config.mjs +8 -0
  50. package/prisma/migrations/20260214170000_baseline/migration.sql +511 -0
  51. package/prisma/migrations/20260216214537_add_passkey_model/migration.sql +18 -0
  52. package/prisma/migrations/20260217150500_add_credential_access_audit/migration.sql +31 -0
  53. package/prisma/migrations/migration_lock.toml +3 -0
  54. package/prisma/schema.prisma +447 -0
  55. package/public/logo-chevron.svg +31 -0
  56. package/public/logo-concentric.svg +31 -0
  57. package/public/logo-crosshatch.svg +39 -0
  58. package/public/logo-dashed.svg +39 -0
  59. package/public/logo-horizontal.svg +31 -0
  60. package/public/logo-m56.svg +64 -0
  61. package/public/logo.webp +0 -0
  62. package/scripts/add-app.js +245 -0
  63. package/scripts/init.sh +57 -0
  64. package/scripts/migrate-apikeys-to-credentials.ts +35 -0
  65. package/scripts/sandbox-agent-flow.sh +235 -0
  66. package/scripts/sandbox.sh +175 -0
  67. package/scripts/validate-job-docs.mjs +125 -0
  68. package/server/abi/SwapHelper.json +438 -0
  69. package/server/cli/approval.ts +447 -0
  70. package/server/cli/commands/app.ts +204 -0
  71. package/server/cli/commands/cron.ts +24 -0
  72. package/server/cli/commands/doctor.ts +1007 -0
  73. package/server/cli/commands/env.ts +456 -0
  74. package/server/cli/commands/init.ts +752 -0
  75. package/server/cli/commands/mcp.ts +125 -0
  76. package/server/cli/commands/restore.ts +314 -0
  77. package/server/cli/commands/shell-hook.ts +468 -0
  78. package/server/cli/commands/start.ts +62 -0
  79. package/server/cli/commands/status.ts +59 -0
  80. package/server/cli/commands/stop.ts +14 -0
  81. package/server/cli/commands/token.ts +180 -0
  82. package/server/cli/commands/unlock.ts +49 -0
  83. package/server/cli/commands/vault.ts +417 -0
  84. package/server/cli/index.ts +328 -0
  85. package/server/cli/lib/aura-parser.ts +64 -0
  86. package/server/cli/lib/credential-create.ts +74 -0
  87. package/server/cli/lib/credential-resolve.ts +254 -0
  88. package/server/cli/lib/dotenv-migrate.ts +116 -0
  89. package/server/cli/lib/dotenv-parser.ts +146 -0
  90. package/server/cli/lib/http.ts +91 -0
  91. package/server/cli/lib/init-steps.ts +76 -0
  92. package/server/cli/lib/local-agent-trust.ts +45 -0
  93. package/server/cli/lib/process.ts +136 -0
  94. package/server/cli/lib/prompt.ts +85 -0
  95. package/server/cli/lib/theme.ts +240 -0
  96. package/server/cli/socket.ts +570 -0
  97. package/server/cli/transport-client.ts +50 -0
  98. package/server/cron/index.ts +137 -0
  99. package/server/cron/job.ts +31 -0
  100. package/server/cron/jobs/balance-sync.ts +436 -0
  101. package/server/cron/jobs/incoming-scan.ts +506 -0
  102. package/server/cron/jobs/native-price.ts +70 -0
  103. package/server/cron/jobs/orphan-cleanup.ts +40 -0
  104. package/server/cron/jobs/strategy-runner.ts +175 -0
  105. package/server/cron/scheduler.ts +125 -0
  106. package/server/index.ts +406 -0
  107. package/server/lib/adapters/factory.ts +110 -0
  108. package/server/lib/adapters/index.ts +19 -0
  109. package/server/lib/adapters/router.ts +297 -0
  110. package/server/lib/adapters/telegram.ts +645 -0
  111. package/server/lib/adapters/types.ts +89 -0
  112. package/server/lib/adapters/webhook.ts +95 -0
  113. package/server/lib/address.ts +49 -0
  114. package/server/lib/agent-auth/contracts.ts +1194 -0
  115. package/server/lib/agent-profiles.ts +328 -0
  116. package/server/lib/ai.ts +285 -0
  117. package/server/lib/api-registry/contracts.ts +86 -0
  118. package/server/lib/api-registry/validation.ts +172 -0
  119. package/server/lib/apikey-migration.ts +189 -0
  120. package/server/lib/app-installer.ts +505 -0
  121. package/server/lib/app-tokens.ts +247 -0
  122. package/server/lib/auth.ts +314 -0
  123. package/server/lib/batch.ts +242 -0
  124. package/server/lib/cold.ts +874 -0
  125. package/server/lib/config.ts +381 -0
  126. package/server/lib/credential-access-audit.ts +85 -0
  127. package/server/lib/credential-access-policy.ts +110 -0
  128. package/server/lib/credential-health.ts +343 -0
  129. package/server/lib/credential-import.ts +487 -0
  130. package/server/lib/credential-scope.ts +87 -0
  131. package/server/lib/credential-shares.ts +190 -0
  132. package/server/lib/credential-transport.ts +342 -0
  133. package/server/lib/credential-vault.ts +77 -0
  134. package/server/lib/credentials.ts +333 -0
  135. package/server/lib/crypto.ts +8 -0
  136. package/server/lib/db.ts +15 -0
  137. package/server/lib/defaults.ts +366 -0
  138. package/server/lib/dex/index.ts +80 -0
  139. package/server/lib/dex/relay.ts +235 -0
  140. package/server/lib/dex/types.ts +59 -0
  141. package/server/lib/dex/uniswap.ts +370 -0
  142. package/server/lib/e2e-agent/artifacts.ts +36 -0
  143. package/server/lib/e2e-agent/contracts.ts +112 -0
  144. package/server/lib/e2e-agent/validation.ts +135 -0
  145. package/server/lib/encrypt.ts +128 -0
  146. package/server/lib/error.ts +20 -0
  147. package/server/lib/events.ts +205 -0
  148. package/server/lib/hot.ts +357 -0
  149. package/server/lib/key-fingerprint.ts +28 -0
  150. package/server/lib/logger.ts +331 -0
  151. package/server/lib/network.ts +137 -0
  152. package/server/lib/notifications.ts +219 -0
  153. package/server/lib/oauth2-refresh.ts +241 -0
  154. package/server/lib/oursecret.ts +54 -0
  155. package/server/lib/passkey-credential.ts +360 -0
  156. package/server/lib/passkey.ts +68 -0
  157. package/server/lib/permissions.ts +248 -0
  158. package/server/lib/pino.ts +24 -0
  159. package/server/lib/policy-preview.ts +138 -0
  160. package/server/lib/price.ts +338 -0
  161. package/server/lib/prices.ts +34 -0
  162. package/server/lib/project-scope.ts +239 -0
  163. package/server/lib/resolve-action.ts +427 -0
  164. package/server/lib/resolve.ts +36 -0
  165. package/server/lib/sessions.ts +632 -0
  166. package/server/lib/solana/connection.ts +26 -0
  167. package/server/lib/solana/jupiter.ts +128 -0
  168. package/server/lib/solana/transfer.ts +108 -0
  169. package/server/lib/solana/wallet.ts +136 -0
  170. package/server/lib/strategy/emits.ts +21 -0
  171. package/server/lib/strategy/engine.ts +1305 -0
  172. package/server/lib/strategy/executor.ts +115 -0
  173. package/server/lib/strategy/hook-context.ts +158 -0
  174. package/server/lib/strategy/hooks.ts +990 -0
  175. package/server/lib/strategy/index.ts +28 -0
  176. package/server/lib/strategy/installer.ts +305 -0
  177. package/server/lib/strategy/loader.ts +256 -0
  178. package/server/lib/strategy/message.ts +235 -0
  179. package/server/lib/strategy/repository.ts +218 -0
  180. package/server/lib/strategy/session-logger.ts +693 -0
  181. package/server/lib/strategy/sources.ts +288 -0
  182. package/server/lib/strategy/state.ts +189 -0
  183. package/server/lib/strategy/templates.ts +403 -0
  184. package/server/lib/strategy/tick.ts +404 -0
  185. package/server/lib/strategy/types.ts +230 -0
  186. package/server/lib/swap.ts +3 -0
  187. package/server/lib/temp.ts +86 -0
  188. package/server/lib/token-metadata.ts +86 -0
  189. package/server/lib/token-safety.ts +200 -0
  190. package/server/lib/token-search.ts +444 -0
  191. package/server/lib/totp.ts +194 -0
  192. package/server/lib/transactions.ts +123 -0
  193. package/server/lib/transport.ts +75 -0
  194. package/server/lib/txhistory/decoder.ts +262 -0
  195. package/server/lib/txhistory/enricher.ts +652 -0
  196. package/server/lib/txhistory/index.ts +391 -0
  197. package/server/lib/txhistory/signatures.ts +59 -0
  198. package/server/lib/verified-summary.ts +421 -0
  199. package/server/mcp/profile-policy.ts +30 -0
  200. package/server/mcp/server.ts +619 -0
  201. package/server/mcp/tools.ts +523 -0
  202. package/server/middleware/auth.ts +119 -0
  203. package/server/middleware/requestLogger.ts +84 -0
  204. package/server/routes/actions.ts +459 -0
  205. package/server/routes/adapters.ts +703 -0
  206. package/server/routes/addressbook.ts +113 -0
  207. package/server/routes/ai.ts +34 -0
  208. package/server/routes/apikeys.ts +295 -0
  209. package/server/routes/apps.ts +601 -0
  210. package/server/routes/auth.ts +457 -0
  211. package/server/routes/backup.ts +340 -0
  212. package/server/routes/batch.ts +270 -0
  213. package/server/routes/bookmarks.ts +162 -0
  214. package/server/routes/credential-shares.ts +198 -0
  215. package/server/routes/credential-vaults.ts +154 -0
  216. package/server/routes/credentials.ts +1290 -0
  217. package/server/routes/dashboard.ts +71 -0
  218. package/server/routes/defaults.ts +124 -0
  219. package/server/routes/fund.ts +229 -0
  220. package/server/routes/import.ts +352 -0
  221. package/server/routes/launch.ts +665 -0
  222. package/server/routes/lock.ts +54 -0
  223. package/server/routes/logs.ts +68 -0
  224. package/server/routes/nuke.ts +111 -0
  225. package/server/routes/passkey-credentials.ts +99 -0
  226. package/server/routes/passkey.ts +346 -0
  227. package/server/routes/portfolio.ts +217 -0
  228. package/server/routes/price.ts +63 -0
  229. package/server/routes/resolve.ts +31 -0
  230. package/server/routes/security.ts +45 -0
  231. package/server/routes/send-evm.ts +241 -0
  232. package/server/routes/send-solana.ts +281 -0
  233. package/server/routes/send.ts +178 -0
  234. package/server/routes/setup.ts +210 -0
  235. package/server/routes/strategy.ts +894 -0
  236. package/server/routes/swap-evm.ts +353 -0
  237. package/server/routes/swap-solana.ts +177 -0
  238. package/server/routes/swap.ts +356 -0
  239. package/server/routes/token.ts +247 -0
  240. package/server/routes/unlock.ts +403 -0
  241. package/server/routes/wallet-assets.ts +361 -0
  242. package/server/routes/wallet-transactions.ts +515 -0
  243. package/server/routes/wallet.ts +710 -0
  244. package/server/types.ts +146 -0
  245. package/skills/aurawallet/SKILL.md +739 -0
  246. package/skills/aurawallet-setup/SKILL.md +74 -0
  247. package/skills/security-review/SKILL.md +148 -0
  248. package/src/app/api/agent-requests/route.ts +30 -0
  249. package/src/app/api/apps/install/route.ts +126 -0
  250. package/src/app/api/apps/manifests/route.ts +16 -0
  251. package/src/app/api/apps/static/[...path]/route.ts +57 -0
  252. package/src/app/api/events/route.ts +92 -0
  253. package/src/app/api/page.tsx +212 -0
  254. package/src/app/api/workspace/[id]/apps/[wid]/route.ts +119 -0
  255. package/src/app/api/workspace/[id]/apps/route.ts +81 -0
  256. package/src/app/api/workspace/[id]/export/route.ts +67 -0
  257. package/src/app/api/workspace/[id]/route.ts +168 -0
  258. package/src/app/api/workspace/auth.ts +34 -0
  259. package/src/app/api/workspace/config/route.ts +106 -0
  260. package/src/app/api/workspace/import/route.ts +127 -0
  261. package/src/app/api/workspace/route.ts +116 -0
  262. package/src/app/app/page.tsx +2122 -0
  263. package/src/app/apple-icon.png +0 -0
  264. package/src/app/docs/page.tsx +178 -0
  265. package/src/app/favicon.ico +0 -0
  266. package/src/app/globals.css +572 -0
  267. package/src/app/health/page.tsx +5 -0
  268. package/src/app/hello/page.tsx +15 -0
  269. package/src/app/icon.png +0 -0
  270. package/src/app/layout.tsx +34 -0
  271. package/src/app/page.tsx +986 -0
  272. package/src/app/providers.tsx +90 -0
  273. package/src/app/share/[token]/page.tsx +295 -0
  274. package/src/components/ChainSelector.tsx +144 -0
  275. package/src/components/HumanActionBar.tsx +695 -0
  276. package/src/components/NotificationDrawer.tsx +129 -0
  277. package/src/components/apps/AgentKeysApp.tsx +490 -0
  278. package/src/components/apps/App.tsx +153 -0
  279. package/src/components/apps/AppGrid.tsx +15 -0
  280. package/src/components/apps/DetailedAddressDrawer.tsx +325 -0
  281. package/src/components/apps/DraggableApp.tsx +562 -0
  282. package/src/components/apps/IFrameApp.tsx +73 -0
  283. package/src/components/apps/LogsApp.tsx +360 -0
  284. package/src/components/apps/SendApp.tsx +394 -0
  285. package/src/components/apps/SetupWizardApp.tsx +1004 -0
  286. package/src/components/apps/SystemDefaultsApp.tsx +845 -0
  287. package/src/components/apps/ThirdPartyApp.tsx +428 -0
  288. package/src/components/apps/TokenApp.tsx +319 -0
  289. package/src/components/apps/TransactionsApp.tsx +438 -0
  290. package/src/components/apps/WalletDetailApp.tsx +1505 -0
  291. package/src/components/apps/index.ts +13 -0
  292. package/src/components/design-system/Button.tsx +53 -0
  293. package/src/components/design-system/ChainIndicator.tsx +65 -0
  294. package/src/components/design-system/ChainSelector.tsx +137 -0
  295. package/src/components/design-system/ConfirmationModal.tsx +106 -0
  296. package/src/components/design-system/ConfirmationPopover.tsx +81 -0
  297. package/src/components/design-system/Drawer.tsx +123 -0
  298. package/src/components/design-system/FilterDropdown.tsx +72 -0
  299. package/src/components/design-system/Modal.tsx +206 -0
  300. package/src/components/design-system/Popover.tsx +142 -0
  301. package/src/components/design-system/TextInput.tsx +85 -0
  302. package/src/components/design-system/Toggle.tsx +58 -0
  303. package/src/components/design-system/index.ts +11 -0
  304. package/src/components/docs/DocsThemeToggle.tsx +49 -0
  305. package/src/components/health/CredentialHealthDashboard.tsx +214 -0
  306. package/src/components/icons/ChainIcons.tsx +72 -0
  307. package/src/components/layout/AppStoreDrawer.tsx +369 -0
  308. package/src/components/layout/ContentArea.tsx +21 -0
  309. package/src/components/layout/TabBar.tsx +278 -0
  310. package/src/components/layout/WalletSidebar.tsx +1033 -0
  311. package/src/components/layout/index.ts +4 -0
  312. package/src/components/marketing/AuraWalletSpecOverlay.tsx +635 -0
  313. package/src/components/marketing/DeviceMorphExperience.tsx +216 -0
  314. package/src/components/vault/ApiKeysConsole.tsx +1080 -0
  315. package/src/components/vault/AuditConsole.tsx +584 -0
  316. package/src/components/vault/CredentialDetail.tsx +455 -0
  317. package/src/components/vault/CredentialEmpty.tsx +55 -0
  318. package/src/components/vault/CredentialField.tsx +361 -0
  319. package/src/components/vault/CredentialForm.tsx +1212 -0
  320. package/src/components/vault/CredentialList.tsx +165 -0
  321. package/src/components/vault/CredentialRow.tsx +97 -0
  322. package/src/components/vault/CredentialShareModal.tsx +178 -0
  323. package/src/components/vault/CredentialVault.tsx +754 -0
  324. package/src/components/vault/CredentialWalletWidget.tsx +103 -0
  325. package/src/components/vault/ImportCredentialsModal.tsx +515 -0
  326. package/src/components/vault/LargeTypeModal.tsx +64 -0
  327. package/src/components/vault/PasswordGenerator.tsx +224 -0
  328. package/src/components/vault/TOTPDisplay.tsx +123 -0
  329. package/src/components/vault/VaultSidebar.tsx +413 -0
  330. package/src/components/vault/types.ts +54 -0
  331. package/src/context/AuthContext.tsx +337 -0
  332. package/src/context/PriceContext.tsx +113 -0
  333. package/src/context/ThemeContext.tsx +164 -0
  334. package/src/context/WebSocketContext.tsx +269 -0
  335. package/src/context/WorkspaceContext.tsx +668 -0
  336. package/src/hooks/index.ts +3 -0
  337. package/src/hooks/useAgentActions.ts +368 -0
  338. package/src/hooks/useBalance.ts +103 -0
  339. package/src/hooks/useBalances.ts +129 -0
  340. package/src/instrumentation.ts +12 -0
  341. package/src/lib/api.ts +449 -0
  342. package/src/lib/app-loader.ts +148 -0
  343. package/src/lib/app-registry.ts +178 -0
  344. package/src/lib/app-sdk.ts +157 -0
  345. package/src/lib/audit-console-adapter.ts +151 -0
  346. package/src/lib/auth-client.ts +75 -0
  347. package/src/lib/config.ts +74 -0
  348. package/src/lib/crypto.ts +112 -0
  349. package/src/lib/db.ts +21 -0
  350. package/src/lib/docs.ts +390 -0
  351. package/src/lib/events.ts +361 -0
  352. package/src/lib/pino.ts +24 -0
  353. package/src/lib/theme-handlers.ts +168 -0
  354. package/src/lib/theme.ts +351 -0
  355. package/src/lib/tokenData.ts +378 -0
  356. package/src/lib/vault-crypto.ts +129 -0
  357. package/src/lib/websocket-server.ts +302 -0
  358. package/src/lib/websocket-setup.ts +79 -0
  359. package/src/lib/wordlist.ts +2050 -0
  360. package/src/lib/workspace-handlers.ts +285 -0
  361. package/start.sh +80 -0
  362. package/tailwind.config.ts +99 -0
  363. package/tsconfig.json +42 -0
@@ -0,0 +1,63 @@
1
+ # Agent Auth Model
2
+
3
+ Aura auth is approval-based and pubkey-bound.
4
+
5
+ ## Token bootstrap
6
+
7
+ 1. Agent calls `POST /auth` with `agentId`, permissions, limits, and `pubkey`
8
+ 2. Human approves request
9
+ 3. Agent polls `GET /auth/:requestId?secret=...`
10
+ 4. Server returns `encryptedToken` (read-once)
11
+
12
+ All token mint flows require a valid RSA `pubkey`.
13
+
14
+ ## Why pubkey-bound
15
+
16
+ - Token transport is encrypted to caller public key
17
+ - Credential reads (`/credentials/:id/read`) require `agentPubkey` on token
18
+ - Plaintext credential payloads are not returned to non-admin agents
19
+
20
+ ## Local IPC path
21
+
22
+ CLI helpers can bootstrap via Unix socket:
23
+
24
+ - socket: `/tmp/aura-cli-{uid}.sock`
25
+ - owner-only permissions (0600)
26
+ - useful for local subagents without storing raw token in env
27
+
28
+ ## Least-privilege templates
29
+
30
+ Read-only credentials for one vault:
31
+
32
+ ```json
33
+ {
34
+ "permissions": ["secret:read", "totp:read"],
35
+ "credentialAccess": {
36
+ "read": ["vault:primary/*"],
37
+ "excludeFields": ["refresh_token", "client_secret"]
38
+ }
39
+ }
40
+ ```
41
+
42
+ Write-only credential automation:
43
+
44
+ ```json
45
+ {
46
+ "permissions": ["secret:write"],
47
+ "credentialAccess": { "write": ["tag:generated/*"] }
48
+ }
49
+ ```
50
+
51
+ ## Do / Don't
52
+
53
+ Do:
54
+
55
+ - request the narrowest scope you can
56
+ - rotate/re-approve when task changes
57
+ - use temporary tokens for elevated actions
58
+
59
+ Don't:
60
+
61
+ - store long-lived admin tokens in plaintext files
62
+ - request `admin:*` for routine secret reads
63
+ - grant wildcard scopes to untrusted subagents
@@ -0,0 +1,48 @@
1
+ # `.aura` File Format
2
+
3
+ `.aura` maps environment variable names to vault credential fields.
4
+
5
+ ## Syntax
6
+
7
+ ```ini
8
+ # comment
9
+ ENV_NAME=credentialName/field
10
+ OTHER_ENV=@vaultName/credentialName/field
11
+ ```
12
+
13
+ Rules:
14
+
15
+ - one mapping per line
16
+ - comments start with `#`
17
+ - env var names are validated (must be shell-safe)
18
+ - `@vault/...` form selects a specific vault mapping
19
+
20
+ ## Examples
21
+
22
+ ```ini
23
+ DATABASE_URL=postgres-prod/url
24
+ OPENAI_API_KEY=openai-prod/api_key
25
+ GITHUB_TOKEN=@agent/github/token
26
+ ```
27
+
28
+ ## Usage
29
+
30
+ ```bash
31
+ npx aurawallet env check
32
+ npx aurawallet env -- npm run dev
33
+ npx aurawallet env inject
34
+ ```
35
+
36
+ Migration helper:
37
+
38
+ ```bash
39
+ npx aurawallet env init --from .env
40
+ # or during setup
41
+ npx aurawallet init --from-dotenv
42
+ ```
43
+
44
+ ## Security notes
45
+
46
+ - `env inject` writes `.env` with mode `0600`
47
+ - `shell-hook` requires explicit allowlist per project
48
+ - avoid committing generated `.env`
@@ -0,0 +1,53 @@
1
+ # Credentials
2
+
3
+ Aura stores credentials as local encrypted files, scoped by vault.
4
+
5
+ ## Data model
6
+
7
+ Each credential has:
8
+
9
+ - `id`
10
+ - `vaultId`
11
+ - `type` (`login`, `card`, `note`, `api`, `apikey`, `custom`, `passkey`, `oauth2`)
12
+ - `name`
13
+ - `meta` (search/filter fields, tags, type-specific metadata)
14
+ - encrypted sensitive fields
15
+
16
+ Sensitive fields are encrypted with the vault credential key. Metadata stays plaintext for listing and search.
17
+
18
+ ## Field model
19
+
20
+ Field shape:
21
+
22
+ - `key` (string)
23
+ - `value` (string)
24
+ - `type` (`text`, `secret`, `url`, `email`, `number`)
25
+ - `sensitive` (boolean)
26
+
27
+ Non-sensitive fields can be mirrored into `meta` for searchability.
28
+
29
+ ## Access model
30
+
31
+ - `secret:read` to list/read
32
+ - `secret:write` to create/update/delete
33
+ - optional credential scopes (`credentialAccess.read` / `.write`)
34
+ - optional excluded fields (`excludeFields`)
35
+
36
+ Credential read endpoint returns data encrypted to the caller's `agentPubkey`.
37
+
38
+ ## Endpoints
39
+
40
+ - `POST /credentials`
41
+ - `GET /credentials`
42
+ - `GET /credentials/:id`
43
+ - `PUT /credentials/:id`
44
+ - `DELETE /credentials/:id`
45
+ - `POST /credentials/:id/read` (encrypted response)
46
+ - `POST /credentials/:id/totp`
47
+ - `GET /credentials/:id/secrets` (admin-only plaintext)
48
+
49
+ ## Notes
50
+
51
+ - `oauth2` credentials are restricted to the primary vault.
52
+ - TOTP capability is auto-detected when `totp`/`otp` field exists.
53
+ - Credential files are stored under Aura data directory `credentials/`.
@@ -0,0 +1,65 @@
1
+ # Getting Started (First Value Fast)
2
+
3
+ This guide is optimized for first success in under 10 minutes.
4
+
5
+ ## 1) Install + initialize
6
+
7
+ ```bash
8
+ npx aurawallet init
9
+ ```
10
+
11
+ ## 2) Start Aura
12
+
13
+ ```bash
14
+ npx aurawallet start
15
+ ```
16
+
17
+ Open the dashboard at `http://localhost:4747/app` and create/unlock your vault.
18
+
19
+ ## 3) Add one credential
20
+
21
+ In UI: add an API key credential (example: `openai-prod`).
22
+
23
+ Or via API:
24
+
25
+ ```bash
26
+ curl -X POST http://localhost:4242/credentials \
27
+ -H "Authorization: Bearer $AURA_TOKEN" \
28
+ -H "Content-Type: application/json" \
29
+ -d '{
30
+ "vaultId": "primary",
31
+ "type": "apikey",
32
+ "name": "openai-prod",
33
+ "fields": [{"key":"api_key","value":"sk-...","type":"secret","sensitive":true}]
34
+ }'
35
+ ```
36
+
37
+ ## 4) Read it back from CLI
38
+
39
+ ```bash
40
+ npx aurawallet vault get openai-prod --field api_key
41
+ ```
42
+
43
+ If this returns your value, Aura is working end-to-end.
44
+
45
+ ## 5) Replace one `.env` workflow
46
+
47
+ ```bash
48
+ npx aurawallet env init --from .env
49
+ npx aurawallet env -- npm run dev
50
+ ```
51
+
52
+ Now your app can load secrets from vault mappings instead of raw `.env` files.
53
+
54
+ ## Troubleshooting quick checks
55
+
56
+ ```bash
57
+ npx aurawallet status
58
+ npx aurawallet doctor
59
+ ```
60
+
61
+ ## Next steps
62
+
63
+ - [Use cases](./use-cases.md)
64
+ - [Why Aura](./why-aura.md)
65
+ - Operational runbooks: [Docs by job](../JOBS.md)
@@ -0,0 +1,45 @@
1
+ # Aura Overview
2
+
3
+ Aura is a local-first password manager and credential vault designed for both humans and AI agents.
4
+
5
+ ## Who Aura is for
6
+
7
+ - Developers managing API keys, passwords, OAuth2 tokens, and TOTP in one place
8
+ - Agent operators who need **scoped, auditable** secret access
9
+ - Teams moving away from `.env` sprawl and ad-hoc token sharing
10
+
11
+ ## What you get
12
+
13
+ - **One credential system** for CLI + app + agents
14
+ - **Scoped access controls** so agents can read only what they should
15
+ - **Project boundaries via `.aura`** to prevent cross-project secret bleed
16
+ - **Local-first runtime** (run on your own machine/infrastructure)
17
+
18
+ ## Why users switch
19
+
20
+ Without Aura:
21
+ - Secrets spread across `.env` files, notes, and CI variables
22
+ - Hard to rotate safely
23
+ - Hard to prove who accessed what
24
+
25
+ With Aura:
26
+ - Secrets are centralized and typed
27
+ - Agent access is explicit and bounded
28
+ - Access can be traced and reviewed
29
+
30
+ ## Fast proof (2 minutes)
31
+
32
+ ```bash
33
+ npx aurawallet init
34
+ npx aurawallet start
35
+ npx aurawallet status
36
+ ```
37
+
38
+ Then open `http://localhost:4747/app` and create your vault.
39
+
40
+ ## Where to go next
41
+
42
+ - [Getting started](./getting-started.md)
43
+ - [Use cases](./use-cases.md)
44
+ - [Why Aura (trust model)](./why-aura.md)
45
+ - Deep technical docs: [Docs by job](../JOBS.md)
@@ -0,0 +1,48 @@
1
+ # Aura Use Cases
2
+
3
+ ## 1) Developer workflow (replace scattered `.env` files)
4
+
5
+ Outcome: run projects with vault-backed secrets instead of manually copying credentials.
6
+
7
+ ```bash
8
+ npx aurawallet env init --from .env
9
+ npx aurawallet env -- npm run dev
10
+ ```
11
+
12
+ Best when you want local speed with less secret sprawl.
13
+
14
+ ## 2) Agent operator workflow (scoped access)
15
+
16
+ Outcome: let agents read only approved secrets, not your entire vault.
17
+
18
+ ```bash
19
+ npx aurawallet mcp
20
+ ```
21
+
22
+ Use profile/scoped token issuance so agent permissions match task risk.
23
+
24
+ More: [Agent auth model](../agent-auth.md), [MCP guide](../MCP.md)
25
+
26
+ ## 3) CI/security workflow (controlled non-human access)
27
+
28
+ Outcome: deterministic runtime checks and remediation before deploy.
29
+
30
+ ```bash
31
+ npx aurawallet doctor
32
+ ```
33
+
34
+ Use doctor output in CI to fail early when Aura runtime/auth assumptions are broken.
35
+
36
+ More: [Secure CI runbook](../jobs/secure-ci.md)
37
+
38
+ ## 4) Incident recovery workflow
39
+
40
+ Outcome: recover safely from lockout/misconfiguration.
41
+
42
+ Start with: [Recover from lockout](../jobs/recover-from-lockout.md)
43
+
44
+ ## Picking your first path
45
+
46
+ - Solo developer: start with `.env` migration
47
+ - Agent-heavy workflow: start with MCP + scoped issuance
48
+ - Team/ops context: start with CI checks + recovery runbook
@@ -0,0 +1,35 @@
1
+ # Why Aura
2
+
3
+ Aura is built around one idea: **process identity is not enough; secret access must be explicitly authorized and scoped.**
4
+
5
+ ## Trust model in plain language
6
+
7
+ - Local auth bootstrap proves a process can talk to Aura
8
+ - Authorization policy decides what that process can read/write
9
+ - `.aura` mappings enforce project-level boundaries
10
+ - Token/profile policy enforces least privilege
11
+ - Audit trails explain who accessed what and when
12
+
13
+ ## How Aura differs
14
+
15
+ - Not just a password vault UI: it is also an agent-safe credential runtime
16
+ - Not just static secret storage: supports typed credentials (TOTP, OAuth2 refresh, passkeys, SSH/GPG)
17
+ - Not just convenience: designed for deny-by-default and forensic traceability
18
+
19
+ ## Security posture highlights
20
+
21
+ - Local-first deployment (you control host/runtime)
22
+ - Scoped token profiles and permission boundaries
23
+ - Explicit project scoping and policy contracts
24
+ - Deterministic diagnostics via `aura doctor`
25
+
26
+ ## Reality check
27
+
28
+ Aura does **not** replace host security hygiene. Protect the machine, backups, and operator tokens.
29
+
30
+ ## Read deeper
31
+
32
+ - [Agent auth model](../agent-auth.md)
33
+ - [`.aura` format](../aura-file.md)
34
+ - [CLI guide](../CLI.md)
35
+ - [Job-based runbooks](../JOBS.md)
@@ -0,0 +1,77 @@
1
+ # Job: Connect an Agent (Least Privilege)
2
+
3
+ Connect an agent to Aura using local bootstrap and scoped secret access.
4
+
5
+ ## Preflight
6
+
7
+ ```bash
8
+ npx aurawallet status
9
+ ```
10
+
11
+ Expected: Aura server is healthy.
12
+
13
+ ## Runbook
14
+
15
+ 1) Verify local socket/bootstrap path is available.
16
+
17
+ ```bash
18
+ npx aurawallet vault list
19
+ ```
20
+
21
+ Expected: credentials can be listed without manually exporting long-lived admin tokens.
22
+
23
+ 2) Validate project-scoped mapping if this is a repo flow.
24
+
25
+ ```bash
26
+ npx aurawallet env check
27
+ ```
28
+
29
+ 3) Start MCP server for agent tooling.
30
+
31
+ ```bash
32
+ npx aurawallet mcp
33
+ ```
34
+
35
+ Optional helper install for supported clients:
36
+
37
+ ```bash
38
+ npx aurawallet mcp --install
39
+ ```
40
+
41
+ ## Success check
42
+
43
+ ```bash
44
+ npx aurawallet vault get openai-prod --field api_key
45
+ ```
46
+
47
+ Expected:
48
+ - command returns the requested field value (or structured denial for insufficient scope)
49
+ - no plaintext long-lived admin token committed to files
50
+
51
+ ## Failure signatures + fixes
52
+
53
+ - **"Access denied" / insufficient credential scope**
54
+ - Fix: request/approve a profile with required scope, then retry command.
55
+
56
+ - **"Socket unavailable" / local auth bootstrap failed**
57
+ - Fix: ensure Aura runtime is running and retry.
58
+ - Command:
59
+ ```bash
60
+ npx aurawallet start
61
+ ```
62
+
63
+ - **MCP tool not connecting**
64
+ - Fix: restart MCP process and verify client config install.
65
+ - Commands:
66
+ ```bash
67
+ npx aurawallet mcp --install
68
+ npx aurawallet mcp
69
+ ```
70
+
71
+ ## Final verification (`aura doctor`)
72
+
73
+ ```bash
74
+ npx aurawallet doctor
75
+ ```
76
+
77
+ Doctor should report auth/bootstrap checks as pass or actionable warnings.
@@ -0,0 +1,79 @@
1
+ # Job: Migrate from `.env` to Aura
2
+
3
+ Move existing `.env` secrets into Aura and run your app without plaintext env files.
4
+
5
+ ## Preflight
6
+
7
+ ```bash
8
+ npx aurawallet status
9
+ ```
10
+
11
+ Expected: server and dashboard are reachable (or actionable status output).
12
+
13
+ If Aura is not initialized yet:
14
+
15
+ ```bash
16
+ npx aurawallet init
17
+ ```
18
+
19
+ ## Runbook
20
+
21
+ 1) Generate `.aura` mapping from your existing `.env` file.
22
+
23
+ ```bash
24
+ npx aurawallet env init --from .env
25
+ ```
26
+
27
+ 2) Validate mapping + server/vault readiness.
28
+
29
+ ```bash
30
+ npx aurawallet env check
31
+ ```
32
+
33
+ 3) Run app with vault-injected env.
34
+
35
+ ```bash
36
+ npx aurawallet env -- npm run dev
37
+ ```
38
+
39
+ ## Success check
40
+
41
+ ```bash
42
+ npx aurawallet env list
43
+ ```
44
+
45
+ Expected:
46
+ - command returns mapped variables from `.aura`
47
+ - app starts using injected values
48
+ - no need to source `.env` manually
49
+
50
+ ## Failure signatures + fixes
51
+
52
+ - **"No active vault" / unlock-related errors**
53
+ - Fix: unlock vault, then rerun checks.
54
+ - Command:
55
+ ```bash
56
+ npx aurawallet unlock
57
+ ```
58
+
59
+ - **"No .aura mapping" / parse errors**
60
+ - Fix: regenerate from `.env`, then rerun `env check`.
61
+ - Command:
62
+ ```bash
63
+ npx aurawallet env init --from .env
64
+ ```
65
+
66
+ - **Server unreachable**
67
+ - Fix: start Aura runtime.
68
+ - Command:
69
+ ```bash
70
+ npx aurawallet start
71
+ ```
72
+
73
+ ## Final verification (`aura doctor`)
74
+
75
+ ```bash
76
+ npx aurawallet doctor
77
+ ```
78
+
79
+ If doctor reports warnings/failures, follow remediation output and rerun doctor until stable.
@@ -0,0 +1,72 @@
1
+ # Job: Recover from Lockout
2
+
3
+ Safely recover access when vault unlock/auth paths are broken.
4
+
5
+ ## Preflight
6
+
7
+ 1) Check runtime health.
8
+
9
+ ```bash
10
+ npx aurawallet status
11
+ ```
12
+
13
+ 2) If server is down, start it.
14
+
15
+ ```bash
16
+ npx aurawallet start
17
+ ```
18
+
19
+ ## Runbook
20
+
21
+ 1) Attempt normal unlock path.
22
+
23
+ ```bash
24
+ npx aurawallet unlock
25
+ ```
26
+
27
+ 2) If unlock fails and backups exist, inspect restore options.
28
+
29
+ ```bash
30
+ npx aurawallet restore --list
31
+ ```
32
+
33
+ 3) Dry-run latest restore to validate migration compatibility.
34
+
35
+ ```bash
36
+ npx aurawallet restore --dry-run --latest
37
+ ```
38
+
39
+ 4) If dry-run is clean, execute restore.
40
+
41
+ ```bash
42
+ npx aurawallet restore --latest
43
+ ```
44
+
45
+ ## Success check
46
+
47
+ ```bash
48
+ npx aurawallet vault list
49
+ ```
50
+
51
+ Expected:
52
+ - vault/credentials are readable after unlock or restore
53
+ - no schema mismatch errors after restore
54
+
55
+ ## Failure signatures + fixes
56
+
57
+ - **"vault_locked" persists after unlock**
58
+ - Fix: re-run unlock, verify password, then confirm server state with `status`.
59
+
60
+ - **Restore migration errors**
61
+ - Fix: keep backup untouched, upgrade Aura version, retry `--dry-run` first.
62
+
63
+ - **No backups listed**
64
+ - Fix: recover from external/system backups and re-run restore flow.
65
+
66
+ ## Final verification (`aura doctor`)
67
+
68
+ ```bash
69
+ npx aurawallet doctor --strict
70
+ ```
71
+
72
+ Only close incident after doctor returns pass (or explicitly accepted warnings).
@@ -0,0 +1,63 @@
1
+ # Job: Secure CI with Scoped Aura Access
2
+
3
+ Run CI jobs with minimal Aura permissions and deterministic health checks.
4
+
5
+ ## Preflight
6
+
7
+ - Ensure CI has a scoped Aura token in secret storage (for example `AURA_TOKEN`).
8
+ - Never commit tokens to repo files.
9
+
10
+ Quick connectivity check in CI shell:
11
+
12
+ ```bash
13
+ npx aurawallet status
14
+ ```
15
+
16
+ ## Runbook
17
+
18
+ 1) Validate env mapping and readiness in CI workspace.
19
+
20
+ ```bash
21
+ npx aurawallet env check
22
+ ```
23
+
24
+ 2) Fetch only required secret fields (example).
25
+
26
+ ```bash
27
+ npx aurawallet vault get ci-npm-token --field token
28
+ ```
29
+
30
+ 3) Run build/test command with vault-injected env.
31
+
32
+ ```bash
33
+ npx aurawallet env -- npm run build
34
+ ```
35
+
36
+ ## Success check
37
+
38
+ ```bash
39
+ npx aurawallet vault list
40
+ ```
41
+
42
+ Expected:
43
+ - only scoped credentials are accessible
44
+ - CI job completes without raw `.env` files in repository
45
+
46
+ ## Failure signatures + fixes
47
+
48
+ - **HTTP 401 / unauthorized**
49
+ - Fix: rotate or reissue CI token with required scopes and TTL.
50
+
51
+ - **Credential not found in scope**
52
+ - Fix: update CI token/profile scope or `.aura` mapping to include required key.
53
+
54
+ - **Rate-limit / policy deny**
55
+ - Fix: inspect token policy and adjust per-credential budget for CI workload.
56
+
57
+ ## Final verification (`aura doctor`)
58
+
59
+ ```bash
60
+ npx aurawallet doctor --json
61
+ ```
62
+
63
+ Store doctor JSON artifact in CI for auditability; remediate any fail state before release.
package/docs/oauth2.md ADDED
@@ -0,0 +1,42 @@
1
+ # OAuth2 Credential Type
2
+
3
+ Aura supports `oauth2` credentials with transparent access-token refresh.
4
+
5
+ ## Required metadata
6
+
7
+ - `meta.token_endpoint` (string)
8
+ - `meta.expires_at` (unix seconds)
9
+
10
+ `oauth2` credentials must be in the primary vault.
11
+
12
+ ## Expected sensitive fields
13
+
14
+ - `access_token`
15
+ - `refresh_token`
16
+ - `client_id`
17
+ - `client_secret`
18
+
19
+ Optional meta:
20
+
21
+ - `auth_method` (`client_secret_post` default, or `client_secret_basic`)
22
+
23
+ ## Refresh behavior
24
+
25
+ On `POST /credentials/:id/read`:
26
+
27
+ 1. if access token expired/near expiry, Aura calls token endpoint
28
+ 2. updates stored access token (and refresh token if returned)
29
+ 3. updates `expires_at` + `last_refreshed`
30
+ 4. returns filtered fields encrypted to `agentPubkey`
31
+
32
+ Default excluded fields for oauth2 agent reads:
33
+
34
+ - `refresh_token`
35
+ - `client_secret`
36
+ - `client_id`
37
+ - `token_endpoint`
38
+
39
+ ## Re-auth status
40
+
41
+ `POST /credentials/:id/reauth` exists but full authorization-code redirect flow is not implemented yet.
42
+ Aura marks credentials `needs_reauth` on revoked refresh token detection.