# Aflare

> Generate and execute terminal workflows using aflare. Use when the user wants to automate multi-step terminal tasks, chain commands, fetch URLs, process data, create reusable pipelines, or build CI/CD-like automation locally.

- Skill: `alib8b8/aflare-3` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add alib8b8/aflare-3`
- Raw SKILL.md: https://api.skillmd.com/api/skills/alib8b8/aflare-3/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- License: AGPL-3.0
- Author: alib8b8 (https://skillmd.com/u/alib8b8)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/alib8b8/aflare-3

---


## 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 list` shows 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

1. **Generate a workflow**: Describe the task in natural language
2. **Review the YAML**: The generated workflow is deterministic and editable
3. **Execute**: Run the workflow with progress tracking
4. **Chain outputs**: Use `{{step.<name>}}` (or `{{step.<N>}}`, 0-based index) to pass data between steps

### CLI Commands

```bash
# 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**
```yaml
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**
```yaml
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**
```yaml
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](nodes-reference.md)
- **Ready-to-use workflow examples**: see [examples.md](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
