OS.js Manual
Go here for the v3 Manual


Build System

The build system consits of two parts: A task runner (Ygor) and Webpack.

All tasks are run via the osjs tool, but the build process itself takes place in Webpack.

The build setup can be changed with the configuration system (explained below).

Configuration System

The configuration is managed with JSON files in src/conf. These are prefixed with a number because they are loaded in sequence and merged together, which produces an entire tree.

You can manipulate the settings by changing the supplied files, adding your own, or use the osjs tool.

Please note that Arrays are not merged together.

For more information look in the configuration manual.


The client is the main application that runs in a browser environment.

It's built using Webpack and ES6, so everything is separated into individual modules.

The "client" contains all core APIs, and the main graphical environment (window manager and desktop) is in a separate package which is launched upon boot (by default the "default/CoreWM" package).


A HTTP server to host the client files and server APIs. Is a available in two flavors: Node (Express) and PHP.

Please note that the PHP server is missing some features and might be moved into a separate project.


Both the server and client can be extended via modules. These come in several types:

You can find more information about these in the menu.


There are several types of packages:

All packages has a metadata file (metadata.json) that contains information about the package in general and also what files it should use.

The package metadata files are built into a final manifest file that the client uses to populate its Package Manager.

For more information look in the packages manual.


Instead of making changes to the base repository, you can very easily add overlays to include your own code and packages, etc.

An overlay is organized just like in src/ and will be loaded into the build/configuration system automatically once added.

An example overlay is available on Github.

For more information on configuration look in the configuration manual.