Standalone WireGuard (wg0:51820): - New archipelago-wg.service creates wg0 independent of NostrVPN - Keypair generated on first-boot, persisted on LUKS partition - vpn.create-peer uses wg genkey/pubkey (no nvpn dependency) - wg-address service depends on archipelago-wg, not nostr-vpn Networking fixes: - Remove nos.lol from default relays (requires PoW, events rejected) - Add Tor hidden service for private relay (port 7777) — NAT'd peers can reach relay over Tor for NostrVPN signaling - Fix Tor hostname sync race: wait loop before copying hostname files - Add tor-hostnames + wireguard dirs to LUKS partition setup - Include relay in hostname sync loops (setup-tor.sh + first-boot) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2.4 KiB
CLAUDE.md — Archipelago (Archy)
Archipelago is a Bitcoin Node OS — bootable, self-sovereign personal server. Flash to USB, install on hardware, manage via web UI.
Stack: Rust backend + Vue 3 + TypeScript (strict) + Vite 7 + Tailwind + Pinia + Podman on Debian 12 Version: 1.3.0 | Target: x86_64 and ARM64
Beta Freeze (2026-03-18)
Phase 1: Feature Testing (internal). Feature set is locked.
Only: bug fixes, security hardening, ISO build fixes, UI polish, testing.
Track: docs/BETA-PROGRESS.md | Checklist: docs/BETA-RELEASE-CHECKLIST.md
Quick Reference
cd neode-ui && npm start # Local dev (mock backend :5959, Vite :8100)
cd neode-ui && npm run build # Build (outputs to web/dist/neode-ui/)
./scripts/deploy-to-target.sh --live # Deploy to live server (.228)
Architecture
Debian 12
├── Podman (rootless, user archipelago)
├── Nginx (80/443 → backend, app proxies)
├── Rust Backend (core/) on 127.0.0.1:5678
└── Vue.js UI (neode-ui/)
Data paths: /var/lib/archipelago/{app-id}/ (data), /opt/archipelago/web-ui/ (frontend), /usr/local/bin/archipelago (binary)
Critical Rules
- Do not build Rust on macOS — deploy script handles cross-compilation via rsync + remote build.
- Always deploy after changes —
./scripts/deploy-to-target.sh --live - Frontend builds to
web/dist/neode-ui/— notneode-ui/dist/ - Container images:
scripts/image-versions.shis the single source of truth. All scripts use$*_IMAGEvariables, not hardcoded registry paths. - Type-check before committing —
cd neode-ui && npx vue-tsc -b --noEmit
App Integration Checklist
When adding/fixing apps, check all of these:
core/archipelago/src/api/rpc/package/— config, capabilities, depsneode-ui/src/views/marketplace/marketplaceData.ts— marketplace entryimage-recipe/configs/nginx-archipelago.conf— proxy rules (HTTP + HTTPS)scripts/image-versions.sh— pinned image versionscripts/first-boot-containers.sh— first boot creationscripts/deploy-to-target.sh— deploy logic
Git
Commits: type: description (feat:, fix:, docs:, refactor:, test:, chore:, perf:)
Push to: git push tx1138 main
Compact Instructions
When compacting, preserve: list of modified files, test results, deploy target state, current branch, infrastructure IPs.