Skip to main content

howler-agents-core

Core Python library for Group-Evolving Agents (GEA) -- an evolutionary framework for open-ended self-improvement via experience sharing (arXiv:2602.04837).

This package implements the full GEA algorithm: agent pool management, performance-novelty parent selection, shared experience aggregation, group reproduction via meta-LLM, and probe-based capability characterization. It can be used standalone or as the engine behind howler-agents-service.

Installation

pip install howler-agents-core

Optional dependencies

For production use with Postgres (experience store + pgvector KNN) and Redis (hot cache):

pip install howler-agents-core[postgres]   # SQLAlchemy + asyncpg + pgvector
pip install howler-agents-core[redis]       # redis with hiredis
pip install howler-agents-core[all]         # both

Quick Usage

import asyncio
import uuid

from howler_agents import HowlerConfig, EvolutionLoop
from howler_agents.agents.base import Agent, AgentConfig, FrameworkPatch, TaskResult
from howler_agents.agents.pool import AgentPool
from howler_agents.evolution.reproducer import GroupReproducer
from howler_agents.experience.pool import SharedExperiencePool
from howler_agents.experience.store.memory import InMemoryStore
from howler_agents.llm.router import LLMRouter
from howler_agents.probes.evaluator import ProbeEvaluator
from howler_agents.probes.registry import ProbeRegistry
from howler_agents.selection.criterion import PerformanceNoveltySelector


class MyAgent(Agent):
    """Implement your agent by subclassing Agent."""

    async def run_task(self, task: dict) -> TaskResult:
        # Your task execution logic here
        return TaskResult(success=True, score=0.8, output="done")

    async def apply_patch(self, patch: FrameworkPatch) -> None:
        self.patches.append(patch)


async def main() -> None:
    config = HowlerConfig(
        population_size=10,
        group_size=3,
        num_iterations=5,
        alpha=0.5,
        num_probes=20,
    )

    store = InMemoryStore()
    experience = SharedExperiencePool(store)
    llm = LLMRouter(config)
    selector = PerformanceNoveltySelector(alpha=config.alpha)
    reproducer = GroupReproducer(llm, experience, config)
    registry = ProbeRegistry()
    registry.register_default_probes(num_probes=config.num_probes)
    probes = ProbeEvaluator(registry)

    pool = AgentPool()
    for _ in range(config.population_size):
        pool.add(MyAgent(AgentConfig(id=str(uuid.uuid4()))))

    loop = EvolutionLoop(config, pool, selector, reproducer, experience, probes)

    tasks = [{"description": "solve a coding problem", "type": "general"}]
    results = await loop.run("my-run", tasks)
    print(f"Best score: {results['best_score']:.3f}")


asyncio.run(main())

Core Modules

Module Description
howler_agents.agents Agent base class, AgentPool, FrameworkPatch
howler_agents.selection Performance scorer, KNN novelty estimator, combined criterion
howler_agents.experience Evolutionary traces, shared experience pool, pluggable stores
howler_agents.evolution Evolution directives, group reproducer, main evolution loop
howler_agents.probes Probe task interface, evaluator, registry
howler_agents.llm LiteLLM-backed router with role-based model dispatch
howler_agents.config HowlerConfig with all GEA parameters (K, M, alpha, iterations)

Configuration

HowlerConfig accepts all GEA parameters:

Parameter Default Description
population_size (K) 10 Total agents in population
group_size (M) 3 Agents per parent group
num_iterations 5 Evolution generations
alpha 0.5 Performance vs novelty weight (0=novelty, 1=performance)
num_probes 20 Probe tasks for capability vector
task_domain "general" Domain identifier (e.g., "swe-bench", "polyglot")
role_models Claude Sonnet defaults Per-role LLM model configuration

License

MIT

Metadata

Release files for howler-agents-core 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for howler-agents-core 0.4.0
File Size Uploaded
howler_agents_core-0.4.0.tar.gz 146.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for howler-agents-core 0.4.0
File Interpreter ABI Platform
howler_agents_core-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 293.7 kB

Release files / howler_agents_core-0.4.0.tar.gz

Download URL howler_agents_core-0.4.0.tar.gz
Size 146.3 kB
Tags Source
SHA-256 checksum
How to use checksums
74d1480bc88ffb06181054968b212c632212b6c68b2c73786abbf63d8060bfc4
BLAKE2b-256 checksum
How to use checksums
011c02b6971a35faf6eddce0aa1c6866dbc9f52b015f959161e3b6babd9a6cf5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / howler_agents_core-0.4.0-py3-none-any.whl

Download URL howler_agents_core-0.4.0-py3-none-any.whl
Size 147.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
02bfbed8fc9f9a43936654e96d4d0b9dd4cbe9edeb6b121061c10bcb44cd6f65
BLAKE2b-256 checksum
How to use checksums
99e05fb43f78b2b19fc2dba5e540dfdab75c1a1fd377ab4ad0d63790e118f210
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page