Skip to content

durability-labs/archivist-desktop

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

196 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Archivist Desktop

A cross-platform desktop application for decentralized file storage, built with Tauri v2, React, and TypeScript.

WARNING: Alpha Software - Pilot Program

This software is in alpha stage and is part of the pilot program. Do not use this for mission-critical data or personal files that you cannot afford to lose.

  • Data loss may occur due to bugs, incomplete features, or network issues
  • There is no guarantee of data persistence or recovery
  • Always maintain separate backups of important files
  • This software is provided "as-is" without warranty of any kind

By using this software, you acknowledge and accept these risks.

Screenshots

Dashboard

Welcome
Onboarding
Wallet
Wallet
Folder Sync
Folder Sync
Marketplace
Marketplace
Settings
Settings
Torrents
Torrents
View all screenshots
See the screenshots/ directory for 22 screenshots covering every page of the app.

Features

Core

  • Guided Onboarding β€” first-run wizard to get your first backup in under 30 seconds
  • File Management β€” upload, download, and manage files; paste a CID to auto-trigger download
  • Folder Sync β€” watch folders and automatically sync changes to the network
  • Backup Server β€” automatic continuous backup to designated peers
  • Device Management β€” My Devices overview and step-by-step Add Device wizard

Marketplace

  • Storage Marketplace β€” browse providers offering storage slots, request storage on the network; inline tooltips explain terms like collateral, slots, and proof probability
  • My Deals β€” view completed purchases and active provider slots
  • Wallet β€” Ethereum wallet with generate/import, balance tracking, and network switching (devnet/testnet)

Archiving Tools

  • Media Downloader β€” download video and audio from 100+ sites via yt-dlp, quality selection, download queue with file path chooser
  • Media Player β€” built-in video player with playlist, accessible from completed downloads
  • Torrents β€” add magnet links and .torrent files, per-file selection, speed limits
  • Web Archive β€” crawl and archive websites (including video, audio, and media assets) to decentralized storage, browse archives in-app, choose output directory
  • Discourse Forum Archiver β€” specialized archiver for Discourse forums that generates full static HTML sites from forum API data

Communication

  • IRC Chat β€” embedded IRC chat client on the Dashboard
  • P2P Encrypted Chat β€” direct peer-to-peer messaging with end-to-end encryption, group chat, and safety number verification (TOFU)

Privacy & Security

  • Sensitive Field Toggle β€” eye icon to show/hide peer IDs, SPR records, ETH addresses, API URLs, and other sensitive data (useful for streaming/screen sharing)
  • End-to-End Encryption β€” chat messages encrypted using double-ratchet sessions with forward secrecy
  • Safety Numbers β€” verify peer identities with safety number comparison

System

  • Peer Network β€” connect with peers, share SPR records, and monitor network stats
  • Node Logs β€” built-in real-time log viewer with auto-refresh and auto-scroll
  • System Tray β€” runs in the background with quick access from the system tray
  • Auto-Update β€” automatic updates from GitHub releases with latest.json manifest
  • Sound Notifications β€” audio feedback for node startup, peer connections, and downloads
  • Manual Announce IP β€” override UPnP with a manual public IP for NAT traversal

Tech Stack

Layer Technology
Frontend React 18 + TypeScript + Vite
Backend Rust + Tauri v2
Sidecar archivist-node (P2P storage daemon)
Package Manager pnpm v10
Node.js v20
Rust 1.77.2+ stable

Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚              Archivist Desktop (Tauri App)               β”‚
β”‚                                                          β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚  β”‚  React Frontend    β”‚      β”‚   Rust Backend         β”‚ β”‚
β”‚  β”‚  (Webview)         │◄────►│   (Native Process)     β”‚ β”‚
β”‚  β”‚                    β”‚ IPC  β”‚                        β”‚ β”‚
β”‚  β”‚ β€’ Dashboard        β”‚      β”‚ β€’ Node Management      β”‚ β”‚
β”‚  β”‚ β€’ Upload/Download  β”‚      β”‚ β€’ File Operations      β”‚ β”‚
β”‚  β”‚ β€’ Marketplace      β”‚      β”‚ β€’ Folder Watching      β”‚ β”‚
β”‚  β”‚ β€’ Wallet/Deals     β”‚      β”‚ β€’ Peer Management      β”‚ β”‚
β”‚  β”‚ β€’ Media Download   β”‚      β”‚ β€’ Backup Daemon        β”‚ β”‚
β”‚  β”‚ β€’ Media Player     β”‚      β”‚ β€’ Media Download       β”‚ β”‚
β”‚  β”‚ β€’ Web Archive      β”‚      β”‚ β€’ Torrent Engine       β”‚ β”‚
β”‚  β”‚ β€’ Torrents         β”‚      β”‚ β€’ Web Archiver         β”‚ β”‚
β”‚  β”‚ β€’ Chat (P2P + IRC) β”‚      β”‚ β€’ Chat (E2E Encrypted) β”‚ β”‚
β”‚  β”‚ β€’ Devices          β”‚      β”‚ β€’ Wallet & Marketplace β”‚ β”‚
β”‚  β”‚ β€’ Settings/Logs    β”‚      β”‚ β€’ Configuration        β”‚ β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜      β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β”‚                                          β”‚              β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                           β”‚
                                  HTTP (localhost:8080)
                                           β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚           archivist-node Sidecar (Separate Process)     β”‚
