Skip to content

Terminal & shell

Terminal window
$ printf 'cherry\napple\nbanana\n' > fruits.txt
$ sort fruits.txt | head -2
apple
banana
$ chmod +x greet.sh && ./greet.sh # a real, persisted exec bit

The 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 aren’t done. The probes in tests/behavioral/shell/ are the source of truth for every claim here.

The terminal below is a live sandbox running a redirect, a pipe through real coreutils, and id, which prints the credential every command runs under. After the demo, you can type your own commands.

nimbus — shell

Live sandbox — connecting…

Run python, ruby, node, or bun with no arguments to open a REPL. Python and Ruby are stateful real interpreters, so variables and imports persist across submits. Node and Bun can’t keep declarations: workerd’s CSP blocks runtime eval. Their banners say so. Scripts are unaffected. Leave with Ctrl+D or exit.

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. Behavioral probes run the Pi coding agent end to end through both install paths.

opencode is the reference stress test. Its serve half boots, passes its health gate, and streams SSE. The 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.

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.