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