peerline 0.1.0-beta.4 → 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 +37 -7
  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,6 +118,11 @@ 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
121
126
  peerline recv [NAME_OR_CODE] [CODE] --no-tor
122
127
  peerline recv [NAME_OR_CODE] [CODE] --idle-timeout-minutes 30
123
128
  peerline recv [NAME_OR_CODE] [CODE] --tunnel cloudflared
@@ -129,7 +134,7 @@ peerline recv [NAME_OR_CODE] [CODE] --tunnel tunnelmole
129
134
  `--port` starts the 5-port direct window; Peerline will try that port and the next four.
130
135
  `--idle-timeout-minutes` defaults to `10`; set it to `0` to wait until you quit manually.
131
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.
132
- `--tunnel` starts a public tunnel on the receiver side. `cloudflared`, `localtunnel`, `tmole`, and `tunnelmole` are accepted values.
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`.
133
138
 
134
139
  Sender options:
135
140
 
@@ -139,32 +144,57 @@ peerline send <name> <code> <path...> --compression none
139
144
  peerline send <name> <code> <path...> --compression zstd
140
145
  peerline send <name> <code> <path...> --compression lzma
141
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
142
155
  peerline send --name <name> --code <code> <path...>
143
156
  ```
144
157
 
145
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.
146
160
  In the send TUI, a failed attempt stays on screen and offers `r` to retry the same send or `q`/Esc to quit.
147
161
 
148
162
  Network environment variables:
149
163
 
150
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/...
151
170
  PEERLINE_RELAY_PEERS=/ip4/203.0.113.10/tcp/4001/p2p/...
152
171
  PEERLINE_DISABLE_RELAY_FALLBACK=1
172
+ PEERLINE_DISABLE_MDNS=1
153
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
154
181
  PEERLINE_BOOTSTRAP=/dnsaddr/bootstrap.libp2p.io/p2p/...
155
182
  PEERLINE_WEBRTC_ICE_SERVERS='[{"urls":["turn:turn.example.net:3478?transport=udp"],"username":"user","credential":"pass"}]'
156
183
  ```
157
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.
158
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.
159
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.
160
190
 
161
191
  ## Current Status
162
192
 
163
193
  - Direct IP send and receive works.
164
- - 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.
165
195
  - Files, multiple files, and folders are archived with safe relative paths, BLAKE3 integrity checks, and streaming zstd/lzma compression support.
166
196
  - Receivers stay open across multiple incoming transfers, with a configurable idle auto-exit.
167
- - 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.
168
198
  - The receive side includes a modern terminal UI for identity, route state, and transfer progress.
169
199
  - The workspace test suite and E2E coverage are in place.
170
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.4",
3
+ "version": "0.1.0-beta.6",
4
4
  "description": "P2P post-quantum encrypted file transfer CLI",
5
5
  "repository": {
6
6
  "type": "git",