2026-01-24 22:59:20 +00:00
|
|
|
[package]
|
|
|
|
|
name = "archipelago"
|
release(v1.7.29-alpha): VPS as default app registry + settings UI
- New Settings → App registries page (/dashboard/settings/registries)
that mirrors the update-mirrors experience: list of configured
registries, test reachability, set primary, add/remove. New
registry.set-primary RPC; existing registry.{list,add,remove,test}
reused.
- Default RegistryConfig flipped: VPS (23.182.128.160:3000/lfg2025) is
now Server 1 (primary), tx1138 is Server 2 (fallback).
- Install pipeline now rewrites the first pull to the primary registry
URL before attempting it. Before this, installs always hit whichever
registry the image was hardcoded to, so changing the primary didn't
actually affect where images came from. On failure, the existing
fallback walk skips the primary (already tried) and walks the rest.
- App catalog proxy UPSTREAMS order flipped so the catalog follows the
same VPS-first rule.
- Reboot overlay: animated "a" logo now sits in the center of the ring
(matches the screensaver composition). Extracted the logo-wrapper
pattern inline.
7/7 registry tests pass.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-21 15:54:07 -04:00
|
|
|
version = "1.7.29-alpha"
|
2026-01-24 22:59:20 +00:00
|
|
|
edition = "2021"
|
|
|
|
|
description = "Archipelago Bitcoin Node OS - Native backend"
|
|
|
|
|
authors = ["Archipelago Team"]
|
|
|
|
|
|
|
|
|
|
[[bin]]
|
|
|
|
|
name = "archipelago"
|
|
|
|
|
path = "src/main.rs"
|
|
|
|
|
|
|
|
|
|
[dependencies]
|
|
|
|
|
# Core dependencies
|
|
|
|
|
tokio = { version = "1", features = ["full"] }
|
|
|
|
|
serde = { version = "1.0", features = ["derive"] }
|
|
|
|
|
serde_json = "1.0"
|
|
|
|
|
anyhow = "1.0"
|
|
|
|
|
thiserror = "1.0"
|
|
|
|
|
tracing = "0.1"
|
|
|
|
|
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
|
|
|
|
|
|
|
|
|
# HTTP and WebSocket
|
|
|
|
|
hyper = { version = "0.14", features = ["full", "http1"] }
|
|
|
|
|
hyper-util = { version = "0.1", features = ["full", "http1"] }
|
|
|
|
|
http-body-util = "0.1"
|
2026-01-24 23:18:24 +00:00
|
|
|
http-body = "1.0"
|
2026-01-24 22:59:20 +00:00
|
|
|
tower = "0.5"
|
|
|
|
|
tower-http = { version = "0.6", features = ["cors", "trace"] }
|
2026-01-27 22:47:51 +00:00
|
|
|
hyper-ws-listener = "0.3.0"
|
|
|
|
|
tokio-tungstenite = "0.20"
|
2026-01-27 22:37:08 +00:00
|
|
|
futures-util = "0.3"
|
2026-01-24 22:59:20 +00:00
|
|
|
|
|
|
|
|
# Our modules
|
|
|
|
|
archipelago-container = { path = "../container" }
|
|
|
|
|
archipelago-security = { path = "../security" }
|
|
|
|
|
archipelago-performance = { path = "../performance" }
|
2026-03-26 15:33:13 +00:00
|
|
|
|
2026-01-24 22:59:20 +00:00
|
|
|
|
|
|
|
|
# Database (optional for now - can use SQLite or skip)
|
|
|
|
|
# sqlx = { version = "0.7", features = ["sqlite", "runtime-tokio-rustls"] }
|
|
|
|
|
|
|
|
|
|
# Authentication
|
|
|
|
|
bcrypt = "0.15"
|
2026-03-25 15:52:26 +00:00
|
|
|
sha2 = "0.10.9"
|
|
|
|
|
hmac = "0.12.1"
|
2026-01-24 22:59:20 +00:00
|
|
|
uuid = { version = "1.0", features = ["v4"] }
|
2026-03-06 03:26:56 +00:00
|
|
|
regex = "1.10"
|
2026-01-24 22:59:20 +00:00
|
|
|
|
2026-03-11 12:55:13 +00:00
|
|
|
# Node identity (Ed25519 + X25519 key agreement)
|
2026-03-25 15:52:26 +00:00
|
|
|
ed25519-dalek = { version = "2.2.0", features = ["rand_core"] }
|
|
|
|
|
curve25519-dalek = "4.1.3"
|
|
|
|
|
rand = "0.8.5"
|
2026-02-17 15:03:34 +00:00
|
|
|
hex = "0.4"
|
|
|
|
|
bs58 = "0.5"
|
|
|
|
|
chrono = "0.4"
|
|
|
|
|
|
2026-03-31 01:41:24 +01:00
|
|
|
# BIP-39 mnemonic seed generation + BIP-32 HD key derivation
|
|
|
|
|
bip39 = { version = "=2.1.0", features = ["rand"] }
|
|
|
|
|
bitcoin = { version = "=0.32.5", features = ["rand-std"] }
|
|
|
|
|
|
2026-01-24 22:59:20 +00:00
|
|
|
# Configuration
|
|
|
|
|
toml = "0.8"
|
|
|
|
|
serde_yaml = "0.9"
|
|
|
|
|
|
2026-02-17 15:03:34 +00:00
|
|
|
# HTTP client (for LND REST proxy, Tor SOCKS for peer messaging)
|
2026-03-11 12:55:13 +00:00
|
|
|
# Uses rustls-tls for cross-compilation (no OpenSSL dependency)
|
|
|
|
|
reqwest = { version = "0.11", default-features = false, features = ["json", "socks", "rustls-tls"] }
|
2026-02-17 15:03:34 +00:00
|
|
|
|
2026-03-12 12:56:59 +00:00
|
|
|
# Nostr (node discovery + NIP-44 encrypted peer handshake)
|
2026-03-12 23:50:56 +00:00
|
|
|
nostr-sdk = { version = "0.44", features = ["nip04", "nip44"] }
|
2026-02-14 16:44:20 +00:00
|
|
|
|
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
|
|
|
# Backup encryption (DID identity export) + TOTP 2FA encryption
|
2026-03-25 15:52:26 +00:00
|
|
|
argon2 = "0.5.3"
|
|
|
|
|
chacha20poly1305 = "0.10.1"
|
2026-03-02 08:34:13 +00:00
|
|
|
base64 = "0.21"
|
|
|
|
|
|
2026-03-11 12:55:13 +00:00
|
|
|
# Full system backup (tar archive + gzip compression)
|
|
|
|
|
tar = "0.4"
|
|
|
|
|
flate2 = "1.0"
|
|
|
|
|
|
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
|
|
|
# TOTP 2FA
|
|
|
|
|
totp-rs = { version = "5.7", features = ["otpauth", "gen_secret"] }
|
|
|
|
|
qrcode = "0.14"
|
|
|
|
|
data-encoding = "2.6"
|
2026-03-25 15:52:26 +00:00
|
|
|
zeroize = { version = "1.8.2", features = ["derive"] }
|
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
|
|
|
|
2026-03-14 04:01:56 +00:00
|
|
|
# Mainline DHT (did:dht — BitTorrent DHT for decentralized identity)
|
|
|
|
|
mainline = "2"
|
|
|
|
|
zbase32 = "0.1"
|
2026-03-14 04:18:32 +00:00
|
|
|
bytes = "1"
|
2026-03-14 04:01:56 +00:00
|
|
|
|
2026-03-17 00:03:08 +00:00
|
|
|
# Mesh networking (Meshcore serial protocol over USB LoRa radios)
|
|
|
|
|
serial2-tokio = "0.1"
|
|
|
|
|
|
2026-03-17 01:28:35 +00:00
|
|
|
# Double Ratchet key derivation (Phase 3: encrypted mesh messaging)
|
2026-03-25 15:52:26 +00:00
|
|
|
hkdf = "0.12.4"
|
2026-03-17 01:28:35 +00:00
|
|
|
|
2026-03-17 00:03:08 +00:00
|
|
|
# Transport abstraction (Phase 2: mesh as federation transport)
|
2026-03-17 00:34:37 +00:00
|
|
|
ciborium = "0.2.2"
|
|
|
|
|
reed-solomon-erasure = "6.0"
|
|
|
|
|
mdns-sd = "0.18"
|
2026-03-17 00:03:08 +00:00
|
|
|
|
2026-03-14 02:54:59 +00:00
|
|
|
# Systemd watchdog notification
|
|
|
|
|
sd-notify = "0.4"
|
|
|
|
|
|
2026-01-24 22:59:20 +00:00
|
|
|
[dev-dependencies]
|
|
|
|
|
tokio-test = "0.4"
|
2026-03-10 23:51:22 +00:00
|
|
|
tempfile = "3.10"
|