peerline 0.1.0-beta.2 → 0.1.0-beta.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.
Files changed (2) hide show
  1. package/README.md +43 -6
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -23,7 +23,7 @@ Peerline has two roles:
23
23
 
24
24
  For named transfers, the receiver publishes a short-lived descriptor keyed by the shared name and code. The sender derives the same lookup key, discovers candidate routes, and tries them in order. Peerline prefers direct LAN or public TCP endpoints first, then libp2p routes such as DCUtR and WebRTC direct. When direct and hole-punched routes are unavailable, Peerline falls back to libp2p relay transport by default while keeping file contents protected by Peerline's end-to-end encryption.
25
25
 
26
- Peerline also probes HTTP rendezvous first, with a default endpoint at `https://peerline.pwp.sh`, then falls back to DHT and mDNS. Official builds use a private mTLS-protected rendezvous endpoint; set `PEERLINE_RENDEZVOUS_CLIENT_IDENTITY_PATH` or `PEERLINE_RENDEZVOUS_CLIENT_IDENTITY_PEM` to a PEM bundle with the client certificate and private key, or set `PEERLINE_RENDEZVOUS_URLS` / `PEERLINE_RENDEZVOUS_URL` to point at another compatible rendezvous service. Use `PEERLINE_RENDEZVOUS_TOKEN` only when the rendezvous service expects a shared secret.
26
+ Peerline also probes HTTP rendezvous first, then falls back to DHT and mDNS. The built-in official rendezvous endpoint follows the release channel: alpha builds use `https://alpha.rendezvous.peerline.pwp.sh`, beta builds use `https://beta.rendezvous.peerline.pwp.sh`, and stable builds use `https://rendezvous.peerline.pwp.sh`. Official endpoints are mTLS-protected; official release assets can embed the client identity, while source builds can set `PEERLINE_RENDEZVOUS_CLIENT_IDENTITY_PATH` or `PEERLINE_RENDEZVOUS_CLIENT_IDENTITY_PEM` to a PEM bundle with the client certificate and private key. Set `PEERLINE_RENDEZVOUS_URLS` / `PEERLINE_RENDEZVOUS_URL` to point at another compatible rendezvous service. Use `PEERLINE_RENDEZVOUS_TOKEN` only when the rendezvous service expects a shared secret.
27
27
 
28
28
  For direct transfers, the sender can skip discovery and dial an IP address or `host:port` directly. This is useful on the same network, over VPNs, or whenever the receiver already knows which address the sender should use. If you only provide an IP, Peerline probes the default direct window `43117-43121`.
29
29
 
@@ -36,13 +36,13 @@ The secure session combines the shared code with OPAQUE PAKE, X25519, ML-KEM, HK
36
36
  Use the npm package without installing it globally:
37
37
 
38
38
  ```sh
39
- npx peerline@alpha --help
39
+ npx peerline@beta --help
40
40
  ```
41
41
 
42
42
  Install it globally through npm:
43
43
 
44
44
  ```sh
45
- npm install -g peerline@alpha
45
+ npm install -g peerline@beta
46
46
  peerline --help
47
47
  ```
48
48
 
@@ -76,7 +76,7 @@ peerline recv
76
76
  name: frost-827
77
77
  code: fig-mint-rose-123456
78
78
  direct: 0.0.0.0:43117
79
- waiting for transfers over direct TCP or libp2p...
79
+ waiting for transfers over direct TCP, Tor onion, libp2p TCP, libp2p QUIC, DCUtR, WebRTC/TURN, relay fallback...
80
80
  idle timeout: 10 min (change with --idle-timeout-minutes)
