Skip to content

Repository files navigation

Flowra

Code-first, AI-native workflow automation engine in Go

Define LLM-powered automation pipelines as a single YAML file. Run them as one self-hosted binary. An open-source, developer-first alternative to n8n / Zapier / Make — built for wiring Claude & GPT into real workflows.

Go Reference Go Report Card CI License: MIT


flowra lets you describe an AI workflow — fetch data → ask an LLM → transform → notify — declaratively, then run it anywhere a single static binary runs. No nodes-in-a-browser, no SaaS lock-in, no Node runtime. Just Go, your YAML, and your API keys.

name: hello
steps:
  - id: ask
    type: llm
    config:
      provider: anthropic
      model: claude-opus-4-8
      prompt: "Give me one surprising fact about {{ .vars.topic }}."
  - id: show
    type: print
    config:
      message: "💡 {{ .ask.text }}"
$ flowra run examples/hello.yaml
▶ flowra: running "hello" (2 steps)
  ✓ [llm] ask (1.2s)
💡 Go's mascot, the Gopher, is released under a Creative Commons license — so you can legally remix it.
✔ flowra: done

Why Flowra?

The AI automation space is dominated by drag-and-drop SaaS tools. They're great until you want version control, code review, CI, secrets management, and self-hosting — i.e. until an engineer owns the workflow. Flowra is that engineer's tool:

  • 🧩 Workflows as code — YAML you can diff, review, and check into git. No proprietary export format.
  • 🤖 AI-native — first-class llm nodes for Anthropic Claude (official Go SDK) and OpenAI, with templated prompts, system prompts, structured token usage, and optional extended thinking.
  • 🐍 Go core + Python nodes — heavy data work (parsing, ETL, ML glue) drops into a python node; the fast, single-binary engine is Go.
  • 📦 One binary, zero runtimego install and ship. Self-host on a box, a container, or a cron job.
  • 🔌 Composable nodes — chain http, llm, transform, python, and print; pass data between steps with Go templates ({{ .stepID.field }}).

How it compares

Flowra n8n Zapier / Make Airflow
Workflows as code (git-native) ✅ YAML ⚠️ JSON export ✅ Python
AI / LLM as a first-class node ⚠️ add-on ⚠️ add-on
Self-hosted single binary ✅ Go ⚠️ Node + DB ❌ SaaS ❌ heavy
Runtime dependencies none Node.js Python + scheduler
Best for developers low-code teams non-technical data engineers

Flowra isn't trying to replace a full DAG scheduler or a no-code studio — it's the missing developer-grade glue for AI workflows.

Install

go install github.com/adam-eques/flowra@latest

Or build from source:

git clone https://github.com/adam-eques/flowra
cd flowra
go mod tidy          # resolves the Anthropic SDK + yaml deps
go build -o flowra .

Quickstart

export ANTHROPIC_API_KEY=sk-ant-...      # for Claude nodes
# export OPENAI_API_KEY=sk-...           # for OpenAI nodes

flowra run examples/hello.yaml
flowra run examples/enrich-and-notify.yaml --set user_id=5
flowra run examples/data-pipeline.yaml   # Go engine + Python node + Claude

Override any workflow variable from the CLI with --set key=value.

Node types

Type What it does Key config
llm Call Claude or GPT provider, model, system, prompt, max_tokens, thinking
http Make an HTTP request method, url, headers, body
python Run a Python script (JSON in/out) python, file or code, input
transform Reshape data with a template template
print Write to stdout message

Every step's result is addressable by later steps as {{ .<stepID>.<field> }}; workflow variables live under {{ .vars.* }}.

How it works

flowchart LR
    Y[workflow.yaml] --> E[Flowra engine]
    E --> S1[http]
    S1 --> S2[llm · Claude / GPT]
    S2 --> S3[python]
    S3 --> S4[transform]
    S4 --> S5[print / webhook]
    classDef n fill:#1e293b,stroke:#38bdf8,color:#e2e8f0;
    class S1,S2,S3,S4,S5 n;
Loading

The engine loads the workflow, runs each step in order, and threads every step's output through a shared, template-addressable context. Adding a node type is one engine.Register("name", fn) call — see internal/nodes/.

Roadmap

  • DAG execution with parallel branches and depends_on
  • Triggers: webhook (HTTP server) and schedule (cron)
  • router / conditional nodes
  • Built-in connectors (Slack, Postgres, S3, Sheets)
  • Structured-output (JSON-schema) LLM nodes
  • Retries, timeouts, and per-step error policies

Want one of these? Open an issue or send a PR — see CONTRIBUTING.

Contributing

Contributions welcome! Good first issues: new node types, connectors, and examples. See CONTRIBUTING.md.

License

MIT © adam-eques

About

Flowra is a code-first, self-hostable workflow automation engine in Go. Define LLM-powered pipelines as a single YAML file and run them as one static binary — an open-source, developer-first alternative to n8n, Zapier, and Make.

Resources

Contributing

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages