Skip to content

Latest commit

 

History

91 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Oro Runtime

Build desktop and mobile apps with the web technologies you know.

CI Release builds License: Apache 2.0

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

Why Oro?

  • 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.toml configuration.
  • 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.

Get started

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.0 is 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 --version

With 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.

Native APIs, ordinary JavaScript

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.

Platforms

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.

Automation and agents

Connect an MCP client to your app workspace to search runtime documentation, inspect configuration, and invoke build and run tools:

oroc mcp --stdio

The 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.

Build from source

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-lockfile

For a desktop-only runtime, use Bash on Linux or macOS:

NO_ANDROID=1 NO_IOS=1 ./bin/install.sh

Or PowerShell on Windows:

$env:NO_ANDROID = "1"
$env:NO_IOS = "1"
.\bin\install.ps1 -yesdeps

NO_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.

Explore further

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.

License

Oro Runtime is licensed under Apache 2.0. See NOTICE and third-party notices for attribution.

About

Build native desktop and mobile apps with HTML, CSS, and JavaScript. A C++ runtime with native APIs, platform WebViews, and one CLI.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages