Building Flowly plugins
What plugins do
Plugins offer four primitives. You can use any combination — a plugin may register a single tool or wire up all four.
New abilities the agent can invoke. Fetch data from your internal API, run a custom analysis, integrate with a third-party service.
Background behaviors invisible to the agent. Audit logs, automatic cleanup, policy enforcement, context injection — fire on tool calls, LLM calls, sessions, gateway dispatches.
Manual user controls. Type /your-command in any channel (Telegram, Web, Desktop) and your handler runs without invoking the LLM.
Markdown templates the agent loads on demand via skill_view. Plugin skills don't bloat the system prompt — explicit-load only.
When to write a plugin
The right primitive depends on who triggers the behavior and how visible it should be to the agent:
| Goal | Use |
|---|---|
| Give the agent a new capability it can decide to invoke | register_tool |
| Run something automatically before/after every tool call, LLM call, or session | register_hook |
| Let the user trigger something with /foo from any channel | register_command |
| Ship instructions the agent loads on demand | register_skill |
disk-cleanup plugin.Security model
Plugins run as Python code with the same privileges as Flowly itself — they can read and write files, invoke shell commands, and reach external services. There is no sandbox.