Skip to main content

YAML-driven workflow engine for AI agents

Project description

Agent Workflows

YAML-driven workflow engine for AI agents.

Installation

# Install globally with uvx (recommended)
uvx siili-agent-workflows --help

# Or install with pip
pip install siili-agent-workflows

# Or install locally for development
cd packages/agent-workflows
uv sync

Quick Start

# Run a workflow by name
siili-agent-workflows my-workflow --param value

# List all available workflows
siili-agent-workflows --list

# Validate a workflow without running
siili-agent-workflows my-workflow --validate

# Show help
siili-agent-workflows --help

Workflow Discovery

Workflows are discovered from multiple locations (in order):

  1. Current directory: ./workflow-name.yml, ./workflow-name.yaml, etc.
  2. Local workflows dir: ./.agent_workflows/workflow-name.yml
  3. Global config: ~/.config/siili-agent-workflows/workflow-name.yml
  4. Bundled: Workflows shipped with the package

Supported extensions: .yml, .yaml, .agent-workflow.yml, .agent-workflow.yaml

Environment Variables

Environment files are loaded in order (later overrides earlier):

  1. ~/.config/siili-agent-workflows/.env (global)
  2. ./.env (current directory)
  3. --env-file <path> (explicit)

Workflow Format

Create my-workflow.yml:

name: my-workflow
env:
  API_KEY: ${{ env.MY_API_KEY }}

vars:
  project_name: my-project

jobs:
  setup:
    steps:
      - uses: terminal/run
        with:
          command: npm install

  generate:
    needs: setup
    steps:
      - uses: agents/claude_code
        with:
          prompt: "Create a README for ${{ vars.project_name }}"
          cwd: "."

  test:
    needs: generate
    steps:
      - uses: terminal/run
        with:
          command: npm test

CLI Options

Option Description
--list List available workflows
--validate Validate workflow without running
--env-file PATH Load environment from file
-w, --workspace DIR Set workspace directory
--set PLUGIN.KEY=VALUE Override step values
--var KEY=VALUE Set workflow variables
--dest PATH Shorthand for git/download.dest

You can also pass variables as positional args:

siili-agent-workflows apply-template --template agent --path ./my-agent

Built-in Plugins

Terminal

# Run shell commands
- uses: terminal/run
  with:
    command: "echo hello"
    shell: true              # optional, default true
    continue_on_error: false # optional
    timeout: 30              # optional, seconds

# Run scripts
- uses: terminal/script
  with:
    path: "./scripts/setup.sh"
    args: ["--verbose"]      # optional
    interpreter: "/bin/bash" # optional
    cwd: "."                 # optional

Git

# Clone/download from repository
- uses: git/download
  with:
    repo: "https://github.com/user/repo.git"
    ref: "main"              # optional branch/tag
    files:                   # optional, specific files/dirs
      - "templates/agent"
    dest: "./output"         # destination directory

# Push changes
- uses: git/push
  with:
    message: "chore: automated update"
    branch: "main"           # optional

Agents

# Claude Code agent (requires ANTHROPIC_API_KEY)
- uses: agents/claude_code
  with:
    prompt: "Implement feature X"
    cwd: "."                 # working directory

# General LLM agent (returns text response only)
- uses: agents/general
  with:
    prompt: "Analyze this code"
    system_prompt: "You are a code reviewer"  # optional
    output_var: analysis     # variable to store response

# Structured JSON response
- uses: agents/structured
  with:
    prompt: "Extract topics from this text: ..."
    schema:
      type: object
      properties:
        topics:
          type: array
          items:
            type: string
        summary:
          type: string
      required:
        - topics
        - summary
    output_var: extracted_data

Audio (Speech)

# Speech-to-text recording
- uses: audio/stt
  with:
    language: "en"           # optional
    output_var: "user_input" # variable to store result

# Text-to-speech
- uses: audio/tts
  with:
    text: "Hello, world!"
    voice: "alloy"           # optional
    output: "./output.mp3"   # optional

Variable Interpolation

Supports two syntaxes:

# GitHub Actions style
prompt: "${{ vars.name }} - ${{ env.API_KEY }}"

# Python format style
prompt: "{name} - {API_KEY}"

Custom Plugins

Create agent_workflows/plugins/my_namespace/my_plugin.py:

from typing import Any, Dict

async def execute(ctx: Dict[str, Any]) -> Dict[str, Any]:
    logger = ctx['logger']
    workspace = ctx['workspace']
    params = ctx.get('with', {})
    
    logger("Running my plugin...")
    
    # Do work...
    result = "some output"
    
    # Return values are available to subsequent steps
    return {"output": result}

Features

  • Parallel Execution: Jobs without dependencies run concurrently
  • DAG Support: Declare dependencies with needs:
  • Variable Interpolation: Use ${{ vars.x }} or {x} syntax
  • Environment Inheritance: Global → Job → Step
  • Run History: Track execution history in .agent-workflows/history/
  • Fail-fast: Stop on first error (configurable per step)

Development

cd packages/agent-workflows
uv sync --dev
uv run pytest tests/
uv run ruff check .
uv run ty check agent_workflows

License

MIT - Copyright (c) 2025 Siili Solutions Oyj

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

siili_agent_workflows-0.3.0.tar.gz (25.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

siili_agent_workflows-0.3.0-py3-none-any.whl (36.8 kB view details)

Uploaded Python 3

File details

Details for the file siili_agent_workflows-0.3.0.tar.gz.

File metadata

  • Download URL: siili_agent_workflows-0.3.0.tar.gz
  • Upload date:
  • Size: 25.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for siili_agent_workflows-0.3.0.tar.gz
Algorithm Hash digest
SHA256 cab12e28226fbd364b8cc216a3d3d2f57a3691328321553fbea431d448c7a62c
MD5 101aec7903b0095e1ab62e3106f3e113
BLAKE2b-256 e31f3d33643b9cd609ca1a24cafc12a6cf1608719291f5b41bff99279b1908e6

See more details on using hashes here.

File details

Details for the file siili_agent_workflows-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: siili_agent_workflows-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 36.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for siili_agent_workflows-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 97bcfd89f2584319e88ce4599cbf14e618e2472517261d9f093090a01818aed2
MD5 154b927555193f536d4b5293b49570f8
BLAKE2b-256 a45d9a95c7fe1c37de0a5b5513f0d2399a1c789c1676b927366b13561351fda5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page