Skip to main content

Send prompts to multiple coding agents in parallel and compare results

Project description

AgentTester

⚠️ Experimental — This project is under active development. APIs, config format, and CLI flags may change without notice.

Send a single prompt to multiple coding agents running in parallel and compare the results. Each agent works in its own git worktree on a separate branch so they never interfere with each other.

Install

uv pip install -e ".[dev]"

Quick Start

# List built-in agents
agenttester agents

# Run two agents on the same prompt
agenttester run "Add unit tests for the auth module" --agents claude,aider

# Use a prompt file
agenttester run --prompt-file task.md --agents claude,codex,aider

# Keep worktrees for manual inspection
agenttester run "Refactor logging" --agents claude,aider --keep-worktrees

How It Works

  1. You provide a prompt and select agents
  2. AgentTester creates a git worktree + branch for each agent from the current HEAD
  3. All agents run concurrently (up to 5), each in its own worktree
  4. Agent output streams to the terminal with colored prefixes
  5. A markdown comparison report is generated with diff stats and timing
  6. Worktrees are cleaned up (branches are preserved for git diff)

Branches are named agenttester/<run-id>/<agent-name> so you can compare results:

git diff agenttester/a3f2c1d0/claude agenttester/a3f2c1d0/aider

Configuration

Copy config.example.yaml to agenttester.yaml in your target repo to customize agents. Built-in presets are available for claude, aider, and codex.

Command Placeholders

  • {prompt} — replaced with the shell-escaped prompt text
  • {prompt_file} — replaced with a path to a temp file containing the prompt
  • If neither placeholder is present, the prompt is piped to the agent via stdin

Agent Settings

Field Description Default
command Shell command template (required)
commit_style auto (agent commits) or manual (agenttester commits) auto
timeout Max seconds before the agent is killed 600
env Extra environment variables (key-value map) {}

Interactive Model REPL

For comparing responses from vLLM model servers interactively, with persistent conversation history within a session:

agenttester repl                        # auto-discovers agenttester.yaml
agenttester repl --config custom.yaml   # explicit config path

The REPL discovers any agent in your config whose command uses query_model.py, fans out each prompt to all of them in parallel, and maintains separate conversation history per model. Use /reset to clear history or exit to quit.

See config.example.yaml for example vLLM agent entries.

Development

uv pip install -e ".[dev]"
ruff check src/
ruff format src/
pytest

Docker

# Run against the current directory
docker compose run --rm agenttester run "Fix the bug" --agents claude

# Run against a different repo
REPO_PATH=/path/to/repo docker compose run --rm agenttester run "Add tests" --agents claude,aider

Library Usage

import asyncio
from pathlib import Path
from rich.console import Console
from agenttester import Orchestrator, load_config

async def main():
    agents = load_config()
    selected = [agents["claude"], agents["aider"]]
    orch = Orchestrator(Path(".").resolve(), Console())
    results = await orch.run("Add unit tests", selected)
    for r in results:
        print(f"{r.agent_name}: exit={r.exit_code} duration={r.duration:.1f}s")

asyncio.run(main())

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

agenttester-0.3.0.tar.gz (44.7 kB view details)

Uploaded Source

Built Distribution

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

agenttester-0.3.0-py3-none-any.whl (19.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: agenttester-0.3.0.tar.gz
  • Upload date:
  • Size: 44.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for agenttester-0.3.0.tar.gz
Algorithm Hash digest
SHA256 0e0e1196743090ec2ffefda2983c282589fe1b25f4d39daa1f195c93b82b73de
MD5 21474db5c7352ae2a3a55ba5108ad43d
BLAKE2b-256 3d92ab834d62cf3fd9d59fe45e376a7ccd32dddd6b6257e1d65886fdc32df3e2

See more details on using hashes here.

Provenance

The following attestation bundles were made for agenttester-0.3.0.tar.gz:

Publisher: publish.yml on sroomberg/agenttester

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

  • Download URL: agenttester-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 19.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for agenttester-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 dd75bc78a57d2f710f6e0c4bf5f8f610e9fce0fd018adf0656a004267bb4dd59
MD5 c2a64e62a6f02547367f0fba9c4f1dfa
BLAKE2b-256 36e7eccf54b4385f02e58d75f81e52d8a080d217b06fb4c4c649e9d9ea20873d

See more details on using hashes here.

Provenance

The following attestation bundles were made for agenttester-0.3.0-py3-none-any.whl:

Publisher: publish.yml on sroomberg/agenttester

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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