Public Discover-able Plugins for zara. open a issue to publish your plugin
  • Python 96.6%
  • JavaScript 1.3%
  • Prolog 1.3%
  • Nix 0.7%
Find a file
nsaspy 89f0e938fb
Some checks failed
CI / test (push) Failing after 16s
CI / zara-avatar idle CPU budget (push) Failing after 8m20s
Merge pull request #517 from lost-rob0t/plugin-b/pipewire-player-506
feat(zara-voice): add bounded PipeWire player
2026-09-07 21:11:43 -04:00
.github/workflows ci: preserve nix flake check failure logs 2026-09-07 19:14:20 -04:00
plugins Merge pull request #517 from lost-rob0t/plugin-b/pipewire-player-506 2026-09-07 21:11:43 -04:00
scripts Fix zara-avatar idle CPU burn and gate it in CI (#446) 2026-09-06 22:41:02 -04:00
skills Bootstrap registry: plugins.json catalog, zara-avatar plugin, flake packaging 2026-08-31 13:26:54 -04:00
tests test(ci): require flake gate failure log artifact 2026-09-07 19:14:08 -04:00
.gitignore Bootstrap registry: plugins.json catalog, zara-avatar plugin, flake packaging 2026-08-31 13:26:54 -04:00
AGENTS.md Bootstrap registry: plugins.json catalog, zara-avatar plugin, flake packaging 2026-08-31 13:26:54 -04:00
flake.lock Bootstrap registry: plugins.json catalog, zara-avatar plugin, flake packaging 2026-08-31 13:26:54 -04:00
flake.nix fix: preserve generated flake outputs in plugin gate 2026-09-06 22:22:10 -04:00
LICENSE Initial commit 2026-08-31 10:31:35 -04:00
plugins.json fix: declare zara-files runtime dependency 2026-09-06 22:15:25 -04:00
README.md fix(zara-discord): make startup resource-safe 2026-09-07 07:40:08 -04:00

zara-plugins

Public, discoverable plugins for Zara. Open an issue to publish your plugin.

Downstream Zara clients discover plugins through the machine-readable registry at plugins.json and install them either with each plugin's bundled tool, with Nix, or (once landed in Zara) with a native zara plugin install command.

Catalog

Plugin Version Type Description
zara-agent-zero 0.1.1 service Delegate selected Zara work to Agent Zero through its native external API
zara-avatar 0.1.0 service Zara-owned 3D avatar presentation (VRM renderer, expression, lip sync)
zara-discord 0.3.0 service Talk to Zara through Discord with access controls, bare mentions, and spontaneous replies
zara-persona 0.1.0 service Operator-owned persona context with optional SWI-Prolog
zara-starintel-server 0.1.0 service Use every HTTP API operation allowed by a StarIntel Server credential

Registry

plugins.json is the single source of truth for what this repository ships. It lists every published plugin with the metadata downstream clients need to render a catalog, resolve a download, and verify compatibility:

Field Meaning
schema_version Registry schema version consumers implement
plugins[].name Plugin name; matches Zara PluginMetadata naming rules
plugins[].version Published version, verified against the entrypoint source
plugins[].api_version Zara plugin API version the plugin targets ("1" today)
plugins[].plugin_type service (ServicePlugin) or tool (LangChain tool plugins)
plugins[].path Directory in this repository holding the plugin
plugins[].entrypoint Python entrypoint inside path (create_plugin() for services)
plugins[].docs Plugin README, relative to path
plugins[].install Ready-to-run install commands (tool and Nix)
plugins[].nix Nix flake/package references for Nix-based installs

Clients fetch the registry from the raw URL (registry_raw), render the catalog, and install by checking out this repository (or a Nix flake reference) and copying the plugin entrypoint into Zara's plugin search path (~/.zarathushtra/plugins by default; configurable through [modules].search_paths in Zara's config.toml).

The registry is validated on every change by scripts/validate-registry.py (also wired as a flake check), so entries can never drift from the plugin tree.

Install

Every plugin directory is self-contained. Example for zara-avatar:

# Bundled installer (copies plugin into ~/.zarathushtra/plugins, sets up renderer)
python3 plugins/zara-avatar/tools/zara-avatar install

# Or via Nix
nix run github:lost-rob0t/zara-plugins#zara-avatar -- install

Per-plugin details live in each plugin's README.md. For example, install the Discord service plugin with:

nix run github:lost-rob0t/zara-plugins#zara-discord -- install

Package-only bridge/context plugins keep runtime connection state outside the Nix store:

nix build github:lost-rob0t/zara-plugins#zara-agent-zero
nix build github:lost-rob0t/zara-plugins#zara-persona

Flake

This repository is a Nix flake. Every registered plugin is exposed automatically as a package, with install apps and checks:

nix flake show github:lost-rob0t/zara-plugins
nix build github:lost-rob0t/zara-plugins#zara-agent-zero # Agent Zero bridge
nix build github:lost-rob0t/zara-plugins#zara-avatar     # plugin package
nix build github:lost-rob0t/zara-plugins#zara-discord    # Discord plugin package
nix build github:lost-rob0t/zara-plugins#zara-persona    # persona context plugin
nix build github:lost-rob0t/zara-plugins#zara-starintel-server # StarIntel API plugin
nix build github:lost-rob0t/zara-plugins#zara-plugins    # aggregate of all plugins
nix run github:lost-rob0t/zara-plugins#zara-avatar -- install
nix flake check github:lost-rob0t/zara-plugins           # registry + plugin test suites

Packages install to share/zara/plugins/<name>/ and expose the plugin's CLI (when it ships one) on bin/<name>.

Publish a plugin

  1. Open an issue describing the plugin: name, what it does, entrypoint layout, and (for service plugins) its Zara plugin API version.
  2. A maintainer (or agent) reviews it against the publish-plugin skill: self-contained layout, tests, no secrets, license compatibility, registry entry.
  3. The plugin lands under plugins/<name>/ with an entry in plugins.json, and scripts/validate-registry.py plus the flake checks must pass.

Plugin requirements:

  • one directory per plugin: plugins/<name>/ with the Python entrypoint, a README.md, and tests;
  • service plugins expose create_plugin() returning a zara.plugins.ServicePlugin with matching PluginMetadata;
  • tool plugins expose register_tools()/register_skills() returning LangChain BaseTool instances;
  • stdlib-only Python where possible; any dependency must be stated in the issue and installable through the flake;
  • GPL-3.0-or-later compatible licensing.

For agents

Agents working in this repository read AGENTS.md first; repo skills live under skills/:

License

GPL-3.0-or-later. Each plugin states its own license in the registry and its README.