Demo: the web terminal (ttyd) as a service #114

Closed
opened 2026-11-06 19:21:56 +00:00 by rajames · 2 comments
Owner

What

ttyd (a small C program; no Node on the server) runs the launcher once per browser connection and serves the terminal (xterm.js) to the browser.

Done when

  • A systemd unit, as an unprivileged user, listening on localhost only
  • A cap on concurrent sessions, with a clear "busy, try again" past it
  • A browser session reaches the prompt, in a scripted test against the websocket
## What ttyd (a small C program; no Node on the server) runs the launcher once per browser connection and serves the terminal (xterm.js) to the browser. ## Done when - [ ] A systemd unit, as an unprivileged user, listening on localhost only - [ ] A cap on concurrent sessions, with a clear "busy, try again" past it - [ ] A browser session reaches the prompt, in a scripted test against the websocket
rajames added this to the Public demo terminal milestone 2026-11-06 19:21:56 +00:00
rajames added the
kind
feature
board/pc
priority
should
status
in-progress
labels 2026-11-06 19:21:56 +00:00
Author
Owner

Built and tested in 9e711563, on StarForth-v4.0.0; reaches master by PR, through acceptance. See demo/README.md, Tested: ready 0.2 s after a session starts (a cold boot is 87 s); 3 4 + . -> 7 ok through ttyd's websocket; QEMU gone at once on hang-up, close and time-out.

**Built and tested** in `9e711563`, on `StarForth-v4.0.0`; reaches `master` by PR, through acceptance. See `demo/README.md`, *Tested*: ready 0.2 s after a session starts (a cold boot is 87 s); `3 4 + .` -> `7 ok` through ttyd's websocket; QEMU gone at once on hang-up, close and time-out.
rajames added
status
needs-acceptance
and removed
status
in-progress
labels 2026-11-06 19:41:43 +00:00
rajames removed the
status
needs-acceptance
label 2026-11-06 21:44:39 +00:00
Author
Owner

Merged to master in #118 (0332a2e1), accepted by run 163 on 4f6a267b. Gitea's "Closes #112, #113, #114" closed only the first; closed here by hand.

Merged to `master` in #118 (`0332a2e1`), accepted by run 163 on `4f6a267b`. Gitea's "Closes #112, #113, #114" closed only the first; closed here by hand.
Sign in to join this conversation.