Module Overview
Module Overview
flow8 includes 135+ built-in modules across 13 categories. Every module is auto-discovered at startup and available in flow definitions via its appId.
Module Categories
| Category | Count | Examples |
|---|---|---|
| Control Flow | 5 | Router, Iterator, Aggregator, Subflow, Enumeration |
| Data & Utilities | 20+ | Var, Template, Base64, URL, Regex, Array, JSON, CSV |
| HTTP & Network | 2 | cURL, Wget |
| AI & Machine Learning | 5 | Chat, Embeddings, Structured Extract, AI Prompt, MCP Agent Loop |
| Storage | 8+ | Read, Write, Move, Delete, Exists, List, TempDir, S3, GCS, Drive |
| Database | 9+ | Query, Insert, Update, Delete, Upsert, Search, Raw, F8DB |
| Email & Messaging | 4 | Send Mail (SMTP), IMAP, POP3, Slack |
| Document Processing | 8+ | PDF Extract, PDF Merge, PDF Split, HTML→PDF, OCR, ImageMagick, DOCX |
| Cryptography | 3 | AES-GCM, HMAC-SHA256, JWT |
| Generators | 5 | UUID, CUID2, Random, Now, Currency Rates |
| Key-Value Store | 3 | KV Get, KV Set, KV Append |
| External Integrations | 20+ | Clio, QuickBooks, Bexio, Microsoft Graph, Google Sheets |
| Debug & Testing | 8 | Args log, Success, Failed, Sleep, Repeat, WatchDog, Code exec |
Finding a Module
Browse modules via the API:
GET /api/appsGET /api/apps?category=aiGET /api/apps?search=pdfOr generate the full catalog as CSV:
go run cmd/modulescsv/main.goModule Structure in a Flowlet
Every module is referenced in a flowlet via its appId:
{ "appId": "curl", "ref": "myStep", "args": { "method": "GET", "url": "https://api.example.com/data" }}Module Versioning
Modules have a version number. When a module’s argument schema changes, existing flowlets referencing the old version are automatically migrated by the ModuleMigrationService at startup. The moduleVersion field in each flowlet records which schema version it was last migrated to.
Module Output
Every module returns an out map accessible in downstream expressions via the step’s ref name:
{{ $prev.<ref>.<outputField> }}Check the OutExample() of each module (visible in the API response for /api/apps/{id}) to see what fields are returned.