Show HN: A Unix environment in a single HTML file (420 KB)
I 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.

    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.
Are you sure? I am getting this:

    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
Now I get what looks like errors:

    anonymous/q2<@https://shiro.computer/ line 991 > AsyncFunction:57:43
    y/<@https://shiro.computer/ line 991 > AsyncFunction:9:688
    ...and some more like this...
And then I am back on the normal command line.
The gcc stub surprised me:

  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!'
  • dTal
  • ·
  • 10 hours ago
  • ·
  • [ - ]
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:

  void main(
  //printf(" hello"
> I built a browser-native Unix environment

On GitHub, it says Claude built it.

  • ·
  • 10 hours ago
  • ·
  • [ - ]
  • ·
  • 11 hours ago
  • ·
  • [ - ]
  • q3k
  • ·
  • 10 hours ago
  • ·
  • [ - ]
[flagged]