micro / micro/mu

Shell: the web page is a command box, not a terminal

Open
#83 0 comments 1 reaction 2 assignees View on GitHub

@asim is already working on this.

Since Feb 9, 2026.

enhancement
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 — cd does 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.go already opens — the server half exists, it just has no browser client
  • a terminal emulator in the page. xterm.js is the obvious one and is a dependency question: CLAUDE.md says an embedded file lives with the package that owns it, so it would be service/shell/xterm.js rather 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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.