Skip to content

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

CategoryCountExamples
Control Flow5Router, Iterator, Aggregator, Subflow, Enumeration
Data & Utilities20+Var, Template, Base64, URL, Regex, Array, JSON, CSV
HTTP & Network2cURL, Wget
AI & Machine Learning5Chat, Embeddings, Structured Extract, AI Prompt, MCP Agent Loop
Storage8+Read, Write, Move, Delete, Exists, List, TempDir, S3, GCS, Drive
Database9+Query, Insert, Update, Delete, Upsert, Search, Raw, F8DB
Email & Messaging4Send Mail (SMTP), IMAP, POP3, Slack
Document Processing8+PDF Extract, PDF Merge, PDF Split, HTML→PDF, OCR, ImageMagick, DOCX
Cryptography3AES-GCM, HMAC-SHA256, JWT
Generators5UUID, CUID2, Random, Now, Currency Rates
Key-Value Store3KV Get, KV Set, KV Append
External Integrations20+Clio, QuickBooks, Bexio, Microsoft Graph, Google Sheets
Debug & Testing8Args log, Success, Failed, Sleep, Repeat, WatchDog, Code exec

Finding a Module

Browse modules via the API:

Terminal window
GET /api/apps
GET /api/apps?category=ai
GET /api/apps?search=pdf

Or generate the full catalog as CSV:

Terminal window
go run cmd/modulescsv/main.go

Module 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.