2026-07-29 10:25:54 -04:00

6.4 KiB

Technology Stack

Analysis Date: 2026-07-29

Languages

Primary:

  • Rust 2021 edition - Backend server (Archipelago daemon, container orchestrator)
  • TypeScript 5.9 - Frontend (Vue components, application code)
  • Vue 3 (TypeScript) - UI framework and reactive components
  • Python 3.13 - Reticulum mesh daemon (RNS/LXMF protocols)

Secondary:

  • JavaScript - Build scripts, mock backend (neode-ui/mock-backend.js), test utilities
  • YAML - Configuration (docker-compose, app manifests)
  • Shell - Build scripts, deployment helpers

Runtime

Environment:

  • Rust (1.70+) - Native compiled binaries
  • Node.js 22 (Alpine-based containers) - Frontend dev/build, mock backend
  • Python 3.13 - Reticulum daemon runtime
  • Tokio async runtime (v1, full features) - Async server runtime

Package Manager:

  • npm (v10+) - JavaScript dependencies
  • Cargo (v1.70+) - Rust dependencies
  • pip - Python dependencies (Reticulum stack)
  • Lockfiles: neode-ui/package-lock.json, core/Cargo.lock

Frameworks

Core:

  • Tokio (v1) - Async Rust runtime, full features (networking, signals, sync primitives)
  • Vue 3 (v3.5) - Progressive web framework with TypeScript support
  • Hyper (v0.14) - HTTP/1 server framework with WebSocket support
  • Reticulum (v1.3.5) - Mesh networking protocol stack
  • LXMF (v1.0.1) - Lightweight message format protocol

HTTP & WebSocket:

  • Hyper v0.14 (HTTP/1, full features) - Core HTTP server
  • Hyper-util v0.1 - HTTP utilities
  • Tower v0.5 - Middleware and service composing
  • Tower-http v0.6 - CORS, tracing middleware
  • Hyper-ws-listener v0.3 - WebSocket upgrade handler
  • Tokio-tungstenite v0.20 - WebSocket client/server implementation
  • Reqwest v0.11 - HTTP client (with rustls-tls, SOCKS proxy support, JSON)

Frontend Build:

  • Vite v7.2 - Build tool and dev server
  • Vue-tsc v3.1 - TypeScript compilation for Vue
  • Tailwind CSS v3.4 - Utility-first CSS framework
  • Autoprefixer v10.4 - CSS vendor prefixes
  • PostCSS v8.5 - CSS processing

Testing:

  • Vitest v3.1 - Unit test runner (Vite-native)
  • Playwright v1.58 - E2E testing (browser automation)
  • @vue/test-utils v2.4 - Vue component testing
  • JSDOM v25 - DOM implementation for tests
  • Tokio-test v0.4 - Async Rust test utilities

PWA:

  • Vite-plugin-pwa v1.2 - Progressive Web App support
  • Workbox integration - Service worker caching strategies

Key Dependencies

Critical:

  • bitcoin v0.32.5 - Bitcoin library (with rand-std feature for BIP-39/BIP-32)
  • bip39 v2.1.0 - Mnemonic seed generation
  • nostr-sdk v0.44 - Nostr protocol (NIP-04, NIP-44 encrypted messaging)
  • mainline v2 - BitTorrent DHT (did:dht decentralized identity)
  • reticulum v1.3.5 - Mesh networking protocol
  • lxmf v1.0.1 - Lightweight message format

Cryptography:

  • ed25519-dalek v2.2 - Ed25519 digital signatures (with rand_core)
  • curve25519-dalek v4.1 - X25519 elliptic curve (key agreement)
  • blake3 v1 - BLAKE3 hash function
  • bcrypt v0.15 - Password hashing
  • sha2 v0.10 - SHA-256 hashing
  • hmac v0.12 - HMAC authentication
  • argon2 v0.5 - Argon2 password hashing
  • chacha20poly1305 v0.10 - AEAD encryption
  • zeroize v1.8 - Secure memory wiping

Authentication & Identity:

  • uuid v1.0 - UUID generation (v4)
  • totp-rs v5.7 - TOTP 2FA (with otpauth, gen_secret)
  • qrcode v0.14 - QR code generation (server-side)

