Introduction for Developers
Introduction for Developers
flow8 is a workflow automation platform with a code-friendly architecture. As a developer you can build complex integrations, automate multi-step business processes, and embed AI into any workflow — without managing infrastructure for each integration.
The Programming Model
Think of flow8 in three layers:
Flows are directed acyclic graphs (DAGs) of execution steps. Each flow has a name, category, and an ordered set of flowlets (steps). Flows are stored as data in MongoDB — they are not code you deploy.
Modules are the executable units. flow8 ships 135+ built-in modules covering HTTP calls, AI, document processing, email, databases, and 15+ external service integrations. Each module takes typed arguments (which can be dynamic expressions) and returns typed output.
Plays are execution instances. Every time a flow runs, a play is created with its own state, arguments, and a complete log of every step’s input and output.
What You Can Build
- REST API integrations that chain multiple services in sequence or parallel
- AI pipelines that process documents, extract structured data, and route results
- Event-driven workflows triggered by webhooks, emails, or scheduled cron jobs
- Custom modules in Go when built-ins don’t cover your use case
- AI agent tools via the MCP (Model Context Protocol) integration
Key Concepts at a Glance
| Concept | What It Is |
|---|---|
| Flow | A reusable workflow definition (DAG of steps) |
| Flowlet | One step within a flow (a module invocation with args) |
| Play | One execution of a flow (has full input/output history) |
| Module | A unit of work (HTTP call, AI query, file operation, etc.) |
| Expression | A dynamic value in a flowlet’s args ({{ $prev.result }}) |
| KV Store | Scoped key-value state shared across executions |
| Channel | An HTTP/WebSocket/MCP endpoint that triggers flows |
| Component | A swappable runtime implementation (e.g., which AI provider to use) |
API Access
All platform operations are available via a REST API at http://host:4454/api/. Authentication is via session cookie or JWT Bearer token (API key). The full API reference is in this documentation tree.
Getting Help
- REST API: see the API Reference section
- Module behavior: see the Module Reference section
- Custom module development: see the Custom Modules section
- Real-time execution monitoring: use the WebSocket API