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
Copy file name to clipboardExpand all lines: README.md
+52-52Lines changed: 52 additions & 52 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -157,6 +157,58 @@ Codeman requires tmux, so Windows users need [WSL](https://learn.microsoft.com/e
157
157
158
158
---
159
159
160
+
## Mobile-Optimized Web UI
161
+
162
+
The most responsive AI coding agent experience on any phone. Full xterm.js terminal with local echo, swipe navigation, and a touch-optimized interface designed for real remote work — not a desktop UI crammed onto a small screen.
163
+
164
+
<table>
165
+
<tr>
166
+
<tdalign="center"width="40%"><imgsrc="docs/screenshots/mobile-session-keyboard-20260727.png"alt="Mobile — answering an agent's plan prompt with the keyboard accessory bar and Enter button"width="300"></td>
167
+
<tdalign="center"width="60%"><imgsrc="docs/screenshots/mobile-toolbar-enter-20260727.png"alt="Mobile toolbar: accessory bar with /init, /clear, clipboard and Esc above the Run, case, stop, Enter, voice and settings controls"width="440"></td>
168
+
</tr>
169
+
<tr>
170
+
<tdalign="center"><em>Answering prompts by touch</em></td>
171
+
<tdalign="center"><em>Accessory bar + dedicated Enter button</em></td>
172
+
</tr>
173
+
</table>
174
+
175
+
<table>
176
+
<tr>
177
+
<th>Terminal Apps</th>
178
+
<th>Codeman Mobile</th>
179
+
</tr>
180
+
<tr><td>200-300ms input lag over remote</td><td><b>Local echo — instant feedback</b></td></tr>
181
+
<tr><td>Tiny text, no context</td><td>Full xterm.js terminal</td></tr>
182
+
<tr><td>No session management</td><td>Swipe between sessions</td></tr>
183
+
<tr><td>No notifications</td><td>Push alerts for approvals and idle</td></tr>
<tr><td>Password typing on phone</td><td><b>QR code scan — instant auth</b></td></tr>
188
+
</table>
189
+
190
+
-**Keyboard accessory bar** — `/init`, `/clear`, `/compact` quick-action buttons above the virtual keyboard; destructive commands require a double-press to confirm, so you never fire one by accident
191
+
-**Dedicated Enter button** — replays the keypress through the terminal, so text buffered by local echo is flushed first rather than stranded
192
+
-**Swipe navigation & smart keyboard handling** — swipe left/right to switch sessions; toolbar and terminal shift up when the keyboard opens (`visualViewport` API)
193
+
-**Built for phones** — safe-area insets for notch and home indicator, 44px touch targets, bottom-sheet case picker, native momentum scrolling
194
+
195
+
```bash
196
+
codeman web --https
197
+
# Open on your phone: https://<your-ip>:3000
198
+
```
199
+
200
+
> `localhost` works over plain HTTP. Use `--https` when accessing from another device, or use [Tailscale](https://tailscale.com/) (recommended) — it provides a private network so you can access `http://<tailscale-ip>:3000` from your phone without TLS certificates.
201
+
202
+
### Secure QR Code Authentication
203
+
204
+
Typing passwords on a phone keyboard is miserable. Codeman replaces it with **cryptographically secure single-use QR tokens** — scan the code displayed on your desktop and your phone is authenticated instantly.
205
+
206
+
Each QR encodes a URL containing a 6-character short code that maps to a 256-bit secret (`crypto.randomBytes(32)`) on the server. Tokens auto-rotate every **60 seconds**, are **atomically consumed on first scan** (replays always fail), and use **hash-based `Map.get()` lookup** that leaks nothing through response timing. The short code is an opaque pointer — the real secret never appears in browser history, `Referer` headers, or Cloudflare edge logs.
207
+
208
+
The security design addresses all 6 critical QR auth flaws identified in ["Demystifying the (In)Security of QR Code-based Login"](https://www.usenix.org/conference/usenixsecurity25/presentation/zhang-xin) (USENIX Security 2025, which found 47 of the top-100 websites vulnerable): single-use enforcement, short TTL, cryptographic randomness, server-side generation, real-time desktop notification on scan (QRLjacking detection), and IP + User-Agent session binding with manual revocation. Dual-layer rate limiting (per-IP + global) makes brute force infeasible across 62^6 = 56.8 billion possible codes. Full security analysis: [`docs/qr-auth-plan.md`](docs/qr-auth-plan.md)
209
+
210
+
---
211
+
160
212
## Using Codeman — A Human's Guide
161
213
162
214
A start-to-finish walkthrough for driving Codeman from the browser. If you just installed, this is where to begin.
@@ -223,58 +275,6 @@ Hit start — Codeman spawns the CLI via a real PTY and streams it to your brows
223
275
224
276
---
225
277
226
-
## Mobile-Optimized Web UI
227
-
228
-
The most responsive AI coding agent experience on any phone. Full xterm.js terminal with local echo, swipe navigation, and a touch-optimized interface designed for real remote work — not a desktop UI crammed onto a small screen.
229
-
230
-
<table>
231
-
<tr>
232
-
<tdalign="center"width="40%"><imgsrc="docs/screenshots/mobile-session-keyboard-20260727.png"alt="Mobile — answering an agent's plan prompt with the keyboard accessory bar and Enter button"width="300"></td>
233
-
<tdalign="center"width="60%"><imgsrc="docs/screenshots/mobile-toolbar-enter-20260727.png"alt="Mobile toolbar: accessory bar with /init, /clear, clipboard and Esc above the Run, case, stop, Enter, voice and settings controls"width="440"></td>
234
-
</tr>
235
-
<tr>
236
-
<tdalign="center"><em>Answering prompts by touch</em></td>
237
-
<tdalign="center"><em>Accessory bar + dedicated Enter button</em></td>
238
-
</tr>
239
-
</table>
240
-
241
-
<table>
242
-
<tr>
243
-
<th>Terminal Apps</th>
244
-
<th>Codeman Mobile</th>
245
-
</tr>
246
-
<tr><td>200-300ms input lag over remote</td><td><b>Local echo — instant feedback</b></td></tr>
247
-
<tr><td>Tiny text, no context</td><td>Full xterm.js terminal</td></tr>
248
-
<tr><td>No session management</td><td>Swipe between sessions</td></tr>
249
-
<tr><td>No notifications</td><td>Push alerts for approvals and idle</td></tr>
<tr><td>Password typing on phone</td><td><b>QR code scan — instant auth</b></td></tr>
254
-
</table>
255
-
256
-
-**Keyboard accessory bar** — `/init`, `/clear`, `/compact` quick-action buttons above the virtual keyboard; destructive commands require a double-press to confirm, so you never fire one by accident
257
-
-**Dedicated Enter button** — replays the keypress through the terminal, so text buffered by local echo is flushed first rather than stranded
258
-
-**Swipe navigation & smart keyboard handling** — swipe left/right to switch sessions; toolbar and terminal shift up when the keyboard opens (`visualViewport` API)
259
-
-**Built for phones** — safe-area insets for notch and home indicator, 44px touch targets, bottom-sheet case picker, native momentum scrolling
260
-
261
-
```bash
262
-
codeman web --https
263
-
# Open on your phone: https://<your-ip>:3000
264
-
```
265
-
266
-
> `localhost` works over plain HTTP. Use `--https` when accessing from another device, or use [Tailscale](https://tailscale.com/) (recommended) — it provides a private network so you can access `http://<tailscale-ip>:3000` from your phone without TLS certificates.
267
-
268
-
### Secure QR Code Authentication
269
-
270
-
Typing passwords on a phone keyboard is miserable. Codeman replaces it with **cryptographically secure single-use QR tokens** — scan the code displayed on your desktop and your phone is authenticated instantly.
271
-
272
-
Each QR encodes a URL containing a 6-character short code that maps to a 256-bit secret (`crypto.randomBytes(32)`) on the server. Tokens auto-rotate every **60 seconds**, are **atomically consumed on first scan** (replays always fail), and use **hash-based `Map.get()` lookup** that leaks nothing through response timing. The short code is an opaque pointer — the real secret never appears in browser history, `Referer` headers, or Cloudflare edge logs.
273
-
274
-
The security design addresses all 6 critical QR auth flaws identified in ["Demystifying the (In)Security of QR Code-based Login"](https://www.usenix.org/conference/usenixsecurity25/presentation/zhang-xin) (USENIX Security 2025, which found 47 of the top-100 websites vulnerable): single-use enforcement, short TTL, cryptographic randomness, server-side generation, real-time desktop notification on scan (QRLjacking detection), and IP + User-Agent session binding with manual revocation. Dual-layer rate limiting (per-IP + global) makes brute force infeasible across 62^6 = 56.8 billion possible codes. Full security analysis: [`docs/qr-auth-plan.md`](docs/qr-auth-plan.md)
275
-
276
-
---
277
-
278
278
## Live Agent Visualization
279
279
280
280
Watch background agents work in real-time. Codeman monitors agent activity and displays each agent in a draggable floating window with animated Matrix-style connection lines back to the parent session.
0 commit comments