OruvaDownload ↗
Plugin documentation

Build for Oruva

Add tools to Oruva's right-click menu with a local-first, out-of-process plugin model and an explicit trust boundary.

Plugin API v1Manifest schema 2

The API version describes the execution contract, bridge messages, placeholders, and local HTTP endpoints. The manifest schema describes the structure of plugin.json, including its required capabilities block. These are separate version numbers. The machine-readable contract is plugin_sdk/schema/plugin.schema.json inside the SDK.

An Oruva plugin adds actions to the assets in an Oruva library. When a user right-clicks an asset, your plugin's actions appear in the Plugins submenu; choosing one either runs your program directly or opens your action's optional interface.

Three principles shape the whole platform:

Local-first. A plugin is a folder on the user's disk. No account or website is required to run a locally installed plugin. Plugins may still use the network when they declare exactly where and why; the Plugin Center is a manager and catalog, not a runtime dependency.
Out-of-process. Your Python script or executable runs as a separate process. An optional HTML interface runs separately in a script-only sandboxed iframe and talks to Oruva through a small message bridge.
Explicit trust. Every plugin declares permissions and structured capabilities in its manifest. The user sees them and must approve the plugin before it can run — and approval is bound to the entry, runtime, permissions, capabilities, action definitions (including args and ui), and the hash of every file in the folder. Any change to any of those invalidates the approval automatically.

Versioning promise

Plugin API v1 fields will not silently change meaning. New abilities such as actions[].ui and actions[].icon appear as optional fields; the structured capabilities object carries its own required version so that the capability contract can evolve without touching the manifest schema. Anything incompatible requires a new schema_version (as schema 2 did when it made capabilities required) or a new capability version. Version your own plugin semantically — the update badge users see is driven by your version field.

Explore the documentation

Start with the quick start, then keep the reference pages open while you build.