A fully functional browser-based Linux terminal simulator with 100+ commands, a full shell script interpreter, and a virtual filesystem. All state lives in memory only - when you close the browser, everything is wiped clean.
- ✓100+ commands: navigation, files, text processing, system info, processes, networking, users
- ✓Command catalog modal - 40+ commands across 9 categories, click to autofill
- ✓Bash interpreter: variables, loops, conditionals, functions, substitution, pipes, redirection
- ✓In-memory VFS with permissions, ownership, timestamps - zero disk I/O
- ✓Green (#00ff88) / amber (#ffb700) themes on #0d0d0d; history, tab-complete, help overlay
Next.js 16ReactTypeScriptTailwind CSS
ShellPlay — live Vercel — https://shellplay.vercel.appopen ↗
user@linux-sim:~$
Miniature with 20 commands. The full simulator: 100+ commands, bash interpreter with loops/conditionals/pipes, Commands catalog modal, JetBrains Mono.
How it works
- TypeInput with history (↑↓), tab autocomplete and live descriptions - prompt user@linux-sim:/path$
- ExecuteCommandExecutor (50+ implementations) parses args, operates on the VFS, returns formatted output.
- ScriptShellInterpreter runs bash scripts with variables, loops and conditionals.
- IsolateEverything in memory - close the tab and the whole machine evaporates.
SEEDED FILESYSTEM
| Path | Contents |
|---|---|
| /home/user/ | documents/, downloads/, README.txt |
| /etc/ | passwd (full user list), hostname |
| /var/log/ | syslog (kernel logs) |
| /proc/ | cpuinfo (Core i5), meminfo (8 GB) |
| /tmp, /bin, /usr/bin | scratch space, bash, sh, utilities |
DOCUMENTED LIMITS
| Area | Status |
|---|---|
| Network commands | Simulated - no real network access |
| Processes | Simulated ps/top data |
| Scripting | Simplified core features |
| Persistence | None - memory only |
RUN IT
bash
pnpm install # or npm install
pnpm dev # → http://localhost:3000
pnpm build && pnpm start—Prerequisites: Node.js 18+, pnpm/npm/yarn
—pnpm install
—pnpm dev → http://localhost:3000
—Pure TypeScript engine - no external dependencies for FS/commands