Data Serialization:

  • serde v1.0 - Serialization framework (with derive)
  • serde_json v1.0 - JSON codec
  • serde_yaml v0.9 - YAML codec
  • ciborium v0.2 - CBOR encoding/decoding
  • serde_bytes v0.11 - Efficient byte serialization
  • toml v0.8 - TOML config parsing

Networking & Mesh:

  • mdns-sd v0.18 - mDNS service discovery
  • serial2-tokio v0.1 - Serial port communication (LoRa radios over USB)
  • socket2 v0.5 - Low-level socket options (IPv6_V6ONLY for dual-stack)
  • libc v0.2 - Process group signaling

Compression & Archives:

  • tar v0.4 - TAR archive creation
  • flate2 v1.0 - gzip compression
  • zip v2.0 - ZIP archive handling (LoRa firmware flashing)
  • reed-solomon-erasure v6.0 - Erasure coding (Phase 2 mesh transport)
  • hkdf v0.12 - HKDF key derivation (Phase 3 encrypted mesh)

Utilities:

  • anyhow v1.0 - Error handling
  • thiserror v1.0 - Error types with derive macros
  • tracing v0.1 - Structured logging
  • tracing-subscriber v0.3 - Log filtering and formatting
  • regex v1.10 - Pattern matching
  • chrono v0.4 - Date/time handling
  • hex v0.4 - Hex encoding/decoding
  • bs58 v0.5 - Base58 encoding (Bitcoin addresses)
  • base64 v0.21 - Base64 encoding
  • zbase32 v0.1 - Z-base-32 encoding (DHT)
  • data-encoding v2.6 - Multiple encoding schemes
  • bytes v1 - Efficient byte buffer
  • futures-util v0.3 - Async utilities
  • http-body-util v0.1 - HTTP body utilities
  • http-body v1.0 - HTTP body abstractions
  • indexmap v2.0 - Ordered maps
  • async-trait v0.1 - Async trait methods
  • sd-notify v0.4 - Systemd watchdog notification

Infrastructure (Optional):

  • iroh v1 (optional, feature-gated) - QUIC-based peer swarm engine (Phase 2)
  • iroh-blobs v0.103 (optional, feature-gated) - Content addressable storage provider

Configuration

Environment:

  • Config file: config/archipelago.toml or $DATA_DIR/config.yml
  • Runtime options: Docker/Podman selection, dev/prod modes, FIPS anchor selection, Nostr discovery
  • Key env vars: ARCHIPELAGO_DATA_DIR, ARCHIPELAGO_LOG_LEVEL, CONTAINER_RUNTIME, NOSTR_DISCOVERY_ENABLED, NOSTR_RELAYS, NOSTR_TOR_PROXY

Build:

  • Cargo workspace at core/ (5 members: archipelago, container, openwrt, performance, security)
  • Release profile: opt-level 3
  • Dev profile: opt-level 0
  • Test profile: opt-level 3
  • Cross-compilation: aarch64-unknown-linux-gnu via .cargo/config.toml

Frontend Build:

  • Vite config: neode-ui/vite.config.ts (development port 8100, production build to ../web/dist/neode-ui)
  • TypeScript config: neode-ui/tsconfig.json
  • Module path alias: @src/

Platform Requirements

Development:

  • Rust 1.70+ with Cargo
  • Node.js 22+ with npm
  • Python 3.13+ (for Reticulum daemon)
  • Docker or Podman (for local app testing)
  • rustup target: aarch64-unknown-linux-gnu (for ARM64 cross-compilation)
  • gcc-aarch64-linux-gnu (for cross-compilation toolchain on Linux hosts)

Production:

  • Deployment target: Debian/Alpine Linux (rootless Podman)
  • Binary output: /usr/local/bin/archipelago (sideloaded or via Quadlet systemd units)
  • Frontend served: nginx with Vite-built SPA (PWA manifest, service worker, CORS proxies)
  • Database support: Optional (SQLx with SQLite driver available but commented out)

Stack analysis: 2026-07-29