A computer in a browser tab
Shiro is a Unix-like environment that runs entirely in the page: a shell, a persistent filesystem, git, Node and npm, and Claude Code, installed and ready to sign in. Nothing to install, and it's all still there when you come back.
Open ShiroSource on GitHubFirst commands
# Claude Code: installs itself, opens a sign-in panel if needed claude claude --continue # resume where you left off # GitHub: sign in with a one-time code, then work as usual gh auth login gh repo clone you/project gh repo create my-app --private --source . --push # Let an outside agent drive this tab remote start help # everything else
What it's good for
Claude Code, no setup
The real Claude Code CLI runs in the tab. Sign in once with your Claude account, and it uses
the current Opus model with adaptive thinking. claude --continue picks up your last
conversation after a reload.
GitHub, public or private
gh auth login shows a code to approve on github.com. Clone, commit, pull, and push,
including private repos, and publish a folder as a new repo in one command.
Remote agents
remote start gives a code that an MCP client (shiro-mcp) uses to run commands,
read and write files, and search this page's console log, peer to peer over WebRTC.
Workspaces that stay
Files live in the browser's storage and survive reloads. Each subdomain, like
music.shiro.computer, is its own separate workspace.
How it works
- Filesystem. A POSIX-style tree stored in IndexedDB, with symlinks, permissions, and a recovery log.
- Panes. Drag the tiny triangle in any pane's corner to split it: sideways for side by side, up or down for stacked. Each pane gets its own shell, and the layout comes back after a reload.
- Shell. A bash-like interpreter: pipes, redirects, globs, functions, jobs, and hundreds of built-in commands.
- Node and npm. Node's core modules are shimmed in the page; npm installs real packages from the registry.
- Beyond JavaScript. WebAssembly and an x86-64 emulator run compiled tools like SQLite and Python.
- The server. Serves the page and relays what a browser can't call directly: the Claude and GitHub APIs, git, and WebRTC signaling. It stores none of your files; those live only in your browser.