Show HN: A Unix environment in a single HTML file (420 KB)
shiro.computerI built a browser-native Unix environment - shell, filesystem, git, npm, node, vi, 200+ commands. Everything is JavaScript running client-side with IndexedDB for persistence. The whole thing builds to a single static HTML file (~420 KB gzipped).
Try it: https://shiro.computer
For interactive demos showing npm install, node execution, and git workflows -- running live in Shiro, not recordings -- see https://shiro.computer/show
Source: https://github.com/williamsharkey/shiro
P.S. `curl -fsSL https://claude.ai/install.sh | bash` works. You can run real Claude Code and it can use Shiro's tools like a normal Linux system. I would not call this a unix environment. It does not run elf binaries. It does not have a kernel. All of the commands are vibecode-reimplementations in typescript. Yep, the title of the OP is misleading that way. The gcc stub surprised me: gcc seems to be a funny stub that generates an "executable" that prints "Hello, World!" if the input file fuzzy-matches a hello world, and otherwise prints nothing. Seems to be a few simple regexes: to "compile" you need a "main(" with either int or void before, and to trigger the hello world behavior you need printf( and a "hello" inside quotes. But that seems to be it: > I built a browser-native Unix environment On GitHub, it says Claude built it.
Are you sure? I am getting this: P.S. `curl -fsSL https://claude.ai/install.sh | bash` works.
You can run real Claude Code and it can use Shiro's tools
like a normal Linux system.
Now I get what looks like errors: user@shiro:~$ curl -fsSL https://claude.ai/install.sh | bash
Installing Claude Code...
Installing packages globally...
Resolved 1 package(s):
+ @anthropic-ai/claude-code@2.1.45
22 files extracted
Created 1 bin symlink(s) in /usr/local/bin
Packages installed globally.
Claude Code installed successfully!
Run: claude
user@shiro:~$ claude
And then I am back on the normal command line. anonymous/q2<@https://shiro.computer/ line 991 > AsyncFunction:57:43
y/<@https://shiro.computer/ line 991 > AsyncFunction:9:688
...and some more like this...
user@shiro:/tmp/hn$ cat main.c
#include <stdio.h>
int main()
{
printf("Hello\n");
}
user@shiro:/tmp/hn$ cc main.c -o main; ./main
Hello, World!
user@shiro:/tmp/hn$ cat main
#!/bin/sh
echo 'Hello, World!'
void main(
//printf(" hello"