Skip to content

Extensions

Extensions are folder-based packages discovered at runtime. They can declare:

  • services your extension ships (out-of-process)
  • optional UI tabs for vros-tools and/or vros-desktop (typically WebView-backed)

Manifest: extension.toml

[extension]
id = "hello"
name = "Hello Extension"
version = "0.1.0"
description = "Example extension with a Tools/Desktop tab"

[[services]]
name = "hello-service"
required = false

[[ui.tabs]]
host = "vros-tools"
id = "hello"
title = "Hello"
icon = "👋"
url = "http://127.0.0.1:3412/"
requires_service = "hello-service"
order = 100

[[ui.tabs]]
host = "vros-desktop"
id = "hello"
title = "Hello"
icon = "👋"
url = "http://127.0.0.1:3412/"
requires_service = "hello-service"
order = 100

Discovery Rules

Search roots (in order):

  1. VROS_EXTENSIONS_DIR (path list; ; on Windows, : elsewhere)
  2. <exe_dir>/extensions, <exe_dir>/plugins
  3. <cwd>/extensions, <cwd>/plugins

Accepted layouts inside a root:

  • <root>/<id>/extension.toml (recommended)
  • <root>/*.toml (flat)

Packaging Layout

For the recommended layout:

<root>/<id>/
  extension.toml
  <service binaries...>
  <assets...>

Starter Template

Use sdk/hello-extension/ as a reference:

  • Builds a service that connects with catnet-sdk
  • Hosts a small local HTTP UI
  • Exposes tabs in vros-tools / vros-desktop