pal-explorer-cli 0.4.5 → 0.4.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +63 -218
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
# Pal Explorer (`pe`)
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/pal-explorer-cli)
|
|
4
4
|
[](LICENSE)
|
|
@@ -8,87 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
Pal Explorer lets you share files directly with friends using P2P protocols. Files are encrypted before leaving your device, transferred via WebTorrent, and only decryptable by intended recipients.
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
### File Sharing
|
|
14
|
-
- Share files, folders, or entire drives via WebTorrent
|
|
15
|
-
- Private shares with per-recipient E2EE (XChaCha20-Poly1305)
|
|
16
|
-
- Public shares with global magnet links
|
|
17
|
-
- Non-recursive folder sharing (top-level only)
|
|
18
|
-
- Web share links with expiry and download limits
|
|
19
|
-
- Share invites sent automatically via discovery server inbox
|
|
20
|
-
|
|
21
|
-
### Groups
|
|
22
|
-
- Create named groups and organize pals
|
|
23
|
-
- Share with entire groups in one command (`--with-group`)
|
|
24
|
-
- Broadcast messages to all group members
|
|
25
|
-
- Pro limits on group count and member count
|
|
26
|
-
|
|
27
|
-
### Comments
|
|
28
|
-
- Per-share comment threads
|
|
29
|
-
- Add, list, and delete comments on any share
|
|
30
|
-
- Comments linked to author identity
|
|
31
|
-
|
|
32
|
-
### Sync
|
|
33
|
-
- Push/pull directory sync between pals
|
|
34
|
-
- SHA-256 manifest-based delta sync
|
|
35
|
-
- Watch mode for automatic sync on file changes
|
|
36
|
-
- Conflict detection with `.sync-conflict` copies
|
|
37
|
-
- Sync history tracking
|
|
38
|
-
|
|
39
|
-
### File Explorer
|
|
40
|
-
- Browse, search, and manage files with permission checks
|
|
41
|
-
- Directory tree visualization
|
|
42
|
-
- File info with share status
|
|
43
|
-
- Copy, move, rename, delete operations
|
|
44
|
-
- Audit log for all file operations
|
|
45
|
-
|
|
46
|
-
### Remote Browsing
|
|
47
|
-
- Browse pals' shares without downloading
|
|
48
|
-
- List files in remote shares
|
|
49
|
-
- Selective file download from remote shares
|
|
50
|
-
- Server signature verification
|
|
51
|
-
|
|
52
|
-
### Chat
|
|
53
|
-
- Real-time encrypted messaging between pals
|
|
54
|
-
- Chat history with conversation list
|
|
55
|
-
- Fetch new messages from the server
|
|
56
|
-
|
|
57
|
-
### Security
|
|
58
|
-
- **Ed25519 identities** with private keys stored in OS credential manager (keytar)
|
|
59
|
-
- **XChaCha20-Poly1305** authenticated encryption for all private shares
|
|
60
|
-
- **Per-recipient key wrapping** -- each recipient gets a uniquely encrypted share key
|
|
61
|
-
- **Key rotation on revocation** -- removing a recipient triggers re-encryption
|
|
62
|
-
- **BIP-39 recovery** -- 24-word mnemonic phrase for identity backup
|
|
63
|
-
- **Challenge-response registration** -- server never sees your private key
|
|
64
|
-
- **Signed server responses** -- clients verify discovery server authenticity
|
|
65
|
-
- **Encrypted messages** -- inbox payloads encrypted end-to-end
|
|
66
|
-
- **Metadata protection** -- opaque filenames and encrypted manifests in torrents
|
|
67
|
-
- **TOFU server key pinning** -- federated servers pinned on first contact
|
|
68
|
-
- **Config integrity** -- HMAC-SHA256 signing for critical config sections
|
|
69
|
-
- **PIN lock** -- protect the GUI with a PIN code
|
|
70
|
-
|
|
71
|
-
### Pro Features
|
|
72
|
-
- Multi-user profiles with role-based access (owner, admin, member)
|
|
73
|
-
- Encrypted backup and restore
|
|
74
|
-
- API keys for programmatic access
|
|
75
|
-
- Web share links
|
|
76
|
-
- Scheduled tasks (shares, downloads, auto-revokes)
|
|
77
|
-
- Extended inbox and transfer analytics
|
|
78
|
-
- Ad-free experience
|
|
79
|
-
|
|
80
|
-
### Multi-User
|
|
81
|
-
- Multiple identity profiles on one device
|
|
82
|
-
- Owner/admin/member role hierarchy
|
|
83
|
-
- Login switching between profiles
|
|
84
|
-
- Profile promotion and demotion
|
|
85
|
-
|
|
86
|
-
### Discovery & Presence
|
|
87
|
-
- LAN peer discovery via mDNS (Bonjour)
|
|
88
|
-
- Federated handle system (`alice@server.com`)
|
|
89
|
-
- DHT-based decentralized fallback
|
|
90
|
-
- Online/offline presence status for pals
|
|
91
|
-
- Multi-device support with per-device registration
|
|
11
|
+
**All features free during beta.** Download at [palexplorer.com](https://palexplorer.com).
|
|
92
12
|
|
|
93
13
|
## Quick Start
|
|
94
14
|
|
|
@@ -96,7 +16,6 @@ Pal Explorer lets you share files directly with friends using P2P protocols. Fil
|
|
|
96
16
|
# Install CLI globally
|
|
97
17
|
npm install -g pal-explorer-cli
|
|
98
18
|
|
|
99
|
-
|
|
100
19
|
# Create your identity
|
|
101
20
|
pe init "YourName"
|
|
102
21
|
# Save the 24-word recovery phrase!
|
|
@@ -120,9 +39,49 @@ pe pal add pal://eyJ... # Add by invite link
|
|
|
120
39
|
pe nearby --add # Auto-discover on LAN
|
|
121
40
|
```
|
|
122
41
|
|
|
123
|
-
##
|
|
42
|
+
## Features
|
|
124
43
|
|
|
125
|
-
|
|
44
|
+
### File Sharing
|
|
45
|
+
- Share files, folders, or entire drives via WebTorrent
|
|
46
|
+
- Private shares with per-recipient E2EE (XChaCha20-Poly1305)
|
|
47
|
+
- Public shares with global magnet links
|
|
48
|
+
- Web share links with expiry and download limits
|
|
49
|
+
|
|
50
|
+
### Sync
|
|
51
|
+
- Push/pull directory sync between pals
|
|
52
|
+
- SHA-256 manifest-based delta sync
|
|
53
|
+
- Watch mode for automatic sync on file changes
|
|
54
|
+
- Conflict detection
|
|
55
|
+
|
|
56
|
+
### Chat
|
|
57
|
+
- Real-time encrypted messaging between pals
|
|
58
|
+
- Chat history with conversation list
|
|
59
|
+
|
|
60
|
+
### Groups
|
|
61
|
+
- Create named groups and organize pals
|
|
62
|
+
- Share with entire groups in one command (`--with-group`)
|
|
63
|
+
- Broadcast messages to all group members
|
|
64
|
+
|
|
65
|
+
### Discovery & Presence
|
|
66
|
+
- LAN peer discovery via mDNS
|
|
67
|
+
- Federated handle system (`@alice@server.com`)
|
|
68
|
+
- DHT-based decentralized fallback
|
|
69
|
+
- Online/offline presence status
|
|
70
|
+
|
|
71
|
+
### Security
|
|
72
|
+
- **Ed25519 identities** with private keys stored in OS credential manager
|
|
73
|
+
- **XChaCha20-Poly1305** authenticated encryption for all private shares
|
|
74
|
+
- **Per-recipient key wrapping** -- each recipient gets a uniquely encrypted share key
|
|
75
|
+
- **Key rotation on revocation** -- removing a recipient triggers re-encryption
|
|
76
|
+
- **BIP-39 recovery** -- 24-word mnemonic phrase for identity backup
|
|
77
|
+
- **Zero-knowledge server** -- discovery server never sees your private key or files
|
|
78
|
+
- **Signed server responses** -- clients verify server authenticity
|
|
79
|
+
- **Encrypted inbox** -- message payloads encrypted end-to-end
|
|
80
|
+
- **PIN lock** -- protect the desktop app with a PIN code
|
|
81
|
+
|
|
82
|
+
## CLI
|
|
83
|
+
|
|
84
|
+
The `pe` CLI includes 100+ subcommands.
|
|
126
85
|
|
|
127
86
|
### Key Commands
|
|
128
87
|
|
|
@@ -135,6 +94,7 @@ pe download <magnet> # Download from magnet link
|
|
|
135
94
|
pe pal add @alice # Add a pal by handle
|
|
136
95
|
pe sync push ./project alice # Push sync to a pal
|
|
137
96
|
pe status # System health dashboard
|
|
97
|
+
pe ext list # List available extensions
|
|
138
98
|
```
|
|
139
99
|
|
|
140
100
|
### Global Flags
|
|
@@ -145,29 +105,26 @@ pe status # System health dashboard
|
|
|
145
105
|
| `--verbose` | Verbose logging |
|
|
146
106
|
| `--quiet` | Suppress non-essential output |
|
|
147
107
|
|
|
148
|
-
|
|
108
|
+
Run `pe --help` or `pe <command> --help` for full usage.
|
|
149
109
|
|
|
150
|
-
|
|
110
|
+
## Desktop App
|
|
151
111
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
npm run electron
|
|
156
|
-
```
|
|
112
|
+
Download the desktop app at [palexplorer.com/download](https://palexplorer.com/download).
|
|
113
|
+
|
|
114
|
+
Features: setup wizard, dark/light themes, system tray, drag-and-drop sharing, P2P chat, PIN lock, media streaming, extensions, file explorer, command palette (Ctrl+K), and workspaces.
|
|
157
115
|
|
|
158
|
-
|
|
116
|
+
## Extensions
|
|
159
117
|
|
|
160
|
-
|
|
118
|
+
14 built-in extensions including virtual drive (WebDAV), folder sync, chat, groups, discovery, OAuth login, email notifications, and more. All free during beta.
|
|
161
119
|
|
|
162
|
-
|
|
120
|
+
Browse extensions at [palexplorer.com/extensions](https://palexplorer.com/extensions).
|
|
163
121
|
|
|
164
122
|
```bash
|
|
165
|
-
pe
|
|
166
|
-
pe
|
|
123
|
+
pe ext list # List all extensions
|
|
124
|
+
pe ext enable @palexplorer/vfs # Enable an extension
|
|
125
|
+
pe ext config @palexplorer/vfs port 1900 # Configure
|
|
167
126
|
```
|
|
168
127
|
|
|
169
|
-
REST API + WebSocket for real-time transfer monitoring, chat, and Pro/billing management.
|
|
170
|
-
|
|
171
128
|
## Configuration
|
|
172
129
|
|
|
173
130
|
| Key | Default | Description |
|
|
@@ -176,129 +133,17 @@ REST API + WebSocket for real-time transfer monitoring, chat, and Pro/billing ma
|
|
|
176
133
|
| `storage_path` | `./downloads` | Default download directory |
|
|
177
134
|
| `max_connections` | `50` | Max P2P connections |
|
|
178
135
|
| `bandwidth_cap` | `0` | Upload cap in KB/s (0 = unlimited) |
|
|
179
|
-
| `discovery_servers` | `https://discovery-1.palexplorer.com, https://discovery-2.palexplorer.com` | Discovery server URLs (comma-separated) |
|
|
180
|
-
| `announce_interval` | -- | DHT announce interval in seconds |
|
|
181
|
-
|
|
182
|
-
Config file location: `~/.config/palexplorer-cli/config.json`
|
|
183
|
-
|
|
184
|
-
Override the discovery server URL with the `PAL_DISCOVERY_URL` environment variable.
|
|
185
136
|
|
|
186
|
-
|
|
137
|
+
Config file: `~/.config/palexplorer-cli/config.json`
|
|
187
138
|
|
|
188
|
-
|
|
189
|
-
|:---|:---:|:---:|
|
|
190
|
-
| File sharing, E2EE, chat | Yes | Yes |
|
|
191
|
-
| Groups (max 3, 5 members each) | Yes | Unlimited |
|
|
192
|
-
| Comments (max 10 per share) | Yes | Unlimited |
|
|
193
|
-
| Share recipients (max 5) | Yes | Unlimited |
|
|
194
|
-
| Ad-free experience | No | Yes |
|
|
195
|
-
| Multi-user profiles | No | Yes |
|
|
196
|
-
| Vanity handles | No | Yes |
|
|
197
|
-
| Extended inbox (1000 msgs) | No | Yes |
|
|
198
|
-
| Transfer analytics | No | Yes |
|
|
199
|
-
| Encrypted backup/restore | No | Yes |
|
|
200
|
-
| API keys | No | Yes |
|
|
201
|
-
| Scheduled tasks | No | Yes |
|
|
202
|
-
|
|
203
|
-
**Pricing:** Pro $2.99/mo | Pro Annual $29.99/yr | Enterprise $9.99/seat/mo
|
|
204
|
-
|
|
205
|
-
See [docs/MONETIZATION.md](docs/MONETIZATION.md) for full comparison, enforcement architecture, and details.
|
|
206
|
-
|
|
207
|
-
## Architecture
|
|
208
|
-
|
|
209
|
-
```
|
|
210
|
-
+------------------+ +------------------+ +--------------------+
|
|
211
|
-
| CLI (pe) | | Electron GUI | | Web Dashboard |
|
|
212
|
-
| bin/pal.js | | gui/ | | web/ |
|
|
213
|
-
+--------+---------+ +--------+---------+ +--------+-----------+
|
|
214
|
-
| | |
|
|
215
|
-
+------------------------+------------------------+
|
|
216
|
-
| Core Libraries |
|
|
217
|
-
| lib/core/ - identity, shares, groups, sync |
|
|
218
|
-
| lib/crypto/ - E2EE, key exchange |
|
|
219
|
-
| lib/utils/ - config, logging |
|
|
220
|
-
+-------------------------+-----------------------+
|
|
221
|
-
|
|
|
222
|
-
+--------------+--------------+
|
|
223
|
-
| Discovery Server |
|
|
224
|
-
| palexplorer-server (repo) |
|
|
225
|
-
| LevelDB + Express |
|
|
226
|
-
| OAuth + Lemon Squeezy billing |
|
|
227
|
-
+------------------------------+
|
|
228
|
-
```
|
|
139
|
+
## Links
|
|
229
140
|
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
**Discovery Server** -- Separate repo: [palexplorer-server](../palexplorer-server). Identity resolution, message relay, OAuth, Lemon Squeezy billing, self-update server. Self-hostable via Docker.
|
|
237
|
-
|
|
238
|
-
**PAL/1.0 Protocol** -- Proprietary control protocol on top of BitTorrent/DHT/mDNS. 27 message types, policy engine, smart routing.
|
|
239
|
-
|
|
240
|
-
## Ecosystem
|
|
241
|
-
|
|
242
|
-
| Project | Description |
|
|
243
|
-
|:---|:---|
|
|
244
|
-
| [palexplorer](.) | Desktop app (Electron + React + CLI) |
|
|
245
|
-
| [palexplorer-server](../palexplorer-server) | Discovery server (Express 5 + LevelDB) |
|
|
246
|
-
| [palexplorer-www](../palexplorer-www) | Web dashboard (React + Express) |
|
|
247
|
-
| [palexplorer-mobile](../palexplorer-mobile) | Mobile app (React Native) |
|
|
248
|
-
| [palexplorer-sdk](../palexplorer-sdk) | JavaScript SDK for integrations |
|
|
249
|
-
|
|
250
|
-
## Repo Review
|
|
251
|
-
|
|
252
|
-
A focused architecture and product review was added on 2026-03-23.
|
|
253
|
-
|
|
254
|
-
Executive summary:
|
|
255
|
-
- `palexplorer` is the core desktop product, not just a thin client.
|
|
256
|
-
- Do not rename `palexplorer` to `palexplorer-client`.
|
|
257
|
-
- Keep `palexplorer-mobile` as a separate app, but treat it as a companion surface with shared core packages.
|
|
258
|
-
- Highest-priority fixes are packaged CLI installation, cross-platform packaging parity, startup page loading order, and stale GUI audit documentation.
|
|
259
|
-
|
|
260
|
-
See:
|
|
261
|
-
- [docs/REPO-REVIEW-2026-03-23.md](docs/REPO-REVIEW-2026-03-23.md)
|
|
262
|
-
- [docs/REPO-REVIEW-ACTION-PLAN-2026-03-23.md](docs/REPO-REVIEW-ACTION-PLAN-2026-03-23.md)
|
|
263
|
-
|
|
264
|
-
## Development
|
|
265
|
-
|
|
266
|
-
```bash
|
|
267
|
-
cd palexplorer
|
|
268
|
-
npm install
|
|
269
|
-
npm link
|
|
270
|
-
|
|
271
|
-
# Run tests
|
|
272
|
-
npm test
|
|
273
|
-
|
|
274
|
-
# Start the discovery server (separate repo)
|
|
275
|
-
cd ../palexplorer-server
|
|
276
|
-
npm install
|
|
277
|
-
npm start
|
|
278
|
-
```
|
|
279
|
-
|
|
280
|
-
### Project Structure
|
|
281
|
-
|
|
282
|
-
```
|
|
283
|
-
bin/ CLI entry point
|
|
284
|
-
lib/commands/ One file per command group (63 files)
|
|
285
|
-
lib/core/ Core logic (identity, shares, groups, sync, transfers, users, backup, extensions, billing, vfs, streaming)
|
|
286
|
-
lib/crypto/ Encryption (stream cipher, share key wrapping)
|
|
287
|
-
lib/protocol/ PAL/1.0 protocol (envelope, messages, policy, router, negotiation, sync, handler)
|
|
288
|
-
lib/utils/ Config, logging, config integrity
|
|
289
|
-
gui/ Electron desktop app (React + Vite)
|
|
290
|
-
web/ Web dashboard (HTML/JS)
|
|
291
|
-
extensions/ Bundled extensions (@palexplorer/vfs, explorer-integration, transfer-analytics, media-streaming)
|
|
292
|
-
test/ Test suite (node:test, incl. stress tests)
|
|
293
|
-
scripts/ Build and publish scripts
|
|
294
|
-
docs/ Documentation
|
|
295
|
-
```
|
|
296
|
-
|
|
297
|
-
## Security
|
|
298
|
-
|
|
299
|
-
For full details, see [SECURITY.md](docs/SECURITY.md).
|
|
141
|
+
- [Website](https://palexplorer.com)
|
|
142
|
+
- [Download](https://palexplorer.com/download)
|
|
143
|
+
- [Extensions](https://palexplorer.com/extensions)
|
|
144
|
+
- [Marketplace](https://palexplorer.com/marketplace)
|
|
145
|
+
- [Discord](https://discord.gg/VrCcGmNJ8Q)
|
|
300
146
|
|
|
301
147
|
## License
|
|
302
148
|
|
|
303
149
|
Proprietary. All rights reserved. See [LICENSE.md](LICENSE.md).
|
|
304
|
-
|