Skip to content
Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

7,792 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

WolfHarness

WolfHarness

Tests codecov Docs License

PydanticAI-based multi-agent orchestration framework β€” define heterogeneous agents in one YAML file, compose them into teams and workflows, and expose them through ACP, OpenCode, MCP, and AG-UI protocols.

Documentation Β· Getting Started Β· API Reference


Why WolfHarness?

With raw frameworks, you write glue code for every agent pair β€” at 1Γ— speed.
With WolfHarness, you define agents once in YAML and use them everywhere β€” at 10Γ—.

1. πŸ”Œ One config, many protocols

Define your agents once in YAML. Then expose them through any protocol β€” ACP for IDEs, OpenCode for agentic TUI, MCP for tool exposure, or AG-UI for web frontends. No glue code, no duplication.

# agents.yml β€” single source of truth
agents:
  coordinator:
    type: native
    model: openai:gpt-4o
    tools:
      - type: subagent  # Can delegate to all other agents
    system_prompt: "Coordinate tasks between available agents."

  goose:
    type: acp
    provider: goose
    description: "Goose for file operations"
# Serve the same config through any protocol
wolfharness serve-acp agents.yml      # Zed, Toad, ACP clients
wolfharness serve-opencode agents.yml # OpenCode TUI/Desktop
wolfharness serve-mcp agents.yml      # MCP tools for other agents

2. 🧩 Multi-agent orchestration built in

Agents form teams (parallel), chains (sequential), or complex workflows β€” all from YAML.

teams:
  review_pipeline:
    mode: sequential
    members: [analyzer, reviewer, formatter]

  parallel_coders:
    mode: parallel
    members: [claude, goose]
async with AgentPool("agents.yml") as pool:
    # Parallel execution
    results = await (analyzer & reviewer).run("Review this code")
    # Sequential pipeline
    result = await (analyzer | reviewer | formatter).run("Process this")

3. 🎯 Rich YAML configuration

Everything is configurable β€” models, tools, MCP servers, knowledge sources, triggers, connections, storage:

agents:
  analyzer:
    type: native
    model:
      type: fallback
      models: [openai:gpt-4o, anthropic:claude-sonnet-4-0]
    tools:
      - type: subagent
      - type: resource_access
    mcp_servers:
      - "uvx mcp-server-filesystem"
    knowledge:
      paths: ["docs/**/*.md"]
    connections:
      - type: node
        name: reporter
        filter_condition:
          type: word_match
          words: [error, warning]

Architecture

WolfHarness Architecture

Key Features

Category Features
Orchestration Teams (parallel), chains (sequential), inter-agent delegation, event-driven triggers
Protocols ACP, OpenCode, MCP, AG-UI, OpenAI API-compatible β€” one config, all protocols
Configuration YAML-based agent definition, fallback models, tool registration, MCP server integration
Skills Expose SKILLS.md files as slash commands across all protocols
Structured Output Inline Pydantic schemas or Python types for response validation
Storage & Analytics Configurable providers (SQLite, PostgreSQL) for interaction tracking and stats
File Abstraction UPath-backed operations on local, S3, SSH, Docker filesystems
Streaming TTS Voice output support for all agents
Observability Logfire instrumentation on critical paths (RunLoop, Turn, delegation, protocol entry points)

Supported Models

WolfHarness is built on PydanticAI and supports all its model providers:

Provider Models
OpenAI GPT-4o, GPT-4o-mini, o1, o3, etc.
Anthropic Claude Sonnet 4, Claude Opus 4, Claude Haiku 3.5, etc.
Google Gemini 2.5 Pro, Gemini 2.5 Flash, etc.
DeepSeek DeepSeek V4, DeepSeek R1, etc.
Mistral Mistral Large, Mistral Small, etc.
Groq Llama, Mixtral, etc. (fast inference)
OpenAI-compatible Any OpenAI-protocol endpoint (vLLM, Ollama, Azure, etc.)

All models support fallback chains β€” configure a primary and fallback, WolfHarness handles the failover:

model:
  type: fallback
  models: [openai:gpt-4o, anthropic:claude-sonnet-4-0]

Quick Start

Installation

# Recommended β€” uv
uv tool install wolfharness

# Or pip
pip install wolfharness

Minimal config & run

# agents.yml
agents:
  assistant:
    type: native
    model: openai:gpt-4o
    system_prompt: "You are a helpful assistant."
wolfharness run assistant "Hello!"

Start a server

# ACP server β€” for Zed, Toad, and other ACP clients
wolfharness serve-acp agents.yml

# OpenCode server β€” for OpenCode TUI/Desktop
wolfharness serve-opencode agents.yml

