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.
- package/README.md +37 -7
- 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,
|
|
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@
|
|
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@
|
|
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
|
|
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
|
|
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,
|
|
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
|
|
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`.
|