β”‚                                                          β”‚
β”‚  β€’ REST API (port 8080)                                 β”‚
β”‚  β€’ File Storage & CID Management                        β”‚
β”‚  β€’ P2P Network (libp2p)                                 β”‚
β”‚  β€’ Discovery (DHT/mDNS, UDP port 8090)                  β”‚
β”‚  β€’ Listen (TCP port 8070)                               β”‚
β”‚  β€’ Peer Connections                                     β”‚
β”‚  β€’ Data Replication                                     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                           β”‚
                                   P2P (encrypted)
                                           β”‚
                              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                              β”‚   External Peers        β”‚
                              β”‚   (libp2p network)      β”‚
                              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

How It Works

  1. User Interface: React frontend provides the UI (Dashboard, Upload/Download, Marketplace, Wallet/Deals, Media Download, Media Player, Web Archive, Torrents, Chat, Devices, Settings/Logs)
  2. Tauri Backend: Rust backend handles:
    • Starting/stopping the archivist-node sidecar process
    • Managing file system operations (uploads, downloads, folder watching)
    • Proxying requests to the node's REST API
    • Persisting application configuration
    • Running the backup daemon for continuous sync
    • Media downloads and streaming via yt-dlp/ffmpeg
    • Torrent management (magnet links, .torrent files)
    • Web archiving and archive viewing (including Discourse forums)
    • Wallet and marketplace interactions
    • P2P encrypted chat with E2E encryption and group sessions
  3. Archivist Node: Standalone sidecar process that:
    • Exposes REST API on localhost:8080
    • Manages content-addressed storage (CIDs)
    • Handles P2P networking via libp2p
    • Discovers peers via DHT/mDNS on UDP port 8090
    • Accepts peer connections on TCP port 8070
    • Replicates data across the network
  4. P2P Network: Encrypted libp2p connections between peers for file transfer and discovery

Development

Prerequisites

  • Node.js 20+
  • pnpm v10+
  • Rust 1.77.2+ stable
  • Platform-specific build dependencies (see below)

System Dependencies

Tauri requires platform-specific system libraries. Install them before running pnpm setup:

Linux (Fedora/RHEL)

sudo dnf install gcc gcc-c++ gtk3-devel webkit2gtk4.1-devel glib2-devel \
  libappindicator-gtk3-devel librsvg2-devel pango-devel openssl-devel

Linux (Debian/Ubuntu)

sudo apt install build-essential libgtk-3-dev libwebkit2gtk-4.1-dev \
  libayatana-appindicator3-dev librsvg2-dev libssl-dev

macOS

xcode-select --install

Windows

  • Install Visual Studio Build Tools with "Desktop development with C++" workload
  • WebView2 is included with Windows 10 (version 1803+) and Windows 11

For the full list of Tauri system dependencies, see the Tauri Prerequisites docs.

Setup

# Quick setup (install deps + download sidecar binary)
pnpm setup

# Or step by step:
pnpm install
pnpm download-sidecar  # Downloads archivist-node for your platform

# Run in development mode
pnpm tauri dev

# Build for production
pnpm tauri build

Cross-Platform Builds

The sidecar binary must match your target platform. To download for cross-compilation:

# macOS
bash scripts/download-sidecar.sh x86_64-apple-darwin      # Intel
bash scripts/download-sidecar.sh aarch64-apple-darwin     # Apple Silicon

# Linux
bash scripts/download-sidecar.sh x86_64-unknown-linux-gnu   # x64
bash scripts/download-sidecar.sh aarch64-unknown-linux-gnu  # ARM64

# Windows
bash scripts/download-sidecar.sh x86_64-pc-windows-msvc

Note: Release builds now compile archivist-node from source (main branch) rather than downloading pre-built binaries. See .github/workflows/release.yml for details.

Project Structure

archivist-desktop/
β”œβ”€β”€ src/                          # React frontend
β”‚   β”œβ”€β”€ components/               # Reusable UI components
β”‚   β”‚   β”œβ”€β”€ ErrorState.tsx       # Error display component
β”‚   β”‚   β”œβ”€β”€ InfoTooltip.tsx      # Hover tooltip with "?" icon
β”‚   β”‚   β”œβ”€β”€ IntroModal.tsx       # Intro modal overlay
β”‚   β”‚   β”œβ”€β”€ IrcChat.tsx          # IRC chat widget (embedded in Dashboard)
β”‚   β”‚   β”œβ”€β”€ NavAccordion.tsx     # Collapsible navigation sections
β”‚   β”‚   β”œβ”€β”€ NextSteps.tsx        # Post-onboarding guidance
β”‚   β”‚   β”œβ”€β”€ SafetyNumber.tsx     # Safety number verification display
β”‚   β”‚   └── SensitiveField.tsx   # Show/hide toggle for sensitive data
β”‚   β”œβ”€β”€ contexts/                 # React Context providers
β”‚   β”‚   └── ChatContext.tsx      # Global chat state management
β”‚   β”œβ”€β”€ hooks/                    # Custom React hooks
β”‚   β”‚   β”œβ”€β”€ useNode.ts           # Node lifecycle (start/stop/status)
β”‚   β”‚   β”œβ”€β”€ useSync.ts           # Folder watching + sync queue
β”‚   β”‚   β”œβ”€β”€ usePeers.ts          # Peer connections
β”‚   β”‚   β”œβ”€β”€ useOnboarding.ts     # First-run onboarding state
β”‚   β”‚   β”œβ”€β”€ useSoundNotifications.ts  # Audio feedback
β”‚   β”‚   β”œβ”€β”€ useFeatures.ts       # Feature flag detection
β”‚   β”‚   β”œβ”€β”€ useMediaDownload.ts  # yt-dlp download queue + progress
β”‚   β”‚   β”œβ”€β”€ useMediaStreaming.ts  # Media streaming server control
β”‚   β”‚   β”œβ”€β”€ useTorrent.ts        # Torrent state management
β”‚   β”‚   β”œβ”€β”€ useWebArchive.ts     # Web archive crawl + viewer
β”‚   β”‚   β”œβ”€β”€ useWallet.ts         # Ethereum wallet operations
β”‚   β”‚   β”œβ”€β”€ useMarketplace.ts    # Storage marketplace state
β”‚   β”‚   β”œβ”€β”€ useChat.ts           # P2P chat sessions + messages
β”‚   β”‚   β”œβ”€β”€ useIrc.ts            # IRC connection + messaging
β”‚   β”‚   β”œβ”€β”€ useIntroModal.ts     # Intro modal display state
β”‚   β”‚   └── useBackgroundMusic.ts # Background audio playback
β”‚   β”œβ”€β”€ pages/                    # Route components
β”‚   β”‚   β”œβ”€β”€ Dashboard.tsx        # Main status overview + IRC chat
β”‚   β”‚   β”œβ”€β”€ Onboarding.tsx       # First-run wizard
β”‚   β”‚   β”œβ”€β”€ Files.tsx            # Upload/download/restore files
β”‚   β”‚   β”œβ”€β”€ Sync.tsx             # Watched folder management
β”‚   β”‚   β”œβ”€β”€ Devices.tsx          # Device management
β”‚   β”‚   β”œβ”€β”€ AddDevice.tsx        # Device pairing wizard
β”‚   β”‚   β”œβ”€β”€ Peers.tsx            # P2P network view
β”‚   β”‚   β”œβ”€β”€ BackupServer.tsx     # Backup daemon dashboard
β”‚   β”‚   β”œβ”€β”€ MediaDownload.tsx    # yt-dlp media download UI
β”‚   β”‚   β”œβ”€β”€ MediaPlayer.tsx      # Built-in video player with playlist
β”‚   β”‚   β”œβ”€β”€ Torrents.tsx         # Torrent management UI
β”‚   β”‚   β”œβ”€β”€ WebArchive.tsx       # Website archiver and viewer
β”‚   β”‚   β”œβ”€β”€ Chat.tsx             # P2P encrypted chat (not yet routed)
β”‚   β”‚   β”œβ”€β”€ Marketplace.tsx      # Storage marketplace browser
β”‚   β”‚   β”œβ”€β”€ Deals.tsx            # Purchases and provider slots
β”‚   β”‚   β”œβ”€β”€ Wallet.tsx           # Ethereum wallet UI
β”‚   β”‚   β”œβ”€β”€ Logs.tsx             # Node logs viewer
β”‚   β”‚   └── Settings.tsx         # App configuration
β”‚   β”œβ”€β”€ lib/                      # Utilities and types
β”‚   β”‚   β”œβ”€β”€ api.ts               # Node API type definitions
β”‚   β”‚   β”œβ”€β”€ archiveTypes.ts      # Web archive type definitions
β”‚   β”‚   β”œβ”€β”€ chatTypes.ts         # Chat protocol type definitions
β”‚   β”‚   β”œβ”€β”€ cidValidation.ts     # CID format validation
β”‚   β”‚   β”œβ”€β”€ contracts.ts         # Marketplace contract ABIs
β”‚   β”‚   β”œβ”€β”€ features.ts          # Feature flag constants
β”‚   β”‚   β”œβ”€β”€ sanitizeFilename.ts  # Filename sanitization
β”‚   β”‚   └── tauri.ts             # Tauri invoke helpers
β”‚   β”œβ”€β”€ styles/                   # CSS files (terminal aesthetic)
β”‚   β”œβ”€β”€ test/                     # Frontend tests (Vitest)
β”‚   β”œβ”€β”€ App.tsx                   # Router + layout
β”‚   └── main.tsx                  # Entry point
β”‚
β”œβ”€β”€ src-tauri/                    # Rust backend
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ main.rs              # App entry (delegates to lib.rs)
β”‚   β”‚   β”œβ”€β”€ lib.rs               # Tauri setup, commands, tray
β”‚   β”‚   β”œβ”€β”€ error.rs             # ArchivistError enum
β”‚   β”‚   β”œβ”€β”€ state.rs             # AppState (service container)
β”‚   β”‚   β”œβ”€β”€ node_api.rs          # HTTP client for sidecar
β”‚   β”‚   β”œβ”€β”€ path_utils.rs        # Cross-platform path utilities
β”‚   β”‚   β”œβ”€β”€ crypto/              # End-to-end encryption
β”‚   β”‚   β”‚   β”œβ”€β”€ identity.rs      # Chat identity management
β”‚   β”‚   β”‚   β”œβ”€β”€ key_store.rs     # Cryptographic key storage
β”‚   β”‚   β”‚   β”œβ”€β”€ sessions.rs      # Double-ratchet sessions
β”‚   β”‚   β”‚   β”œβ”€β”€ group_sessions.rs # Group chat encryption
β”‚   β”‚   β”‚   └── safety_numbers.rs # Safety number generation
β”‚   β”‚   β”œβ”€β”€ commands/            # Tauri command handlers
β”‚   β”‚   β”‚   β”œβ”€β”€ node.rs          # start/stop/restart/status/logs
β”‚   β”‚   β”‚   β”œβ”€β”€ files.rs         # upload/download/list/delete
β”‚   β”‚   β”‚   β”œβ”€β”€ sync.rs          # watch folders, sync queue, manifests
β”‚   β”‚   β”‚   β”œβ”€β”€ peers.rs         # connect/disconnect/list
β”‚   β”‚   β”‚   β”œβ”€β”€ system.rs        # config, platform info
β”‚   β”‚   β”‚   β”œβ”€β”€ media.rs         # yt-dlp download commands
β”‚   β”‚   β”‚   β”œβ”€β”€ streaming.rs     # media streaming server
β”‚   β”‚   β”‚   β”œβ”€β”€ archive.rs       # web archive commands
β”‚   β”‚   β”‚   β”œβ”€β”€ torrent.rs       # torrent management
β”‚   β”‚   β”‚   β”œβ”€β”€ marketplace.rs   # marketplace commands
β”‚   β”‚   β”‚   β”œβ”€β”€ wallet.rs        # wallet commands
β”‚   β”‚   β”‚   β”œβ”€β”€ chat.rs          # P2P chat commands
β”‚   β”‚   β”‚   └── irc.rs           # IRC connection commands
β”‚   β”‚   └── services/            # Business logic
β”‚   β”‚       β”œβ”€β”€ node.rs          # Sidecar process management
β”‚   β”‚       β”œβ”€β”€ sync.rs          # File watching (notify crate)
β”‚   β”‚       β”œβ”€β”€ config.rs        # Settings persistence
β”‚   β”‚       β”œβ”€β”€ backup_daemon.rs # Backup daemon (polls source peers)
β”‚   β”‚       β”œβ”€β”€ manifest_server.rs # HTTP manifest discovery server
β”‚   β”‚       β”œβ”€β”€ binary_manager.rs  # yt-dlp/ffmpeg binary management
β”‚   β”‚       β”œβ”€β”€ media_download.rs  # Media download queue + progress
β”‚   β”‚       β”œβ”€β”€ media_streaming.rs # HTTP media streaming server
β”‚   β”‚       β”œβ”€β”€ web_archive.rs     # Website crawler and archiver
β”‚   β”‚       β”œβ”€β”€ archive_viewer.rs  # Archive content viewer
β”‚   β”‚       β”œβ”€β”€ discourse_scraper.rs    # Discourse forum scraper
β”‚   β”‚       β”œβ”€β”€ discourse_site_builder.rs # Static site generator for forums
β”‚   β”‚       β”œβ”€β”€ torrent.rs         # Torrent engine
β”‚   β”‚       β”œβ”€β”€ marketplace.rs     # Storage marketplace logic
β”‚   β”‚       β”œβ”€β”€ wallet.rs          # Ethereum wallet management
β”‚   β”‚       β”œβ”€β”€ chat_service.rs    # Chat message + conversation logic
β”‚   β”‚       β”œβ”€β”€ chat_server.rs     # WebSocket/TLS chat server
β”‚   β”‚       β”œβ”€β”€ chat_message_store.rs  # Chat message persistence
β”‚   β”‚       β”œβ”€β”€ chat_delivery_queue.rs # Message delivery retry
β”‚   β”‚       β”œβ”€β”€ chat_tls.rs        # TLS certificate management
β”‚   β”‚       β”œβ”€β”€ chat_tofu.rs       # Trust-On-First-Use verification
β”‚   β”‚       └── chat_types.rs      # Chat protocol types
β”‚   β”œβ”€β”€ resources/               # Bundled assets (video files)
β”‚   β”œβ”€β”€ sidecars/                # archivist-node binaries (gitignored)
β”‚   β”œβ”€β”€ Cargo.toml               # Rust dependencies
β”‚   └── tauri.conf.json          # Tauri configuration
β”‚
β”œβ”€β”€ e2e/                          # End-to-end tests (WebdriverIO)
β”‚   β”œβ”€β”€ tests/                   # E2E test specs
β”‚   └── helpers.ts               # Test utilities
β”‚
β”œβ”€β”€ public/                       # Static assets
β”‚   └── logos/                   # Branding assets
β”‚
β”œβ”€β”€ scripts/
β”‚   └── download-sidecar.sh      # Downloads archivist-node binary
β”‚
β”œβ”€β”€ .github/workflows/
β”‚   β”œβ”€β”€ ci.yml                   # Tests, lint, build checks
β”‚   └── release.yml              # Multi-platform release (builds archivist-node from source)
β”‚
└── package.json                 # npm scripts + dependencies

Configuration

Config File Locations

  • Linux: ~/.config/archivist/config.toml
  • macOS: ~/Library/Application Support/archivist/config.toml
  • Windows: %APPDATA%\archivist\config.toml

Node Configuration

Setting Default Description
data_dir Platform-specific Node data directory
api_port 8080 REST API port
discovery_port 8090 UDP port for DHT/mDNS peer discovery
listen_port 8070 TCP port for P2P connections
max_storage_bytes 10 GB Storage quota
auto_start false Start node on app launch
auto_restart true Restart on failure

Note: Configuration changes require a node restart to take effect.

Backup Server Configuration

Setting Default Description
enabled false Enable backup daemon
poll_interval_secs 30 Check for new manifests every N seconds
max_concurrent_downloads 3 Parallel file downloads
max_retries 3 Retry failed downloads
auto_delete_tombstones true Process file deletions

Network Setup

The application uses multiple ports for P2P networking and backup functionality:

Port Protocol Purpose Required On
8070 TCP P2P connections and file transfers Both machines
8090 UDP Discovery via DHT/mDNS Both machines
8085 TCP Manifest server (backup source) Source machine only
8086 TCP Backup trigger endpoint Backup server only

Minimum required: Open ports 8070 (TCP) and 8090 (UDP) for basic P2P functionality.