# MCP server β€” expose tools to other agents
wolfharness serve-mcp agents.yml

Programmatic Usage

from wolfharness import AgentPool
from pathlib import Path

async with AgentPool("agents.yml") as pool:
    agent = pool.get_agent("assistant")

    # Simple run
    result = await agent.run("Hello")

    # Streaming
    async for event in agent.run_stream("Tell me a story"):
        print(event)

    # Multi-modal
    result = await agent.run("Describe this", Path("image.jpg"))

CLI Reference

wolfharness run <name> "prompt"              # Single run
wolfharness serve-acp <config.yml>           # ACP server
wolfharness serve-opencode <config.yml>      # OpenCode server
wolfharness serve-mcp <config.yml>           # MCP server
wolfharness serve-agui <config.yml>          # AG-UI server
wolfharness serve-api <config.yml>           # OpenAI-compatible API
wolfharness watch --config <agents.yml>      # React to triggers
wolfharness history stats --group-by model   # View analytics
wolfharness task <agent_name> "description"  # Create a background task

Roadmap

Status Feature
βœ… v2.9.5 β€” Multi-protocol server (ACP, OpenCode, MCP, AG-UI, OpenAI API)
βœ… YAML-based agent configuration with fallback models
βœ… Teams (parallel) & chains (sequential) orchestration
βœ… Skill commands across all protocols
βœ… Storage & analytics (SQLite, PostgreSQL)
βœ… MCP server integration for agents
πŸ”„ Enhanced tool confirmation UI in ACP
πŸ”„ Remote filesystem abstraction (UPath)
πŸ“‹ Team-mode (dynamic LLM-driven team formation)
πŸ“‹ Agent evaluation & benchmarking framework
πŸ“‹ Lifecycle hooks system (M2)
πŸ“‹ Capability discovery protocol (M3)

Development

Setup

git clone https://github.com/wolf1069b/agentpool
cd agentpool
uv sync --all-extras

Commands

uv run pytest                           # Run tests
uv run pytest -m unit                   # Unit tests only
uv run ruff check src/                  # Lint
uv run ruff format src/                 # Format
uv run --no-group docs mypy src/        # Type check
duty lint                               # All checks

Workflow

This project uses OpenSpec for all significant changes:

/opsx:explore   β†’ Investigate problems, map codebase
/opsx:propose   β†’ Create proposal with design + specs + tasks
/opsx:apply     β†’ Implement tasks
/opsx:archive   β†’ Archive completed change

See AGENTS.md for full development setup, code style, and testing conventions. See CONTRIBUTING.md for contribution guidelines.

Documentation

Full docs, tutorials, and API reference at leoyzen.github.io/wolfharness.

Contributors

Thanks to everyone who has contributed to WolfHarness!

Contributors

Key contributors: Philipp Temminghoff (original author), Leoyzen (maintainer), Million, yankaifeng, tasia, and the broader iroot-llm team.

Citation

If you use WolfHarness in your research or project, please cite:

@software{wolfharness2025,
  author  = {{WolfHarness Contributors}},
  title   = {WolfHarness: PydanticAI-based Multi-Agent Orchestration Framework},
  year    = {2025},
  url     = {https://github.com/wolf1069b/agentpool},
  license = {MIT}
}

Migrating from AgentPool

This project was renamed from AgentPool to WolfHarness (v2.10+). Backward-compatible shims are in place to ease the transition:

Old New Status
import agentpool import wolfharness βœ… Shim with deprecation warning
import agentpool_cli import wolfharness_cli βœ… Shim with deprecation warning
import agentpool_config import wolfharness_config βœ… Shim with deprecation warning
import agentpool_server import wolfharness_server βœ… Shim with deprecation warning
import agentpool_storage import wolfharness_storage βœ… Shim with deprecation warning
import agentpool_toolsets import wolfharness_toolsets βœ… Shim with deprecation warning
agentpool run ... wolfharness run ... βœ… CLI alias with deprecation warning
AGENTPOOL_CONFIG_DIR env var WOLFHARNESS_CONFIG_DIR ⚠️ Still supported, migrate when convenient

The shims emit a DeprecationWarning and will be removed in a future release. Please update your imports and scripts accordingly.

License

MIT β€” see LICENSE.


Built on Β  PydanticAI Β· ACP Β· OpenCode Β· MCP

WolfHarness is a fork of phil65/agentpool by Philipp Temminghoff. Grateful for the foundational work and ongoing inspiration from the upstream project.

About

A unified agent orchestration hub that lets you configure and manage multiple AI agents (native, ACP, AGUI, Claude Code) via YAML, and exposes them through standardized protocols (ACP/OpenCode Server).

Resources

Contributing

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages