Shell: the web page is a command box, not a terminal
@asim is already working on this.
Since Feb 9, 2026.
- Dominant language
- Go
- Stars
- 434
- Forks
- 21
- Avg merge
- 18m
- Merged PRs (30d)
- 326
Description
Kept open and narrowed, because most of the original ask has landed.
What shipped
service/shell/ — a real machine per account: a container with a filesystem, a package layer (equip.go), idle shutdown, and SSH into it (ssh.go, with a PTY, window resize, and keys managed at /shell). ssh asim@micro.mu puts you in a login shell in your own box. It was sandbox and is shell now, because the service is named for the domain.
So: filesystem ✅, SSH ✅, agents-in-a-box ✅ (agent/work runs there).
What is left, and it is the mobile half
The web page at /shell is an <input class="sbx-cmd"> and a <pre> of the output — one command, one response, no session. That is not a terminal:
- no interactive programs (
vim,top, anything that reads a key at a time) - no persistent shell state —
cddoes not stick between commands - no scrollback, no ANSI colour, no resize
- no Ctrl-C
Which means the original complaint stands exactly where it was raised: on a phone there is still no usable terminal. SSH covers the desktop case; a phone is where a web terminal was the point.
What it needs
- a WebSocket to the PTY that
ssh.goalready opens — the server half exists, it just has no browser client - a terminal emulator in the page.
xterm.jsis the obvious one and is a dependency question: CLAUDE.md says an embedded file lives with the package that owns it, so it would beservice/shell/xterm.jsrather than a CDN - a mobile keyboard story, which is the actual hard part: Tab, Ctrl, arrows and Esc do not exist on a phone keyboard, so they need on-screen keys
Why it is worth it
agent/work runs tasks in that box. Being able to watch one and intervene is the difference between a machine you own and a machine you submit jobs to.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.