For backup system: Also open 8085 on the source machine and 8086 on the backup server.

Linux (UFW)

# Required for P2P
sudo ufw allow 8070/tcp  # P2P connections
sudo ufw allow 8090/udp  # Discovery

# For backup source (Machine A)
sudo ufw allow 8085/tcp  # Manifest server

# For backup server (Machine B)
sudo ufw allow 8086/tcp  # Backup trigger

macOS

The firewall will prompt you to allow connections when the app first runs. Click "Allow" to enable P2P connectivity.

Windows (PowerShell as Administrator)

# Required for P2P
netsh advfirewall firewall add rule name="Archivist P2P" dir=in action=allow protocol=tcp localport=8070
netsh advfirewall firewall add rule name="Archivist Discovery" dir=in action=allow protocol=udp localport=8090

# For backup source (Machine A)
netsh advfirewall firewall add rule name="Archivist Manifest Server" dir=in action=allow protocol=tcp localport=8085

# For backup server (Machine B)
netsh advfirewall firewall add rule name="Archivist Backup Trigger" dir=in action=allow protocol=tcp localport=8086

If you change the ports in Settings, update your firewall rules accordingly.

Troubleshooting

Common Issues

Issue Solution
Port 8080 in use Change API port in Settings
Sidecar not found Run pnpm download-sidecar
0 addresses found Check firewall allows ports 8090 (UDP) and 8070 (TCP)
Peer connects then disconnects Check NAT timeout, try reconnecting with fresh SPR
"Check for Updates" shows error Expected for local builds β€” only works after a published GitHub release

Logs

Node logs are written to:

  • Linux: ~/.local/share/archivist/node.log
  • macOS: ~/Library/Application Support/archivist/node.log
  • Windows: %APPDATA%\archivist\node.log

Use the built-in Logs page for real-time viewing with auto-refresh.

Resources

Credits

Special thanks to our supporters:

papersand, savageyoda24, k123_tupolev, arnaud8803, vrycmyf, moudyellaz, 0xcryptonewbie, lorena96507, giuliano.mega, warfront1, cnanakos, thatben, Oxselo, emdee4570, diegomazro, pepedzekiphen, cskiraly, alisherrr, artsy_detective, johns9729, vpavlin, swahmedjavid, gilles356, netwave, putitarusa, mrorantox, ryangoree, 0xr1st4, deety_56657, hackyguru, morgan0x01, DZEKI, celestial_gul_85001, p1ge0nh8er, lajolly, Kali_Ali, marcin.czenko, corpetty, auhau, ashishkumarnaik, ladib777, wtsupmybro, egonatoura, killfacemd, pale_rider, oxchamel, .trevligt, bkomoves, robogod_42, 0xguylouis, ayoonchain_, iamAy0, sohag_sarkar, mghazwi, magnusss5276, danisharora099, neoanonymous, buray58, godlikexi, Everest, fergulati, rahullenkala, qnou, alexanderm3666, nipsysdev, shelb2830, Timothy, sdf37, alvatarmakes, iamtrev0r, samuel.ing, patrizzz, izikdepth, j_0986, awmacp, a.im, flexsurfer, Oxenosis, kali023236, toored38, .lanski, 0x01, arseniy.eth, crypto_marina, volodymyr4303, johnny.ha, akhilmanga

License

MIT


This software is provided for evaluation and testing purposes as part of the pilot program. See the warning at the top of this document regarding data safety.

About

Cross-platform desktop client for Archivist decentralized storage - built with Tauri v2, React, and Rust

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors