Skip to main content

AgentHive Logo

AgentHive

PyPI version PyPI Downloads

AgentHive is a Python-based framework for managing distributed task execution with a focus on scalability and ease of use. It coordinates producers (tasks) and consumers (workers) in a high-availability setup, using Redis for messaging and PostgreSQL for persistent storage. With a powerful CLI, Docker Compose integration, and a web-based monitor, AgentHive is ideal for developers building extensible task-processing systems.

AgentHive Service

Key Features

  • Task Coordination: Producers submit tasks; workers process them dynamically.
  • High Availability: Coordinators manage workers and tasks with failover support.
  • Dynamic Workers: Workers declare task-handling capabilities, loaded at runtime.
  • Real-Time Monitoring: Web interface displays worker and task statuses via coordinator APIs.
  • Dockerized: Pre-configured services for easy deployment with Docker Compose.
  • CLI-Driven: Initialize projects and manage workers with simple agenthive commands.

Installation

Install AgentHive from PyPI to use the CLI:

pip install agenthive

Quick Start

  1. Initialize a Project Create a new project with the agenthive init command:

    agenthive init my-project
    cd my-project
    
  2. Run the System Start all services (Redis, PostgreSQL, coordinators, workers, monitor) using Docker Compose:

    docker-compose -f docker/docker-compose.yml up --build
    
  3. Customize Workers Add custom workers to src/workers/ and rebuild the services:

    # Example: Add a new worker manually or extend CLI in the future
    echo "print('Custom worker loaded')" > src/workers/custom_worker.py
    docker-compose -f docker/docker-compose.yml up --build
    

Project Structure

After initialization, your project looks like this:

my-project/
├── docker/
│   ├── coordinator/
│   │   └── Dockerfile
│   ├── monitor/
│   │   └── Dockerfile
│   ├── workers/
│   │   └── Dockerfile
│   ├── docker-compose.yml
│   ├── postgres/
│   │   └── init.sql
│   └── redis/
│       └── redis.conf
└── src/
    └── workers/
        ├── example_worker.py
        └── requirements/
            └── example_worker.txt
  • docker/: Contains Dockerfiles and Compose configuration.
  • src/workers/: Directory for custom worker implementations.

Architecture

  • Coordinators: Assign tasks via Redis, track states in PostgreSQL.
  • Workers: Fetch tasks from Redis, report heartbeats, execute custom logic.
  • Redis: Message broker for tasks and status updates.
  • PostgreSQL: Persistent storage for task and worker data.
  • Monitor: Web UI querying coordinator APIs for system insights.

Usage

For End Users

  • Initialize with agenthive init <project-name> and run with Docker Compose.
  • Dockerfiles use pip install agenthive by default, requiring a PyPI-published version.

For Developers

  • Use --agenthive-project-path to test local code:
    agenthive init my-project --agenthive-project-path /path/to/agenthive
    cd my-project
    docker-compose -f docker/docker-compose.yml up --build
    
  • This copies /path/to/agenthive/src/, setup.py, and requirements/ into the project, configuring Dockerfiles to use local code instead of PyPI.

Scaling Workers

  • To increase the number of worker instances without restarting existing services, use:

    docker compose -f docker/docker-compose.yml up -d --no-recreate --scale worker=2
    
  • This command will:

    • Start additional worker instances to reach the specified total (2 in this example)
    • Run in detached mode (-d)
    • Preserve existing containers (--no-recreate)
    • Only affect the worker service, leaving other services untouched
  • Alternatively, to scale workers while only targeting the worker service:

    docker compose -f docker/docker-compose.yml up -d --scale worker=2 worker
    
  • For permanent scaling, you can modify the replicas value in the docker-compose.yml file:

    worker:
      # other configuration...
      deploy:
        mode: replicated
        replicas: 2  # Change from 1 to desired number
    

Development Setup

  1. Clone and Install Locally

    git clone https://github.com/changyy/py-AgentHive.git
    cd py-AgentHive
    python3 -m venv venv
    source venv/bin/activate
    pip install -e .
    
  2. Test CLI

    agenthive init test-project --agenthive-project-path .
    cd test-project
    docker-compose -f docker/docker-compose.yml up --build
    
  3. Run Original Development Environment Use the local docker/ for core development:

    docker-compose -f docker/docker-compose.yml up --build
    

Worker Customization

Workers are Python modules in src/workers/. The worker service scans this directory dynamically at runtime. Example worker:

# src/workers/example_worker.py
from agenthive.core.worker import Worker
from typing import Dict, Any

class ExampleWorker(Worker):
    TASK_TYPES = ["example_task"]

    async def setup(self) -> None:
        print("ExampleWorker setting up...")

    async def process_task(self, task) -> Dict[str, Any]:
        print(f"Processing task: {task.data}")
        return {"result": "Task completed", "data": task.data}

Add dependencies in src/workers/requirements/<worker_name>.txt (e.g., requests==2.32.3).

Contributing

Fork the repo, create a feature branch, and submit a pull request to github.com/changyy/py-AgentHive.

License

MIT License. See the LICENSE file for details.

Release files for AgentHive 1.0.202506050705

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

Source distribution (sdist)

Source distribution for AgentHive 1.0.202506050705
File Size Uploaded
agenthive-1.0.202506050705.tar.gz 89.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for AgentHive 1.0.202506050705
File Interpreter ABI Platform
agenthive-1.0.202506050705-py3-none-any.whl Python 3 none any Details

Total release size: 197.8 kB

Release files / agenthive-1.0.202506050705.tar.gz

Download URL agenthive-1.0.202506050705.tar.gz
Size 89.7 kB
Tags Source
SHA-256 checksum
How to use checksums
823bc72929bce4c71ed76b75b48c33a0700c17966cb994ef350f256b426bc28a
BLAKE2b-256 checksum
How to use checksums
339cae13b90fbd2c54fb9c92cc4bc2affdd0be30b30285c5677a8d4e26a91d71
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 4, 2025.

Transparency log

Release files / agenthive-1.0.202506050705-py3-none-any.whl

Download URL agenthive-1.0.202506050705-py3-none-any.whl
Size 108.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6fade0cd2024b2cc2f7a143c43516183672b3c6fd947c7365256c99b3f1d1600
BLAKE2b-256 checksum
How to use checksums
478a74aa45f6a4b2e9d809b263fb3fccd2d3978a23c36243b18c854ace00ffed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 4, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

1.0.202506050705 This release

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