$ pwaos --about
Run web apps with native power.
pwaOS is a Progressive Web App standard-based runtime library. Completely standard web support, flexible native extension integration, and a small fast GPU-accelerated core — served through a Service-Oriented Architecture.
Runtime architecture
PWAOS Runtime is built on a Service-Oriented Architecture (SOA), implemented as pwaos_server. It is language- and backend-neutral, supports flexible threading model, and is independent of any specific process model. Two client interfaces reach its services:
Native clients
A stable, versioned C ABI for native clients. C/C++ — and other languages via C interop — interact using instance/app/projector handles, extensible javascript interface, callbacks, and event polling.
Webapp clients
JavaScript clients access runtime services via Mojo.
PWA support
Easily build all kinds of web applications with the runtime's PWA capabilities — then run them as native applications, such as desktop, browser, console, or contents apps.
WebApp
A Web application with full standards-based web support, capable of using the Runtime Client API to integrate native capabilities.
Desktop
Runs all child pwaApps in its own window as a desktop environment.
Browser
Runs kEmbedContents-type pwaApps and displays them as tabs within the browser.
Console
A text UI inside the pwaos shell, it is suited for command-line tools, embedded shells, and interactive terminal scenarios.
Contents
No window — for embedded or projection jobs.
Embedder API for C++
Embed the runtime in your own process
C++ host apps can embed the runtime directly into their process, integrating PWA capabilities with custom windowing, input, and rendering pipelines. See the sample client.
Runtime C ABI highlights
One stable, versioned interface covers everything a native client needs.
Instance lifecycle
Init and shutdown, create/destroy, properties, runtime path, command line, and status callbacks.
App management
Create and destroy PWA apps — native, browser, console, desktop, or headless — and set URL and size.
JavaScript bridge
Add and remove JS interfaces; define native methods and properties callable from web content.
Window and input
Bounds, pointer/mouse and Android events, execute JS, FPS, density, and input method.
Developer tools
Inspect any app through its DevTools URI.
User agent
Get and set the user agent string.
Network proxy
DIRECT, AUTO_DETECT, PAC_SCRIPT, FIXED_SERVERS, and SYSTEM proxy modes.
Projection API
Create and destroy projectors; offscreen or native-widget rendering, multiple backends, draw callbacks.
Event polling
pwaosInstance_pollEvent delivers status changes and stopping reasons.
Cross-platform
Windows, Linux, and Android, with automatic graphics API detection.