@mmmbuto/nexuscrew 0.8.15 → 0.8.16
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 +24 -13
- package/frontend/dist/assets/{index-BD-7qEsn.js → index-B9RXe5E4.js} +20 -20
- package/frontend/dist/index.html +1 -1
- package/frontend/dist/version.json +1 -1
- package/lib/cli/commands.js +6 -0
- package/lib/nodes/tunnel-supervisor.js +65 -6
- package/lib/nodes/tunnel.js +49 -6
- package/lib/server.js +8 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -16,7 +16,7 @@ panes, windows. tmux does the work; the browser is just a faithful client.
|
|
|
16
16
|
|
|
17
17
|
---
|
|
18
18
|
|
|
19
|
-
## What it is (v0.8.
|
|
19
|
+
## What it is (v0.8.16 "Honest Tunnel")
|
|
20
20
|
|
|
21
21
|
- Runs a small server on the host where your tmux sessions live.
|
|
22
22
|
- Each attach spawns a real PTY running `tmux attach` and bridges its bytes over a WebSocket
|
|
@@ -49,9 +49,13 @@ panes, windows. tmux does the work; the browser is just a faithful client.
|
|
|
49
49
|
the peer automatically; failures identify the exact connection stage. A device already
|
|
50
50
|
connected to a hub creates invitations through that hub; a standalone hub asks only for
|
|
51
51
|
the SSH address by which the receiving device can reach it. Readiness uses a real bounded
|
|
52
|
-
deadline
|
|
53
|
-
|
|
54
|
-
|
|
52
|
+
deadline and a live TCP-forward probe instead of treating a merely running `ssh` process as
|
|
53
|
+
connected. When a portable address cannot select this device's key, the failure opens the
|
|
54
|
+
local fields so it can be replaced with the same SSH alias that works in the terminal.
|
|
55
|
+
Per-tunnel logs contain safe supervisor lifecycle markers and actionable SSH errors, never
|
|
56
|
+
synthetic argv dumps, key contents, tokens, or credentials. OpenSSH may name the failed
|
|
57
|
+
target in this owner-only 0600 diagnostic. Startup and lifecycle commands also recover
|
|
58
|
+
verified orphan supervisors left by removed nodes or interrupted older runtimes.
|
|
55
59
|
- **Settings and wizard**: manage roles, nodes, token rotation, and service regeneration
|
|
56
60
|
from the UI; the first-run wizard uses the same pairing flow as Settings.
|
|
57
61
|
- **Cell lifecycle from the UI**: the primary `+` creates a managed Fleet cell at Local or
|
|
@@ -235,12 +239,16 @@ flow stays entirely in the PWA:
|
|
|
235
239
|
2. On the other device, open its own NexusCrew PWA (`nexuscrew show`), go to
|
|
236
240
|
**Settings → Nodes**, and use the first card, **Connect with one link**. Paste the complete
|
|
237
241
|
link in the prominent field or scan the QR. Do not navigate to the loopback address in the
|
|
238
|
-
link: it is only a portable container for the pairing payload.
|
|
242
|
+
link: it is only a portable container for the pairing payload. The embedded host is a
|
|
243
|
+
portable suggestion, not an SSH identity. If `ssh my-relay` works on this device but the raw
|
|
244
|
+
address does not select the same key, open **Advanced / edit** and enter `my-relay`; aliases,
|
|
245
|
+
agents and private keys always stay on this device.
|
|
239
246
|
3. A complete v2 link connects automatically. NexusCrew starts a provisional SSH forward,
|
|
240
|
-
|
|
241
|
-
path, confirms it, and verifies authenticated
|
|
242
|
-
|
|
243
|
-
|
|
247
|
+
proves the local TCP forward rather than only the supervisor PID, consumes the one-time
|
|
248
|
+
invite once, negotiates the reciprocal path, confirms it, and verifies authenticated
|
|
249
|
+
federation health and peer identity. If SSH authentication or routing fails, the PWA
|
|
250
|
+
preserves the link, opens the editable local SSH fields and shows the exact stage, detail
|
|
251
|
+
and safe retry guidance. Older v1 links remain accepted and open only the missing fields.
|
|
244
252
|
|
|
245
253
|
The link never contains an SSH key, identity file, API key or PWA token. Its only credential is
|
|
246
254
|
the random, one-time pairing invite; SSH routing fields are non-secret configuration. A
|
|
@@ -262,7 +270,11 @@ NexusCrew does not create SSH keys or edit `authorized_keys`. OpenSSH remains au
|
|
|
262
270
|
identity files, agents, host keys, ports, ProxyJump and forwarding policy. NexusCrew uses
|
|
263
271
|
one built-in retry supervisor around `ssh`; it never nests `autossh`. `nexuscrew doctor` reports
|
|
264
272
|
whether both binaries are installed and states that OpenSSH is the transport actually used.
|
|
265
|
-
Missing `ssh` is a blocking error; `autossh` is optional.
|
|
273
|
+
Missing `ssh` is a blocking error; `autossh` is optional. A 15-second OpenSSH connect timeout
|
|
274
|
+
bounds unreachable endpoints, while readiness is advertised only after the configured local
|
|
275
|
+
forward accepts TCP. On startup, stop and restart, NexusCrew reconciles strict, verified tunnel
|
|
276
|
+
pidfiles against the node store so a removed node cannot leave a hidden retry supervisor.
|
|
277
|
+
Configured links return at boot.
|
|
266
278
|
Pair credentials are random, per-peer and scoped only to the federated session/file surface—the
|
|
267
279
|
PWA token never crosses a peer link.
|
|
268
280
|
|
|
@@ -462,9 +474,8 @@ node bin/nexuscrew.js serve
|
|
|
462
474
|
|
|
463
475
|
## Status
|
|
464
476
|
|
|
465
|
-
The current release
|
|
466
|
-
|
|
467
|
-
candidate.
|
|
477
|
+
The current stable release is **v0.8.16**. npm **`latest`**, the GitHub tag and the release use
|
|
478
|
+
the same audited package artifact.
|
|
468
479
|
|
|
469
480
|
## License
|
|
470
481
|
|