pal-explorer-cli
v0.4.71
Published
P2P encrypted file sharing CLI — share files directly with friends, not with the cloud
Maintainers
Readme
Pal Explorer (pal)
Peer-to-peer encrypted file sharing. No cloud. No middleman. Pure P2P.
Palexplorer lets you share files directly with friends using P2P protocols. Files are encrypted before leaving your device, transferred via BitTorrent/WebTorrent, and only decryptable by intended recipients. The core is 100% anonymous and server-free — discovery, handles, and billing are optional extensions.
All features free during beta. Download at palexplorer.com.
Quick Start
# Install CLI globally
npm install -g pal-explorer-cli
# Create your identity (opens setup wizard in GUI, or use CLI)
pal init "YourName"
# Save the 24-word recovery phrase!
# Share a folder with a friend
pal share ~/Documents --visibility private --with @alice
# Start seeding
pal serve
# Download from a magnet link
pal download "magnet:?xt=urn:btih:..."Adding Friends
pal invite --qr # Generate invite link + QR code
pal add @alice # Add by @handle
pal add pal://eyJ... # Add by invite link
pal nearby --add # Auto-discover on LANArchitecture
┌─────────────────────────────────────────────────────┐
│ CORE (pure P2P) │
│ │
│ BitTorrent / WebTorrent / DHT / mDNS / WebRTC │
│ Ed25519 identity · XChaCha20-Poly1305 encryption │
│ PAL/1.2 protocol · TCP signaling · BEP44 DHT │
│ │
│ 100% anonymous · no servers required · offline-ok │
└─────────────────────────────────────────────────────┘
│ optional extensions register transports
▼
┌─────────────────────────────────────────────────────┐
│ EXTENSIONS (optional features) │
│ │
│ discovery @handle resolution, server registry │
│ auth-oauth Google / GitHub login │
│ auth-email Email OTP verification │
│ vfs Virtual filesystem / WebDAV │
│ media-stream pal-stream:// protocol │
│ web-dashboard Local web UI (localhost only) │
│ analytics Opt-in PostHog usage metrics │
│ + 25 more Pro / Enterprise tier extensions │
└─────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────┐
│ DISCOVERY INFRASTRUCTURE (optional) │
│ │
│ A1 server — handle registration (Oracle ADB) │
│ discovery-1 / discovery-2 — handle resolution │
│ (LevelDB read cache, IP-only) │
│ │
│ Never sees your files, private keys, or traffic │
└─────────────────────────────────────────────────────┘Key principle: Core P2P works with zero servers. Discovery/handles/billing are extensions that enhance the experience — they are never required for file transfer.
Onboarding
The desktop app guides new users through a 4-path setup wizard:
| Path | Description | |:-----|:-----------| | Create @handle (Recommended) | Register a human-readable handle on the discovery network. Enables pal search, account recovery, cross-device sync. | | Continue without account | Fully anonymous local identity. No server contact. Share via direct link or LAN. | | Recover existing identity | Enter 24-word BIP-39 mnemonic to restore a previous identity. | | Guest login | Log in to an existing account using recovery credentials. |
Anonymous users can upgrade to a @handle anytime in Settings.
Features
File Sharing
- Share files, folders, or entire drives via BitTorrent/WebTorrent
- Private shares with per-recipient E2EE (XChaCha20-Poly1305)
- Public shares with global magnet links
- Web share links with expiry and download limits
- All transfers: pure BitTorrent — no HTTP transfer path
Sync
- Push/pull directory sync between pals
- SHA-256 manifest-based delta sync
- Watch mode for automatic sync on file changes
- Conflict detection
Chat
- Real-time encrypted messaging between pals
- Chat history with conversation list
- AI assistant powered by Ollama (local), Claude, OpenAI, or Gemini
Groups
- Create named groups and organize pals
- Share with entire groups (
--with-group) - Broadcast messages to all group members
Discovery & Presence
- LAN peer discovery via mDNS (zero configuration)
- @handle system — find pals by name (
@alice) - DHT-based decentralized peer discovery
- Federated handles (
[email protected]) - Online/offline presence status
Security
- Ed25519 identities — private key stored in OS credential manager, never transmitted
- XChaCha20-Poly1305 authenticated encryption for private shares
- Per-recipient key wrapping — each recipient gets a uniquely encrypted share key
- Key-based revocation — removing a recipient deletes their wrapped key copy; the file itself is not re-encrypted (use
pal shares rotateto re-encrypt if needed) - BIP-39 recovery — 24-word mnemonic for identity backup
- Zero-knowledge server — discovery server never sees your private key or files
- Signed server responses — clients verify server authenticity
- Encrypted inbox — message payloads E2EE
- PIN lock — protect the desktop app with a PIN code
- Pure P2P transfers — no HTTP file transfer path in core
CLI
The pal CLI includes 100+ subcommands.
Key Commands
pal init <name> # Create identity
pal register <handle> # Register on discovery network
pal share <path> -v private -w @bob # Share encrypted with a pal
pal serve # Start seeding
pal download <magnet> # Download from magnet link
pal add @alice # Add a pal by @handle
pal sync push ./project @alice # Push sync to a pal
pal status # System health dashboard
pal ext list # List available extensionsGlobal Flags
| Flag | Description |
|:---|:---|
| --json | Output as JSON |
| --verbose | Verbose logging |
| --quiet | Suppress non-essential output |
Run pal --help or pal <command> --help for full usage.
Desktop App
Download the desktop app at palexplorer.com/download.
Features: 4-path setup wizard, dark/light themes, system tray, drag-and-drop sharing, P2P chat with AI assistant, PIN lock, media streaming (pal-stream://), extensions panel, file explorer, command palette (Ctrl+K), workspaces, inbox, and identity management.
Extensions
32 official extensions in three tiers. 14 are bundled with the app (free). See palexplorer-extensions for the full catalog.
pal ext list # List all extensions
pal ext enable @palexplorer/vfs # Enable an extension
pal ext config @palexplorer/vfs port 1900 # ConfigureBundled Free Extensions
| Extension | Description |
|-----------|-------------|
| web-dashboard | Local web UI on localhost:7575 |
| discovery | @handle resolution and server registry |
| vfs | Virtual filesystem / WebDAV mount |
| auth-oauth | Google / GitHub OAuth login |
| auth-email | Email OTP verification |
| analytics | Opt-in usage metrics (PostHog) |
| email-notifications | Share event alerts |
| explorer-integration | OS file explorer context menus |
| media-streaming | pal-stream:// protocol |
| transfer-analytics | Per-transfer analytics |
| chat | P2P encrypted messaging |
| groups | Group management and broadcast |
| sync | Directory sync |
| backup-cloud | Encrypted S3/GCS/Azure backup |
AI Features
Built-in AI support across all providers.
| Provider | Key required | Privacy | |:---------|:-------------|:--------| | Ollama (local) | No | Files never leave your device | | Claude (Anthropic) | Yes | Query text only | | OpenAI | Yes | Query text only | | Gemini (Google) | Yes | Query text only |
Quick setup (local/free):
# Install Ollama from https://ollama.com, then:
ollama pull llama3.2
pal ai config set --provider ollamaFeatures:
- Natural language CLI —
pal ai "share my documents with alice for 7 days" - AI chat assistant — "AI Assistant" in the GUI Chat page
- AI search — natural language file search (Bot icon in Search)
Configuration
| Key | Default | Description |
|:---|:---|:---|
| port | auto | Local seeder port |
| storage_path | ./downloads | Default download directory |
| max_connections | 50 | Max P2P connections |
| bandwidth_cap | 0 | Upload cap in KB/s (0 = unlimited) |
Config file: ~/.config/palexplorer-cli/config.json
Project Structure
bin/ CLI entry point (pal)
lib/
commands/ 63 command files, 100+ subcommands
core/ 33 modules: identity, shares, sync, discovery, permissions, extensions
crypto/ E2EE: XChaCha20-Poly1305, Ed25519, Argon2id, NaCl
protocol/ PAL/1.0 (envelope, router, negotiation, sync, policy)
utils/ Config, logger, torrent helpers
gui/ Electron main (main.cjs) + React/Vite renderer
src/
components/ React pages + components
store/ Zustand state
extensions/ Bundled extensions (@palexplorer/*)
web/ Local web dashboard (served on localhost:7575)
test/ 1800+ tests (node --test runner)
commands/ CLI handler tests
core/ Core module tests
crypto/ Encryption tests
gui/ GUI integration tests
e2e/ Playwright GUI simulation (Electron)
stress/ Stress & edge cases
docs/ Architecture, protocol, security, roadmap docsTesting
npm test # Full test suite (~1811 tests)
npm run test:e2e # Playwright E2E GUI testsBuild
node scripts/build.js # Build for current platform
npm run build:win # Windows NSIS installer
npm run build:mac # macOS DMG
npm run build:linux # Linux AppImage + debBuilds are published to OCI Object Storage and announced via palexplorer-server auto-update.
Infrastructure
| Server | IP | Role | |:-------|:---|:-----| | OCI A1 | 141.147.60.209 | Handle registration, build hosting, auto-update | | discovery-1 | 92.5.46.86 | Handle resolution (LevelDB cache) | | discovery-2 | 92.5.36.3 | Handle resolution (LevelDB cache) | | Oracle ADB | Frankfurt | Handle uniqueness authority (planned) |
Discovery servers are IP-only (no DNS). Clients configure them via settings.discovery_servers or PAL_DISCOVERY_URL env var.
Links
License
Proprietary. All rights reserved. See palexplorer.com/license.
