Overview
aflare is an AI-powered terminal workflow engine that generates and executes multi-step automation pipelines from natural language descriptions. It supports a broad catalog of built-in agent nodes (run aflare list for the full set), including LLM providers, code analysis, file operations, web fetching, and system integrations. Workflows are defined as deterministic YAML files that can be version-controlled and reused.
Key features:
- Natural language to YAML workflow generation
- Built-in nodes covering LLM, fetch, execute, transform and more (
aflare listshows the full catalog) - MCP protocol support for external tool integration
- Security-hardened with SSRF protection, path traversal prevention, and resource limits
- On-device LLM inference support (1B-8B models)
Prerequisites
- aflare CLI installed (
go install github.com/alib8b8/aflare/cmd/aflare@latest) - Go 1.21+ or a pre-built binary
- Optional: Ollama for local LLM inference
Instructions
- Generate a workflow: Describe the task in natural language
- Review the YAML: The generated workflow is deterministic and editable
- Execute: Run the workflow with progress tracking
- Chain outputs: Use
{{step.<name>}}(or{{step.<N>}}, 0-based index) to pass data between steps
CLI Commands
# Generate a workflow from plain English
aflare create "fetch weather data and save to file"
# Run a workflow file
aflare run workflow.yaml
# List all available nodes
aflare list
# Validate a workflow without executing
aflare validate workflow.yaml
# Dry run (show steps without executing)
aflare --dry-run run workflow.yaml
# Safe mode (disables execute node)
aflare --safe-mode run workflow.yaml
# Register a named connector (database / files / notes)
aflare connector add my-notes --type notes --root ~/notes
# List / inspect / remove connectors
aflare connector list
aflare connector show my-notes
aflare connector remove my-notes
Available Nodes
Utility Nodes:
| Node | Description |
|---|---|
fetch_url |
Fetch content from a URL (SSRF protected) |
http_request |
Full HTTP client — any method, headers, body |
file_read |
Read file contents |
file_write |
Write content to a file |
execute |
Run shell commands (configurable allowlist) |
json_parse |
Extract fields from JSON using dot notation |
template_render |
Render Go templates with variables |
transform |
Transform text (uppercase, lowercase, trim, replace, regex) |
combine |
Merge multiple inputs into one |
notify |
Print or send notifications |
Connector-aware nodes: sql_query, file_read, file_write, files_list accept a connector param — reference a named connector (registered via aflare connector add) instead of inline DSNs/paths. Credentials stay out of workflow files; read-only by default; connector ceilings (max_rows / timeout / max_bytes) always apply.
LLM Nodes:
| Node | Provider |
|---|---|
ollama |
Local models via Ollama |
deepseek |
DeepSeek API |
openai |
OpenAI-compatible |
qwen |
Alibaba Qwen |
glm |
Zhipu GLM |
kimi |
Moonshot Kimi |
mistral |
Mistral AI |
yi |
01.AI Yi |
Control Nodes:
| Node | Description |
|---|---|
condition |
Conditional execution based on expression |
call |
Call another workflow file (nested) |
Output
The skill generates a YAML workflow file and optionally executes it. Output includes:
- Generated workflow YAML
- Execution progress and logs
- Final output from the last step
- Error details if any step fails
Examples
Example 1: Fetch and Save
name: fetch-and-save
description: Fetch data from API and save to file
steps:
- node: fetch_url
name: fetch
params:
url: "https://api.example.com/data"
- node: file_write
params:
path: "data.txt"
content: "{{step.fetch}}"
Example 2: Fetch, Parse, and Summarize
name: summarize-article
description: Fetch article and summarize with LLM
steps:
- node: fetch_url
name: fetch
params:
url: "https://example.com/article"
- node: ollama
name: summarize
params:
model: "llama3"
prompt: "Summarize: {{step.fetch}}"
- node: file_write
params:
path: "summary.md"
content: "{{step.summarize}}"
Example 3: Multi-source Aggregation
name: aggregate-sources
description: Fetch from multiple APIs and analyze
steps:
- parallel:
- node: fetch_url
params:
url: "https://api1.example.com"
- node: fetch_url
params:
url: "https://api2.example.com"
- node: combine
name: merged
params:
separator: "\n"
- node: ollama
params:
model: "llama3"
prompt: "Analyze: {{step.merged}}"
Resources
- Full node catalog & parameters: see nodes-reference.md
- Ready-to-use workflow examples: see examples.md
- GitHub: https://github.com/alib8b8/aflare
- Documentation: https://github.com/alib8b8/aflare/blob/main/README.md
- Issues: https://github.com/alib8b8/aflare/issues
- License: AGPL-3.0