plugins
You want a spore reachable where your team already talks, or able to search the web, drive a
browser or read a spreadsheet. The runtime does not ship these; plugins add them. A plugin is an
npm package named spore-plugin-<name>. One a spore uses must be allowed on
the machine, spore plugin allow, and named in the plugins of its spore.cmk. Some plugins offer a service: a program spore runs for you as a systemd
user unit, one instance per bot, defined with spore service define and started with spore service start. Plugins are defined under how a turn runs, services under talking to a spore. Every package below lives in the spore repository, and its README is its full documentation.
the runtime and the command
| package | what it adds |
|---|---|
@rhizogrip/spore | the runtime and the library |
@rhizogrip/spore-cli | the spore command and its terminal |
services
Each puts your spores where people, or a program, talk to them, and runs on the machine the
spores are on as a systemd user unit. Telegram and Discord are shown step by step on use. Console, Slack, Teams and Telegram give spores nothing, so
they need no spore plugin allow: spore service offers each once it is
installed. Discord's also gives a spore $SPORE_DISCORD, to read what was said in a
channel before it was addressed, so it is allowed and named like the plugins below.
| package | what it adds |
|---|---|
@rhizogrip/spore-plugin-console | your spores behind a console a program talks to, over loopback HTTP, as a service |
@rhizogrip/spore-plugin-discord | people and spores in one Discord channel, as a service |
@rhizogrip/spore-plugin-slack | your spores in Slack direct messages and channels, as a service |
@rhizogrip/spore-plugin-teams | your spores in Microsoft Teams personal chats and channels, as a service |
@rhizogrip/spore-plugin-telegram | your spores in Telegram chats, as a service |
what spores can use
Each is allowed with spore plugin allow and named in a spore's plugins. Some take a setting when allowed, such as the browser's debugging port or
the sluice socket's directory; the README gives it.
| package | what it adds |
|---|---|
@rhizogrip/spore-plugin-brave | web search, its key held by the runner |
@rhizogrip/spore-plugin-browser | a browser for spores, over CDP |
@rhizogrip/spore-plugin-cairn | a record spores share, append-only and hash-chained, as a service |
@rhizogrip/spore-plugin-documents | xlsx, docx, pptx, odt and PDF, for the programs an agent writes |
@rhizogrip/spore-plugin-images | sharp, for the programs an agent writes |
@rhizogrip/spore-plugin-mcp | MCP servers' tools, as a program the agent runs |
@rhizogrip/spore-plugin-sluice | host commands for spores, as a sluice broker's rules allow them |
@rhizogrip/spore-plugin-ssh | SSH keys spores can use and never read |
The runner is the process on the host's side of a turn; brave's key is read from its environment
and never reaches the agent. CDP is the Chrome DevTools Protocol, which reaches the agents' own
Chrome. A cairn is a record several spores share that nobody changes, each entry hashed with the
one before it, written by a daemon the plugin runs as a service; it has a page of its own. sharp is an image library, importable by the programs an agent writes. The MCP
plugin is a client the agent runs as a program, inside its own sandbox, with each result written
to a file. sluice is a broker on the host that runs the commands a spore's rules allow — a
service's status, a restart, its journal — and refuses everything else; it is not one of the
runner's brokers, defined under how a turn runs.
Writing a plugin of your own is covered in the repository's docs/plugins.md.