archy/loop/prompt.md
Dorian e55fd3baf0 feat: add TOTP 2FA, API key switcher, login progress bar, and alpha hardening plan
- TOTP 2FA: full setup/confirm/disable/login flow with Argon2id + ChaCha20-Poly1305
  encrypted secret storage, QR code generation, and bcrypt-hashed backup codes
- API key switcher: OAuth vs personal API key toggle in AIUI chat settings with
  status indicator, key validation, and help text
- Login progress bar: server startup detection with health check polling, form
  disabled until server is ready
- AI quarantine docs: comprehensive HTML page documenting all 6 security layers
- Settings: AI Data Access permission toggles with per-category control
- Alpha hardening plan: 28-task overnight automation plan across 7 phases
  (onboarding, login, app install, AIUI, UI polish, security, ISO build)
- Backlog: node discovery spatial map feature for alpha demo

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 12:23:57 +00:00

3.4 KiB

You are hardening Archipelago (Archy) for its first alpha release. People will flash this ISO to USB, install on their hardware, and use the web UI to manage their node. Everything must work flawlessly.

Read these files first:

  1. loop/plan.md — Your task checklist (mark items - [x] as you complete them)
  2. CLAUDE.md — Archy project conventions, architecture, coding standards

What You're Doing

No new features. No design changes. You are:

  • Hardening the first-time onboarding flow so it works perfectly
  • Ensuring app installation is bulletproof
  • Making the AIUI chat work reliably
  • Fixing any UI bugs or rough edges
  • Building the alpha ISO when everything passes

Architecture Quick Reference

Server: 192.168.1.228 (ssh: archipelago@192.168.1.228, pass: EwPDR8q45l0Upx@)
Frontend: neode-ui/ → builds to web/dist/neode-ui/ → deployed to /opt/archipelago/web-ui/
Backend: core/archipelago/ → Rust binary → deployed to /usr/local/bin/archipelago
AIUI: /Users/dorian/Projects/AIUI/packages/app/ → builds to dist/ → deployed to /opt/archipelago/web-ui/aiui/
Claude Proxy: port 3141 → systemd service claude-proxy
Nginx: port 80 → proxies /rpc/, /ws/, /health, /aiui/

Key Paths

  • Onboarding views: neode-ui/src/views/Onboarding*.vue
  • Router: neode-ui/src/router/index.ts
  • App store: neode-ui/src/stores/app.ts
  • RPC client: neode-ui/src/api/rpc-client.ts
  • Container client: neode-ui/src/api/container-client.ts
  • App manifests: apps/*/manifest.yml
  • Context broker: neode-ui/src/services/contextBroker.ts
  • AIUI composable: /Users/dorian/Projects/AIUI/packages/app/src/composables/useAI.ts
  • Claude proxy: /Users/dorian/Projects/AIUI/packages/app/server/claude-proxy.ts

For each task in loop/plan.md:

  1. Find the first unchecked - [ ] item
  2. Read the task description carefully — it tells you exactly what to do
  3. Read the relevant source files before making changes
  4. Make the change following CLAUDE.md conventions
  5. Run cd neode-ui && npm run type-check — fix all errors
  6. Run cd neode-ui && npm run build — must succeed
  7. Deploy: ./scripts/deploy-to-target.sh --live
  8. If AIUI files were changed: build AIUI (cd /Users/dorian/Projects/AIUI/packages/app && node node_modules/vite/bin/vite.js build) and deploy to server (tar czf /tmp/aiui.tar.gz -C dist . && sshpass -p 'EwPDR8q45l0Upx@' ssh archipelago@192.168.1.228 'mkdir -p /tmp/aiui-deploy' && sshpass -p 'EwPDR8q45l0Upx@' scp /tmp/aiui.tar.gz archipelago@192.168.1.228:/tmp/aiui-deploy/ && sshpass -p 'EwPDR8q45l0Upx@' ssh archipelago@192.168.1.228 'cd /tmp/aiui-deploy && tar xzf aiui.tar.gz && echo "EwPDR8q45l0Upx@" | sudo -S rsync -a --delete /tmp/aiui-deploy/ /opt/archipelago/web-ui/aiui/')
  9. Verify the fix works on http://192.168.1.228
  10. Mark it done - [x] in loop/plan.md
  11. Commit: type: description
  12. Move to next task immediately

Rules

  • Read files before editing — understand before changing
  • Never skip build/typecheck — if it fails, fix before moving on
  • Always deploy after completing a task — changes must be live
  • If a task is proving difficult after 15+ genuine attempts, add (BLOCKED: reason) to the task and move on
  • Test on the actual server, not just locally
  • Do not stop until all tasks are checked or you hit rate limits
  • AIUI files are outside the project — use Bash with python3 for edits if the Edit tool is blocked by hooks
  • For ISO build: SSH to 192.168.1.228 and run the build script there