MCPcopy Index your code
hub / github.com/MercuryWorkshop/anuraOS

github.com/MercuryWorkshop/anuraOS @v1.2

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.2 ↗ · + Follow
3,646 symbols 11,888 edges 185 files 165 documented · 5%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

AnuraOS logo AnuraOS logo

The next-gen webOS and development environment with full Linux emulation.


What is AnuraOS?

An entirely local browser-based "OS" and development environment with complete graphical Linux emulation, visually based on ChromiumOS. See a demo here, fully in your browser.

[!WARNING]
Anura OS has only been extensively tested on Chromium and Safari. Although nearly everything should work on Firefox, you may run into problems with instability.

Anura uses the features of a PWA (Progressive Web App) to make its environment work fully offline, providing a virtual filesystem (synced with the Linux emulator), a code editor, and a modular and extensible app system. You can even edit Anura's code live while inside of it!

Anura shows as more of a proof-of-concept with what's possible on the modern web rather than an actual product. However, it proves useful in many actual cases and is a useful educational tool.

Development

[!IMPORTANT]
Anura will not build on Windows. Please use a Linux VM or WSL.

Easy Install for GitHub Codespaces

  • Run bash codespace-basic-setup.sh

[!NOTE]

  • If you are not in a codespace skip to the regular installation steps.
  • This does NOT build RootFS.

Dependencies

  • Recent versions of node.js and npm
  • wget
  • A recent version of java
  • inotifytools
  • rustup
  • make
  • gcc (or any other C compiler)

[!NOTE] You will have to install the required Rust toolchain by running rustup target add wasm32-unknown-unknown.

Building

  • Clone the repository with git clone --recursive https://github.com/MercuryWorkshop/anuraOS
  • Then, make all

[!TIP] You can use make all -B instead if you want to force a full build.

Building the Linux RootFS

  • Make sure you have Docker installed and running.
  • Run make rootfs
  • Make sure to add yourself to the Docker group using usermod -a -G docker $USER
  • (Special Use Case) In the event that you should need to override/manually add the initrd and kernel, remember to keep track of the file names of initrd and vmlinuz in build/images/(rootfs)-boot/. Then, copy them to the Anura root directory and rename them to initrd.img and bzimage respectively.(See the extended instructions here.)

Running Anura Locally

You can run Anura with the command

make server

Or, run authenticated with

cd server
npm start -- --auth

Anura should now be running at localhost:8000.

App Development

App development is highly encouraged! Good apps can even be added to the official workstore after review by an AnuraOS maintainer. Apps are stored in .app files which are read by AnuraOS to provide you, well, an app!

For more information about developing an AnuraOS app visit here.

Documentation

Still being written. (See the current index of documentation here)

Security

See SECURITY.md for reporting instructions.

Credits

AnuraOS is created by Mercury Workshop. Linux emulation is based off of the v86 project. For more credits, see CREDITS.MD.

(p.s. for hackers: the entrypoint to anura is src/Boot.tsx)

Extension points exported contracts — how you extend this code

FakeFile (Interface)
(no doc)
src/v86.tsx
AppManifest (Interface)
(no doc)
src/Anura.ts
LibURIHandler (Interface)
(no doc)
src/api/URIHandler.ts
LibManifest (Interface)
(no doc)
src/libs/ExternalLib.tsx
AppURIHandler (Interface)
(no doc)
src/api/URIHandler.ts
URIHandlerOptions (Interface)
(no doc)
src/api/URIHandler.ts
NotifParams (Interface)
(no doc)
src/api/NotificationService.tsx

Core symbols most depended-on inside this repo

n
called by 1179
apps/eruda.app/eruda.js
push
called by 957
public/uv/uv.bundle.js
charCodeAt
called by 489
public/uv/uv.bundle.js
get
called by 404
apps/vnc.app/app/localization.js
add
called by 402
src/api/NotificationService.tsx
addEventListener
called by 398
apps/vnc.app/core/util/eventtarget.js
slice
called by 375
public/uv/uv.bundle.js
on
called by 321
apps/vnc.app/core/websock.js

Shape

Function 2,292
Method 1,147
Class 200
Interface 7

Languages

TypeScript99%
C1%

Modules by API surface

public/uv/uv.bundle.js1,242 symbols
apps/marketplace.app/jszip.js161 symbols
apps/libstore.lib/jszip.js161 symbols
apps/fsapp.app/jszip.js161 symbols
apps/glxgears.app/b.js127 symbols
apps/vnc.app/core/rfb.js121 symbols
apps/eruda.app/eruda.js115 symbols
apps/vnc.app/app/ui.js98 symbols
public/uv/uv.client.js95 symbols
apps/term.app/hterm_all.js82 symbols
apps/ashell.app/hterm_all.js82 symbols
src/api/Filesystem.ts62 symbols

For agents

$ claude mcp add anuraOS \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page