Skip to content
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
Cannot retrieve contributors at this time

Web Run-Time Environment

CircleCI codebeat Coverity Scan Build Status codecov

WRTE is a microkernel-like environment to run untrusted applications in your browser.

Try it live at

WRTE boot sequence


The kernel provides following services to facilitate apps:


Untrusted apps run in iframe-sandbox + webworker jail limited as far as the browser allows. Kernel provides methods to spawn, manage and kill processes.


Inter-Process Communication mechanism allows exchanging messages between processes and processes and kernel. Messages can be sent in point-2-point manner or over two-way channels providing context and ordering.


Virtual File-System uses two previous facilities to build hierarchical, dynamic and persistent data access layer. Kernel provides mapping of paths to actual process handlers providing data content.


WRTE paths consist of a volume name and path. i.e. volume:foo/bar

Volumes are mapped to programmatic handlers processing messages for a given path. Messages like READ, SEEK, INFO, etc.

There is also an assign table, mapping parts of a path to another path. For example con: is usually an assign to internal:console.


There are few handlers provided by the kernel itself, not by externally launched processes. These are required to bootstrap the system and to give managed access to browser features such as DOM, not available to worker tasks in processes. These are all available at internal: volume. Be careful not to over-assign internal: paths, as it will probably make your system inoperative.


TBD (stdin/out/err channels of structured messages passed to subprocesses, power-shell like formatters, readline)


TBD (internal:... handler allowing opening a window to DOM, returning channel for controlling window content)


Latest developer documentation is available at


You may reach me at email: Tomasz Sterna


AGPL 3.0