Build desktop and mobile apps with the web technologies you know.
Oro brings HTML, CSS, and JavaScript to native applications on Linux, macOS, Windows,
Android, and iOS. Your interface runs in the platform's WebView, backed by a C++ runtime
that exposes native capabilities through JavaScript modules. The oroc CLI takes you from
your first window to building, packaging, and updating your app.
Website · API reference · Examples · Contributing
- Web interfaces, native capabilities. Work with windows, files, networking, secure
storage, and workers through
oro:*imports. Extend the runtime with native code when your application needs more. - Data and compute on the device. Build with SQLite, peer-to-peer connections through Iroh, and local model inference. Keep application logic close to the user's data.
- A shared toolchain across platforms. Create projects, inspect configuration, build
apps, and prepare releases with one CLI and an explicit
oro.tomlconfiguration. - Discoverable by people and agents. Generated TypeScript declarations, searchable CLI help, installed manuals, and an MCP server make the runtime accessible from your editor, terminal, and automation tools.
Release status: the first runtime release is in preparation. The npm packages currently contain bootstrap reservations, not installable runtime binaries. Use a source build until
v0.1.0is available.
Once v0.1.0 is published, install the CLI with Node.js 22 or newer:
npm install --global @oro-computer/runtime@0.1.0
oroc --versionWith oroc installed, create and launch your first app:
oroc init my-app
cd my-app
oroc build --run .Edit your app's HTML, CSS, and JavaScript, and configure its build in oro.toml.
Use oroc help <query> to find your next step—for example, oroc help updates or
oroc help ios signing. Native builds require the toolchain and SDKs for the target platform.
Inside an Oro app, import native functionality as ES modules. For example, query a SQLite database directly from JavaScript:
import { open } from 'oro:sqlite'
const db = open(':memory:')
db.exec('CREATE TABLE notes (body TEXT)')
db.exec('INSERT INTO notes (body) VALUES (?)', {
params: ['Hello from Oro'],
})
const { rows } = db.exec('SELECT body FROM notes')
console.log(rows[0].body)
db.close()Explore oro:application, oro:fs/promises,
oro:secure-storage, and the full API reference.
The runtime ships TypeScript declarations for editor completion and type checking.
The npm launcher selects the package for your development machine automatically.
| Development host | Architectures | Additional SDK artifacts |
|---|---|---|
| Linux | x64, arm64 | Android on x64 |
| macOS | x64, arm64 | iOS device and Simulator |
| Windows | x64 | Desktop only |
Target mobile builds with oroc build --platform=android . or
oroc build --platform=ios . using the appropriate host and SDKs. Platform APIs and device
support vary; see current capabilities and limitations.
Connect an MCP client to your app workspace to search runtime documentation, inspect configuration, and invoke build and run tools:
oroc mcp --stdioThe CLI also supports structured JSON output on applicable subcommands and separate log files for automation. See the MCP guide for client setup, HTTP transport, and embedded application servers.
Source development requires Node.js 22+, pnpm 11, Python 3, a C++20 compiler, and the native SDKs for your targets. From the repository root, install the JavaScript dependencies:
corepack enable
pnpm install --frozen-lockfileFor a desktop-only runtime, use Bash on Linux or macOS:
NO_ANDROID=1 NO_IOS=1 ./bin/install.shOr PowerShell on Windows:
$env:NO_ANDROID = "1"
$env:NO_IOS = "1"
.\bin\install.ps1 -yesdepsNO_ANDROID and NO_IOS are independent presence switches: any non-empty value—including
0 or false—disables only the named mobile target family. Leave a variable unset to include
that target. Read the source-build guide for platform details and
Contributing for local linking, debug builds, and validation.
| Resource | What you will find |
|---|---|
| JavaScript APIs | Modules, methods, examples, and types |
| CLI reference | Build, run, package, update, and inspection commands |
| Configuration | oro.toml settings and their behavior |
| Examples | Applications and focused integrations |
| Architecture | How the WebView, IPC bridge, and native services fit together |
| Changelog | Release notes and compatibility changes |
Questions or a reproducible bug? Start with Support. Contributions are welcome; see Contributing and the Code of Conduct. Report vulnerabilities through Security.
Oro Runtime is licensed under Apache 2.0. See NOTICE and third-party notices for attribution.