Plugins
About 674 wordsAbout 2 min
A Spora plugin is a Composer package — installable via composer require and shipped to Packagist like any other PHP library — that contributes runtime capabilities to a Spora deployment:
- Tools callable by an agent (web search, image generation, calendar ops)
- Skills that ship on disk via
skillPaths()or are generated at runtime viaskillProviders() - Migrations that create plugin-owned database tables
- Admin UI (optional) — a Vue IIFE bundle that the host SPA mounts as a plugin app
A plugin does not contribute LLM providers. There is no drivers() hook — LLM drivers are configured per agent by the operator (config key, base_url, API key), not contributed by a plugin. See Concepts → LLM drivers.
For the local-development workflow (Composer path repos, the 3-terminal HMR walkthrough for plugins with a Vue frontend), see Local plugin development.
Authoring a plugin
If you want to write a plugin — either for your own Spora install or to publish on Packagist — start with the Plugin author guide. It walks you through the manifest, the entry-point class, tools, skills, migrations, admin UI, local development, the spora-plugin keyword, the PSR-4 entry-point quirk, testing, and SemVer versioning.
Plugins can also ship Agent templates — a
.json/.yamlfile that bundles a system prompt, tool activations, and auto-approve defaults into a one-click Agent. Declare them underagent-templates/and return the directory fromagentTemplatePaths(); see Agent templates.
Operator: install, update, uninstall
For the operator-facing HTTP API (POST /api/v1/plugins, DELETE /api/v1/plugins/{package}, PATCH /api/v1/plugins/{package}) — the Web UI uses these when the SPORA_PLUGIN_INSTALL_ENABLED feature flag is on — see the Install API page. The CLI equivalents (bin/spora plugin:install|uninstall|update) are always available, regardless of the flag.
Reference: shipped plugins
The 19 plugins currently in the Spora org:
| Plugin | What it adds |
|---|---|
| Skeleton | Minimal template — start here for new plugins |
| Tavily | AI-native web search (LLM-optimised answer + ranked sources) |
| Serper | Google Search via Serper.dev — 9 operations (web, images, news, video, scholar, shopping, patents, maps, places) |
| Staan | EU-hosted web search — fast ranked results, or the same search with relevance-scored page excerpts |
| Semantic Scholar | Academic paper search and metadata (free, no key) |
| World News | Top news by country and full-text news search |
| Weather | Current conditions, forecasts, astronomy (WeatherAPI.com) |
| Calendar | CalDAV read/write — iCloud, Fastmail, Nextcloud, Radicale, Baïkal |
| SMTP send + IMAP read — 11 operations | |
| MiniMax | MiniMax’s image, speech, music, video capabilities |
| Muse | Meta Muse vendor home — image generation / editing + speech-to-text on a single Meta Model API key |
| Zernio | Social-media scheduling and publishing across 15+ networks |
| Custom skills | Principal-scoped custom skills — author them by hand or ask the agent to, served through core’s skill tool |
| Media archive | Browse, filter, and download media generated by your agents — a filterable admin panel over MediaArchiveService |
| Memories | Persistent memory storage for agents and users — the Memories admin panel plus memory / global_memory tools |
| OpenAI Image | OpenAI-compatible image generation — configure the model, API URL, and key for OpenAI or any compatible provider |
| Team graph | A directed graph of the spawning relationships between this principal’s agents, rendered via Mermaid in the admin SPA |
| Typst | Compile Typst source to PDF/PNG/SVG via ext-typst — Inter OFL fonts and a writable per-principal example store |
| Word | Convert Markdown to Word (.docx), and read .docx back as Markdown for the LLM |
Note:
spora-plugin-mistralalso lives in the org but is archived — it is no longer maintained and is excluded from the count above.
For the architecture, manifest schema, and boot semantics that any plugin has to satisfy, see Concepts → Plugin system.