Plugins

Building Flowly plugins

Extend Flowly with custom tools, lifecycle hooks, slash commands, and skills — without modifying the core. A plugin is a small directory with two files: a manifest and an entry point.

What plugins do

Plugins offer four primitives. You can use any combination — a plugin may register a single tool or wire up all four.

Tools

New abilities the agent can invoke. Fetch data from your internal API, run a custom analysis, integrate with a third-party service.

Hooks

Background behaviors invisible to the agent. Audit logs, automatic cleanup, policy enforcement, context injection — fire on tool calls, LLM calls, sessions, gateway dispatches.

Slash commands

Manual user controls. Type /your-command in any channel (Telegram, Web, Desktop) and your handler runs without invoking the LLM.

Skills

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:

GoalUse
Give the agent a new capability it can decide to invokeregister_tool
Run something automatically before/after every tool call, LLM call, or sessionregister_hook
Let the user trigger something with /foo from any channelregister_command
Ship instructions the agent loads on demandregister_skill
Plugin or core integration?
Mainstream integrations (Linear, Trello, Gmail, Google Workspace) live in Flowly's core — they ship with every install. Plugins are the right fit for niche, opt-in, company-specific, or experimental capabilities, and for background hooks like the bundled 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.

Install only what you trust
Treat plugins like any other dependency. Read the source before installing, especially for plugins that declare network or filesystem hooks. When you publish your own plugin, declare its capabilities honestly in the manifest so users can make informed decisions.

Next steps