peerline 0.1.0-beta.1 → 0.1.0-beta.4

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 +31 -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,12 +117,19 @@ 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
+ peerline recv [NAME_OR_CODE] [CODE] --no-tor
121
122
  peerline recv [NAME_OR_CODE] [CODE] --idle-timeout-minutes 30
123
+ peerline recv [NAME_OR_CODE] [CODE] --tunnel cloudflared
124
+ peerline recv [NAME_OR_CODE] [CODE] --tunnel localtunnel
125
+ peerline recv [NAME_OR_CODE] [CODE] --tunnel tmole
126
+ peerline recv [NAME_OR_CODE] [CODE] --tunnel tunnelmole
122
127
  ```
123
128
 
124
129
  `--port` starts the 5-port direct window; Peerline will try that port and the next four.
125
130
  `--idle-timeout-minutes` defaults to `10`; set it to `0` to wait until you quit manually.
131
+ 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.
126
133
 
127
134
  Sender options:
128
135
 
@@ -131,17 +138,30 @@ peerline send <name> <code> <path...> --compression auto
131
138
  peerline send <name> <code> <path...> --compression none
132
139
  peerline send <name> <code> <path...> --compression zstd
133
140
  peerline send <name> <code> <path...> --compression lzma
134
- peerline send <name> <code> <path...> --allow-relay-fallback
141
+ peerline send <name> <code> <path...> --no-relay-fallback
135
142
  peerline send --name <name> --code <code> <path...>
136
143
  ```
137
144
 
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.
145
+ 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
146
  In the send TUI, a failed attempt stays on screen and offers `r` to retry the same send or `q`/Esc to quit.
140
147
 
148
+ Network environment variables:
149
+
150
+ ```sh
151
+ PEERLINE_RELAY_PEERS=/ip4/203.0.113.10/tcp/4001/p2p/...
152
+ PEERLINE_DISABLE_RELAY_FALLBACK=1
153
+ PEERLINE_DISABLE_UPNP=1
154
+ PEERLINE_BOOTSTRAP=/dnsaddr/bootstrap.libp2p.io/p2p/...
155
+ PEERLINE_WEBRTC_ICE_SERVERS='[{"urls":["turn:turn.example.net:3478?transport=udp"],"username":"user","credential":"pass"}]'
156
+ ```
157
+
158
+ `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
+ 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.
160
+
141
161
  ## Current Status
142
162
 
143
163
  - 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.
164
+ - Named discovery now uses HTTP rendezvous first, then Kademlia provider records, mDNS, UPnP-assisted direct endpoints, DCUtR, relay fallback, and libp2p-webrtc direct.
145
165
  - Files, multiple files, and folders are archived with safe relative paths, BLAKE3 integrity checks, and streaming zstd/lzma compression support.
146
166
  - Receivers stay open across multiple incoming transfers, with a configurable idle auto-exit.
147
167
  - 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.4",
4
4
  "description": "P2P post-quantum encrypted file transfer CLI",
5
5
  "repository": {
6
6
  "type": "git",