Skip to main content
The catalog is live in Mission Control’s Extensions tab and on altnautica.com/extensions, and agents check it daily for updates. Third-party submission is not open, and there is no ados plugin search.

Where the catalog appears

  • Mission Control. A node’s Extensions tab shows a searchable grid of catalog extensions with category filters (drivers, ui, ai, telemetry, tools) and an installed marker. Install on a card hands the archive URL and its sha256 pin to the agent (see URL install).
  • The agent. Each agent ships a bundled first-party catalog, served at GET /api/v1/plugins/catalog and shown in the agent dashboard.
  • The website. altnautica.com/extensions lists published extensions.
Extensions tab catalog grid with search box, category filters and an installed marker

The catalog grid in a node's Extensions tab.

Install by id

ados plugin install <id> installs a built-in plugin or a first-party catalog entry by id, at the catalog’s version. There is no @version syntax. ados plugin info <id> prints the manifest summary and runtime state.

Automatic updates

Once a day the agent compares every enabled install with the newest version the registry publishes: The whole cycle is deferred while the vehicle counts as armed (unknown or stale state counts as armed). Control it per plugin:
The same daily cycle fetches the registry’s revocation list and merges it into the agent’s local list; see Revocation and incidents.

Registry API

The registry is served from the Convex backend’s HTTP routes: /v1/revoked.json returns:
A self-hosted Convex backend serves its own catalog; see Self-hosting.

Submit a plugin

Third-party submission is not open. This section describes the endpoint as it ships. POST /v1/plugins/submit takes a multipart/form-data body and a bearer token that resolves to a registry user. Required fields: archive, plugin_id, version, category, manifest_yaml, signature, signer_key_id, payload_hash and agent_min_version. Optional: archive_sha256, name, description, license, homepage_url, repo_url, agent_max_version, gcs_min_version. category must be one of drivers, ui, ai, telemetry or tools; anything else returns 400. scripts/submit.sh in ADOSExtensions derives every required field from a signed archive and sends it:
The equivalent curl:
The manifest fields the registry reads are top-level: id, license, homepage.

Review

The registry scans the first 256 KiB of the archive for a short list of dangerous patterns (eval(, exec(, __import__(, subprocess calls, os.system() and scores it at 100 minus 20 per finding. Run ados plugin lint locally for the fuller check. Every submission waits for the registry operator; nothing auto-publishes. The registry stores your signature as submitted; it is verified on each agent at install against that agent’s trusted keys. The verified-publisher badge is set by the registry operator. To pull a version, contact the registry operator.

Next steps

Revocation and incidents

Revoke a signer, an archive or a release.

Legal and licensing

Licences and distribution channels.
Last modified on October 11, 2026