81
81
  ```
82
82
 
@@ -118,11 +118,23 @@ peerline recv [NAME_OR_CODE] [CODE] --port 43117
118
118
  peerline recv [NAME_OR_CODE] [CODE] --overwrite
119
119
  peerline recv [NAME_OR_CODE] [CODE] --no-tui
120
120
  peerline recv [NAME_OR_CODE] [CODE] --no-relay-fallback
121
+ peerline recv [NAME_OR_CODE] [CODE] --no-upnp
122
+ peerline recv [NAME_OR_CODE] [CODE] --no-nat-pmp-pcp
123
+ peerline recv [NAME_OR_CODE] [CODE] --no-quic
124
+ peerline recv [NAME_OR_CODE] [CODE] --no-dcutr
125
+ peerline recv [NAME_OR_CODE] [CODE] --no-turn
126
+ peerline recv [NAME_OR_CODE] [CODE] --no-tor
121
127
  peerline recv [NAME_OR_CODE] [CODE] --idle-timeout-minutes 30
128
+ peerline recv [NAME_OR_CODE] [CODE] --tunnel cloudflared
129
+ peerline recv [NAME_OR_CODE] [CODE] --tunnel localtunnel
130
+ peerline recv [NAME_OR_CODE] [CODE] --tunnel tmole
131
+ peerline recv [NAME_OR_CODE] [CODE] --tunnel tunnelmole
122
132
  ```
123
133
 
124
134
  `--port` starts the 5-port direct window; Peerline will try that port and the next four.
125
135
  `--idle-timeout-minutes` defaults to `10`; set it to `0` to wait until you quit manually.
136
+ Tor onion receive is attempted by default when the `tor` command is available; use `--no-tor` or `PEERLINE_DISABLE_TOR=1` to skip it.
137
+ `--tunnel` starts a public tunnel on the receiver side. `cloudflared`, `localtunnel`, and `tmole` are the public values; `tunnelmole` is accepted as an alias for `tmole`.
126
138
 
127
139
  Sender options:
128
140
 
@@ -132,32 +144,57 @@ peerline send <name> <code> <path...> --compression none
132
144
  peerline send <name> <code> <path...> --compression zstd
133
145
  peerline send <name> <code> <path...> --compression lzma
134
146
  peerline send <name> <code> <path...> --no-relay-fallback
147
+ peerline send <name> <code> <path...> --no-upnp
148
+ peerline send <name> <code> <path...> --no-nat-pmp-pcp
149
+ peerline send <name> <code> <path...> --no-quic
150
+ peerline send <name> <code> <path...> --no-dcutr
151
+ peerline send <name> <code> <path...> --no-turn
152
+ peerline send <name> <code> <path...> --no-tor
153
+ peerline send <name> <code> <path...> --tor-socks-proxy 127.0.0.1:9050
154
+ peerline send <name> <code> <path...> --retry-attempts 5
135
155
  peerline send --name <name> --code <code> <path...>
136
156
  ```
137
157
 
138
158
  Relay fallback is enabled by default. Direct and hole-punched routes are attempted before relay fallback; pass `--no-relay-fallback` on both sides when you want to require a direct or hole-punched path.
159
+ Send retries default to `5` attempts before the send TUI asks whether to retry the whole send.
139
160
  In the send TUI, a failed attempt stays on screen and offers `r` to retry the same send or `q`/Esc to quit.
140
161
 
141
162
  Network environment variables:
142
163
 
143
164
  ```sh
165
+ PEERLINE_RENDEZVOUS_URLS=https://rendezvous.example.net
166
+ PEERLINE_RENDEZVOUS_TIMEOUT_MS=5000
167
+ PEERLINE_RENDEZVOUS_TTL_SECS=120
168
+ PEERLINE_RENDEZVOUS_KEEPALIVE_SECS=60
169
+ PEERLINE_LIBP2P_RENDEZVOUS_PEERS=/dnsaddr/rzv.example.net/p2p/...
144
170
  PEERLINE_RELAY_PEERS=/ip4/203.0.113.10/tcp/4001/p2p/...
145
171
  PEERLINE_DISABLE_RELAY_FALLBACK=1
