Terminal & shell
A session opens on a POSIX-like shell. Run pipelines, redirect output, and mark a file executable. The exec bit persists with the file.
$ printf 'cherry\napple\nbanana\n' > fruits.txt$ sort fruits.txt | head -2applebanana$ chmod +x greet.sh && ./greet.sh # a real, persisted exec bitThe shell is a real lexer, parser, and interpreter for POSIX-like syntax.
Pipes, redirects, heredocs, command substitution, set -e, trap,
source, $?, and 60+ coreutils work. Shebangs and WASM magic dispatch
./script.sh and ./hello.wasm. Full IFS splitting and complete job
control are not done. tests/behavioral/shell/ holds the probes for this
syntax.
The terminal below runs a redirect, a pipe through real coreutils, and id,
which prints the credential every command runs under. Type your own commands
when it finishes.
Live sandbox — connecting…
Run python, ruby, node, or bun with no arguments to open a REPL.
Python and Ruby are real interpreters and keep their state, so variables and
imports persist across submits. Node and Bun cannot keep declarations,
because workerd’s CSP blocks runtime eval. Their banners say so, and
scripts are unaffected. Leave with Ctrl+D or exit.
Full-screen CLIs alpha
Section titled “Full-screen CLIs alpha”Foreground npm bins open in attached tabs. Keystrokes reach the process,
resizes propagate, and ANSI redraws render. Pipe the same bin and it sees
isTTY: false. The Pi coding agent runs end to end through both install
paths.
opencode’s serve half boots, passes its health gate, and streams SSE. Its TUI half renders frames, but runs on a thin memory margin that is still being hardened, so full-TUI support is not yet claimed. Full PTY parity (raw and cooked modes, signals, and scrollback replay) is roadmap.
Recovery
Section titled “Recovery”After a dropped WebSocket, the terminal reconnects with cwd, environment,
and files intact. One person owns the active terminal. If a deployment
enforces auth, anyone joining also needs a valid
attach token.