v1.0.0 — Stable

The kernel
for WebOS creators.

Stop spending hours building a bootloader and kernel from scratch. Drop in one file, call one function, and get straight to building your OS.

index.html
<!-- 1. link the kernel -->
<script src="https://webkernel-3bd.pages.dev/kernel.js"></script>

<!-- 2. your OS starts here -->
<script>
  WebOSKernel.onReady(kernel => {
    // build your OS here
  });
</script>
⎘  View kernel source code
Zero dependencies
Black screen bootloader included
Universal app store
What is it

A kernel that does
the boring parts.

WebOS Kernel handles everything a real kernel does — booting, error handling, service management, routing, and a shared app ecosystem — so you can skip straight to building your OS's UI and features.

Clean Boot Screen
Pure black screen with a spinner while the kernel initialises. No clutter. No branding you didn't ask for.
⚠️
Web-Error Menu
If the kernel fails to load for any reason, a built-in error screen shows the error code, what went wrong, and exactly how to fix it.
One File
Drop in a single <script> tag. No build tools, no npm, no configuration. Works in any HTML page.
🌐
Universal App Store
Apps built for any WebOS using this kernel can be shared globally with other WebOSes via the built-in app store layer.
How to use

Up and running
in three steps.

The kernel manages its own boot sequence. You only write code for your OS — nothing else.

1
Add kernel.js to your page
Add a single script tag to your WebOS HTML pointing to the kernel on Cloudflare. No downloading, no drag and drop — just the link. The kernel boots automatically when your page loads.
<script src="https://webkernel-3bd.pages.dev/kernel.js"></script>
2
Call onReady() to start your OS
Everything inside the callback runs after the kernel has fully booted. The black loading screen disappears automatically.
WebOSKernel.onReady(kernel => {
  // mount your UI, start your desktop, etc.
  document.body.innerHTML = `<div id="desktop">...</div>`;
});
3
Use the kernel API in your OS
Register services, add routes, listen to events, load plugins, and publish apps — all through the kernel object.
WebOSKernel.onReady(kernel => {

  // register a service
  kernel.register('storage', myStorageService);

  // add a route
  kernel.router.get('/api/files', handler);

  // emit an OS event
  kernel.events.emit('os:ready');

});
How services load

The kernel starts first.
Then everything else.

Services are loaded in a strict order to make sure the kernel is always stable before any OS code runs.

Kernel
1. Core Subsystems Boot
The kernel initialises its internal subsystems in order: EventBus → Router → Middleware Pipeline → Service Container. If any of these fail, the Web-Error Menu appears with the exact failure code.
Kernel
2. Built-in Routes Register
The kernel registers its own internal routes like /kernel/info and /kernel/services. These are always available and cannot be overridden by OS code.
Auto
3. App Store Layer Initialises
The kernel connects to the global app registry. Any WebOS using the kernel with correct app metadata will be able to see and install apps from other WebOSes automatically.
Creator
4. onReady() Fires
Once everything above is stable, the kernel calls your onReady() callback. This is when your OS code runs. Services you register here are available immediately to your OS and optionally to the app store layer.
Creator
5. Plugins Load
Any plugins your OS installs via kernel.plugin() are installed after onReady runs. Each plugin can register additional services, routes, and middleware without touching the kernel core.
Auto
6. OS Is Live
The kernel is now fully running. The boot screen is gone. Your OS has full control of the page and access to the kernel API for the rest of the session.
Global app store

Build once.
Run on every WebOS.

Apps built for any WebOS powered by this kernel are automatically compatible with every other WebOS using the same kernel — as long as the app metadata is correct.

How the universal app layer works
Each app declares a metadata object that the kernel reads. If the metadata is valid and the WebOS has the app store layer enabled, the app becomes globally discoverable and installable from any other WebOS running the same kernel version.
id *required
com.yourname.appname
name *required
"My App"
version *required
"1.0.0"
kernelVersion *required
"1.0.0"
entry
"https://cdn.com/app.js"
store
true
category
"productivity"
permissions
["storage", "network"]
🛠️
Creator builds app
App declares valid kernel metadata with store: true
🌐
Kernel registers it
App becomes visible in the global app registry shared across all WebOSes
📲
Any WebOS installs it
Any WebOS with the same kernel version can discover and install the app
Add to your WebOS
<script src="https://webkernel-3bd.pages.dev/kernel.js"></script>