172
+ PEERLINE_DISABLE_MDNS=1
146
173
  PEERLINE_DISABLE_UPNP=1
174
+ PEERLINE_DISABLE_NATPMP_PCP=1
175
+ PEERLINE_DISABLE_QUIC=1
176
+ PEERLINE_DISABLE_DCUTR=1
177
+ PEERLINE_DISABLE_TURN=1
178
+ PEERLINE_DISABLE_PUBLIC_TUNNELS=1
179
+ PEERLINE_DISABLE_TOR=1
180
+ PEERLINE_ALLOW_LOOPBACK_DISCOVERY=1
147
181
  PEERLINE_BOOTSTRAP=/dnsaddr/bootstrap.libp2p.io/p2p/...
148
182
  PEERLINE_WEBRTC_ICE_SERVERS='[{"urls":["turn:turn.example.net:3478?transport=udp"],"username":"user","credential":"pass"}]'
149
183
  ```
150
184
 
185
+ `PEERLINE_RENDEZVOUS_URLS` should contain comma-separated compatible HTTP rendezvous endpoints. The singular `PEERLINE_RENDEZVOUS_URL` is also supported.
186
+ `PEERLINE_LIBP2P_RENDEZVOUS_PEERS` should contain comma-separated libp2p Rendezvous point multiaddrs. This optional backend is disabled unless at least one rendezvous point is configured; discovered registrations are used as libp2p route candidates.
151
187
  `PEERLINE_RELAY_PEERS` should contain comma-separated libp2p relay-capable peer multiaddrs. If it is not set, Peerline tries the bootstrap peers as relay candidates. UPnP is enabled by default for home-router TCP and libp2p external address discovery; set `PEERLINE_DISABLE_UPNP=1` to turn it off.
152
188
  WebRTC direct transport ships with default Open Relay Project TURN candidates for `staticauth.openrelay.metered.ca` on ports `80` and `443`, including UDP, TCP, and TLS-style `turns` URLs. Peerline generates short-lived static-auth credentials for those defaults. Set `PEERLINE_WEBRTC_ICE_SERVERS` to a JSON array of WebRTC ICE server objects to replace the defaults; set it to an empty string to disable configured ICE servers entirely.
189
+ `PEERLINE_ALLOW_LOOPBACK_DISCOVERY=1` is mainly useful for local development and E2E tests where both peers run on the same machine.
153
190
 
154
191
  ## Current Status
155
192
 
156
193
  - Direct IP send and receive works.
157
- - Named discovery now uses HTTP rendezvous first, then Kademlia provider records, mDNS, UPnP-assisted direct endpoints, DCUtR, relay fallback, and libp2p-webrtc direct.
194
+ - Named discovery now uses HTTP rendezvous first, then Kademlia provider records, optional libp2p Rendezvous points, mDNS, UPnP/NAT-PMP/PCP-assisted direct endpoints, public tunnel and Tor onion descriptors, QUIC, DCUtR, WebRTC direct/TURN, and relay fallback.
158
195
  - Files, multiple files, and folders are archived with safe relative paths, BLAKE3 integrity checks, and streaming zstd/lzma compression support.
159
196
  - Receivers stay open across multiple incoming transfers, with a configurable idle auto-exit.
160
- - Conflicts default to non-overwrite behavior, with TUI-driven handling in the receiver flow.
197
+ - Conflicts default to non-overwrite suffixes, with `--overwrite` available when replacement is intended.
161
198
  - The receive side includes a modern terminal UI for identity, route state, and transfer progress.
162
199
  - The workspace test suite and E2E coverage are in place.
163
200
  - The repository also includes a private Cloudflare Worker rendezvous service in `services/peerline-rendezvous`.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "peerline",
3
- "version": "0.1.0-beta.2",
3
+ "version": "0.1.0-beta.6",
4
4
  "description": "P2P post-quantum encrypted file transfer CLI",
5
5
  "repository": {
6
6
  "type": "git",