You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
|`--tunnel`| Create an ephemeral devtunnel URL (private access) | On |
16
+
|`--no-tunnel`| Disable tunnel | — |
17
+
|`--persisted-tunnel`| Create a reusable devtunnel URL (stable across restarts) | Off |
18
+
|`--public`| Allow public tunnel access (no Microsoft login required) | Off |
19
+
|`--port <port>`| Server port (must be 1-65535) |`3456`|
20
+
|`--host <addr>`| Bind address |`127.0.0.1`|
21
+
|`--lan`| Bind to all interfaces (LAN access) | Off |
22
+
|`-i, --interactive`| Interactive setup wizard — walks through password, port, access mode (tunnel type, visibility), and log level | Off |
23
+
|`--force`| Stop any existing TermBeam server before starting a new one | Off |
24
+
|`-h, --help`| Show help | — |
25
+
|`-v, --version`| Show version | — |
26
+
|`--log-level <level>`| Set log verbosity: `error`, `warn`, `info`, `debug`|`info`|
28
27
29
28
## Environment Variables
30
29
@@ -137,22 +136,22 @@ termbeam --lan
137
136
# Allow LAN access (equivalent to --lan)
138
137
termbeam --host 0.0.0.0
139
138
140
-
# Tunnel is on by default (public access, password-protected)
139
+
# Tunnel is on by default (private, owner-only access)
141
140
termbeam
142
141
```
143
142
144
143
### DevTunnel
145
144
146
-
The `--tunnel` flag creates a public URL using [Azure DevTunnels](https://learn.microsoft.com/en-us/azure/developer/dev-tunnels/). Anyone with the URL can reach the login page — TermBeam's password auth is the security layer:
145
+
The `--tunnel` flag creates a private URL using [Azure DevTunnels](https://learn.microsoft.com/en-us/azure/developer/dev-tunnels/). By default, only the tunnel owner (you) can access it — visitors must authenticate with the same Microsoft account used by `devtunnel user login`:
147
146
148
147
```bash
149
148
termbeam --password mysecret
150
149
```
151
150
152
-
To add**Microsoft account login**on top of the password (private tunnel), use`--private`. Note: this breaks PWA icon display since browsers fetch icons without auth cookies:
151
+
To allow**public access**(anyone with the URL can connect), add`--public`:
153
152
154
153
```bash
155
-
termbeam --private --password mysecret
154
+
termbeam --public --password mysecret
156
155
```
157
156
158
157
For a **stable URL** that persists across restarts, use `--persisted-tunnel`:
A password is always auto-generated by default. Tunnel access is public by default — TermBeam password auth protects the terminal. Use `--private` to add Microsoft account login on top (note: this breaks PWA icon display). **Tunnel cannot be combined with `--no-password`** — TermBeam will refuse to start to prevent unauthenticated public exposure.
170
+
A password is always auto-generated by default. By default, tunnel access is private (owner-only via Microsoft login). Use `--public` to allow public access. **`--public` cannot be combined with `--no-password`** — TermBeam will refuse to start to prevent unauthenticated public exposure.
|**Public tunnel**|`termbeam --public`| Anyone with the URL + password| Auto-password | ⚠️ Medium|
24
24
|**LAN-only (localhost)**|`termbeam --no-tunnel`| Local machine only | Auto-password | ✅ Low |
25
25
|**LAN-only (all interfaces)**|`termbeam --no-tunnel --lan`| Any device on your network | Auto-password | ⚠️ Medium |
26
26
|**Localhost, no password**|`termbeam --no-tunnel --no-password`| Local processes only | None | ⚠️ Medium |
27
27
|**LAN, no password**|`termbeam --no-tunnel --no-password --lan`| Anyone on your network | None | 🔴 High |
28
28
29
29
<!-- prettier-ignore -->
30
-
!!! warning "Tunnel + `--no-password` is blocked"
31
-
The CLI refuses to start with a tunnel and no password.
30
+
!!! warning "`--public --no-password` is blocked"
31
+
The CLI refuses to start with a public tunnel and no password.
32
32
33
-
### Public Tunnel (Default)
33
+
### Private Tunnel (Default)
34
34
35
-
The default mode creates an ephemeral [Azure DevTunnel](https://learn.microsoft.com/en-us/azure/developer/dev-tunnels/)with public access. Anyone with the URL can reach the login page — TermBeam's password auth is the security layer:
35
+
The default mode creates an ephemeral [Azure DevTunnel](https://learn.microsoft.com/en-us/azure/developer/dev-tunnels/)that requires **two layers of authentication**:
36
36
37
-
1.**TermBeam password** — auto-generated on each run
38
-
2.**HTTPS** — the tunnel URL is encrypted end-to-end
39
-
3.**Unguessable URL** — the tunnel ID is random
37
+
1.**Microsoft account login** — only the tunnel owner can access the URL
38
+
2.**TermBeam password** — auto-generated on each run
40
39
41
-
The DevTunnel AAD auth layer was removed as the default because it was redundant with TermBeam's own password auth and broke PWA icon display (browsers fetch icons without auth cookies).
40
+
This is the safest way to access your terminal remotely. The tunnel URL is HTTPS, the connection is encrypted end-to-end, and the URL is unguessable.
42
41
43
-
### Private Tunnel
42
+
### Public Tunnel
44
43
45
-
With `--private`, the tunnel adds Microsoft account login on top of the TermBeam password — only the tunnel owner can access the URL. This provides two layers of authentication but breaks PWA features (icons, manifest) since browsers fetch those resources without auth cookies.
44
+
With `--public`, the tunnel URL is accessible to anyone who has it — no Microsoft login required. Password authentication is still enforced. This mode is useful for sharing temporary access, but the terminal is internet-accessible and protected only by the password and rate limiting (5 attempts/min/IP).
46
45
47
46
### LAN Exposure
48
47
@@ -54,7 +53,7 @@ Out of the box, TermBeam is configured conservatively:
54
53
55
54
- ✅ **Password auto-generated** — a strong random password is created on every run
56
55
- ✅ **Localhost bind** — server listens on `127.0.0.1` only
57
-
- ✅ **Public tunnel with password** — tunnel is public but password-protected; use `--private` to add Microsoft login
|`--public`| Removes Microsoft login from tunnel | Sharing temporary access with someone without a Microsoft account|
71
+
|`--no-password`| Removes password auth | Localhost-only on a single-user machine|
72
+
|`--lan` / `--host 0.0.0.0`| Binds to all interfaces | Trusted home network with password enabled|
73
+
|`--lan --no-password`| LAN-accessible, no auth |**Not recommended**|
75
74
76
75
### Quick Safety Checklist
77
76
78
77
Before running TermBeam, verify:
79
78
80
79
-[ ]**Password is enabled** — don't use `--no-password` unless localhost-only on a trusted machine
81
-
-[ ]**Tunnel is password-protected** — the auto-generated password is your primary defense for tunnel access
80
+
-[ ]**Tunnel is private** — don't use `--public` unless you specifically need anonymous tunnel access
82
81
-[ ]**Bind is localhost** — don't use `--lan` unless you need LAN access on a trusted network
83
82
-[ ]**Close when done** — TermBeam is not a daemon; don't leave it running unattended
84
83
-[ ]**Check the network** — on shared/public Wi-Fi, stick to defaults
@@ -185,7 +184,7 @@ The following UI features are entirely client-side and introduce **no new server
185
184
186
185
1.**Password is on by default** — use `--no-password` only for trusted localhost scenarios. `--public` requires password authentication and will refuse to start without it
187
186
2.**Localhost is the default** — use `--lan` only when you need LAN access
188
-
3.**Tunnel access is public by default** — protected by TermBeam's auto-generated password. Use `--private` to add Microsoft account login (note: breaks PWA icons), or `--no-tunnel` for LAN-only mode
187
+
3.**Tunnel access is private by default** — only you (the tunnel owner) can access it via Microsoft login. Use `--public` to allow public access, or `--no-tunnel` for LAN-only mode
189
188
4.**Close TermBeam when done** — it's not a daemon, don't leave it running
190
189
5.**Use on trusted networks** — TermBeam is not designed for hostile environments
0 commit comments