peerline 0.1.0-beta.1 → 0.1.0-beta.2

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 +24 -11
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -21,7 +21,7 @@ Peerline has two roles:
21
21
  - Receiver: runs `peerline recv`, keeps listening for incoming transfers until you quit or the idle timeout expires, and prints a `name`, `code`, and direct endpoint.
22
22
  - Sender: runs `peerline send`, points at the receiver by name/code or IP/code, and provides the files or folders to send.
23
23
 
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 TURN. Relay data fallback is available only when explicitly enabled.
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
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.
27
27
 
@@ -74,7 +74,7 @@ The receiver prints values like:
74
74
  ```text
75
75
  peerline recv
76
76
  name: frost-827
77
- code: fig-mint-1234-5678
77
+ code: fig-mint-rose-123456
78
78
  direct: 0.0.0.0:43117
79
79
  waiting for transfers over direct TCP or libp2p...
80
80
  idle timeout: 10 min (change with --idle-timeout-minutes)
@@ -83,8 +83,8 @@ idle timeout: 10 min (change with --idle-timeout-minutes)
83
83
  Send a file, multiple files, or a folder by name and code:
84
84
 
85
85
  ```sh
86
- peerline send frost-827 fig-mint-1234-5678 ./file.txt
87
- peerline send frost-827 fig-mint-1234-5678 ./file.txt ./notes.md ./photos
86
+ peerline send frost-827 fig-mint-rose-123456 ./file.txt
87
+ peerline send frost-827 fig-mint-rose-123456 ./file.txt ./notes.md ./photos
88
88
  ```
89
89
 
90
90
  Receive with a saved name:
@@ -97,14 +97,14 @@ peerline recv
97
97
  After a name is saved, you can receive with only a fresh code:
98
98
 
99
99
  ```sh
100
- peerline recv fig-mint-1234-5678
100
+ peerline recv fig-mint-rose-123456
101
101
  ```
102
102
 
103
103
  Use a direct IP address when discovery is not needed:
104
104
 
105
105
  ```sh
106
- peerline send 192.168.1.23:43117 ./file.txt --code=fig-mint-1234-5678
107
- peerline send 192.168.1.23 ./folder --code=fig-mint-1234-5678
106
+ peerline send 192.168.1.23:43117 ./file.txt --code=fig-mint-rose-123456
107
+ peerline send 192.168.1.23 ./folder --code=fig-mint-rose-123456
108
108
  ```
109
109
 
110
110
  When the port is omitted, Peerline probes the default direct window `43117-43121`.
@@ -117,7 +117,7 @@ Receiver options:
117
117
  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
- peerline recv [NAME_OR_CODE] [CODE] --allow-relay-fallback
120
+ peerline recv [NAME_OR_CODE] [CODE] --no-relay-fallback
121
121
  peerline recv [NAME_OR_CODE] [CODE] --idle-timeout-minutes 30
122
122
  ```
123
123
 
@@ -131,17 +131,30 @@ peerline send <name> <code> <path...> --compression auto
131
131
  peerline send <name> <code> <path...> --compression none
132
132
  peerline send <name> <code> <path...> --compression zstd
133
133
  peerline send <name> <code> <path...> --compression lzma
134
- peerline send <name> <code> <path...> --allow-relay-fallback
134
+ peerline send <name> <code> <path...> --no-relay-fallback
135
135
  peerline send --name <name> --code <code> <path...>
136
136
  ```
137
137
 
138
- Relay fallback must be enabled on both sides when you want Peerline to use relay data paths. Direct and hole-punched routes are attempted before relay fallback.
138
+ 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.
139
139
  In the send TUI, a failed attempt stays on screen and offers `r` to retry the same send or `q`/Esc to quit.
140
140
 
141
+ Network environment variables:
142
+
143
+ ```sh
144
+ PEERLINE_RELAY_PEERS=/ip4/203.0.113.10/tcp/4001/p2p/...
145
+ PEERLINE_DISABLE_RELAY_FALLBACK=1
146
+ PEERLINE_DISABLE_UPNP=1
147
+ PEERLINE_BOOTSTRAP=/dnsaddr/bootstrap.libp2p.io/p2p/...
148
+ PEERLINE_WEBRTC_ICE_SERVERS='[{"urls":["turn:turn.example.net:3478?transport=udp"],"username":"user","credential":"pass"}]'
149
+ ```
150
+
151
+ `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
+ 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.
153
+
141
154
  ## Current Status
142
155
 
143
156
  - Direct IP send and receive works.
144
- - Named discovery now uses HTTP rendezvous first, then Kademlia provider records, mDNS, DCUtR, relay fallback, and libp2p-webrtc's built-in ICE servers.
157
+ - Named discovery now uses HTTP rendezvous first, then Kademlia provider records, mDNS, UPnP-assisted direct endpoints, DCUtR, relay fallback, and libp2p-webrtc direct.
145
158
  - Files, multiple files, and folders are archived with safe relative paths, BLAKE3 integrity checks, and streaming zstd/lzma compression support.
146
159
  - Receivers stay open across multiple incoming transfers, with a configurable idle auto-exit.
147
160
  - Conflicts default to non-overwrite behavior, with TUI-driven handling in the receiver flow.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "peerline",
3
- "version": "0.1.0-beta.1",
3
+ "version": "0.1.0-beta.2",
4
4
  "description": "P2P post-quantum encrypted file transfer CLI",
5
5
  "repository": {
6
6
  "type": "git",