Catalog PyPI
Back to packageRELEASE DETAILS

0.2.4

PyPI

acp-agent

A CLI tool to browse, search, and run ACP agents

acpagentagent-client-protocol
Published20 Feb 2026
Direct dependencies14
Transitive dependenciesNot calculated

README

Version 0.2.4 documentation

ACP Agent CLI & SDK 🚀

PyPI version Python versions License: MIT

This project provides a friendly and intuitive CLI and SDK for the ACP Registry, enabling developers to quickly browse, search, run, and containerize ACP (Agent Client Protocol) agents.

Motivation 💡

The official ACP Registry provides an extensive list of agents. This project simplifies discovery and integration through three core pillars:

  • Interactive Discovery: Browse and fuzzy-search the entire registry directly from your terminal.
  • Seamless Execution: Run any agent locally with automatic environment setup, or integrate them into Python apps via the async SDK.
  • Production Deployment: Automatically generate optimized Containerfiles to run agents in isolated environments or CI/CD pipelines.

Usage 🚀

There are three ways to use acp-agent:

1. CLI Usage

We recommend using uv to manage and run this project.

# List all agents
uvx acp-agent list

# Search for agents
uvx acp-agent search opencode

# Run an agent locally
uvx acp-agent run opencode

# Run with a specific working directory, environment variables, and extra arguments
# Any arguments after the options are passed directly to the agent
uvx acp-agent run opencode --cwd ./my-project -e DEBUG=true -- --help

Example Search Output

Search Results for 'opencode'
┏━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ID       ┃ Name     ┃ Description                  ┃
┡━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ opencode │ OpenCode │ The open source coding agent │
└──────────┴──────────┴──────────────────────────────┘

2. SDK Usage

You can integrate acp-agent into your Python projects through ACPAgent.

import asyncio
from acp_agent import ACPAgent

async def main():
    agent = ACPAgent("opencode")

    # Run an agent and attach to its output (stdout/stderr)
    # This will automatically handle downloading and environment setup
    # returns the exit code of the agent
    exit_code = await agent.run(attach=True)
    print(f"Agent exited with code: {exit_code}")

if __name__ == "__main__":
    asyncio.run(main())

The same instance can also generate a Containerfile and provide config paths:

import asyncio
from pathlib import Path
from acp_agent import ACPAgent

async def main():
    agent = ACPAgent("opencode")

    # Generate Containerfile content for 'opencode'
    # This will inject the agent installation and CMD into your base image
    content = await agent.format_containerfile(containerfile="FROM python:3.12-slim")
    Path("Dockerfile").write_text(content)

    if config := agent.config:
        print(f"Config path: {config.config}")
        print(f"Credential path: {config.credential}")

if __name__ == "__main__":
    asyncio.run(main())

After starting your container, you can manually copy these files from your host to the container's expected locations (e.g., via docker cp) to fully replicate your host-side environment and authentication state within the isolated container.

License

MIT License

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 14

Native requirements
14 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
agent-client-protocol
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.12",
  "evaluation": "NOT_EVALUATED"
}
agent-client-protocol>=0.7.1runtime
aioshutil
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.12",
  "evaluation": "NOT_EVALUATED"
}
aioshutil>=1.6runtime
anyio
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.12",
  "evaluation": "NOT_EVALUATED"
}
anyio>=4.12.1runtime
attrs
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.12",
  "evaluation": "NOT_EVALUATED"
}
attrs>=25.4.0runtime
cyclopts
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.12",
  "evaluation": "NOT_EVALUATED"
}
cyclopts>=4.5.1runtime
httpx
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.12",
  "evaluation": "NOT_EVALUATED"
}
httpx>=0.28.1runtime
httpx-ws
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.12",
  "evaluation": "NOT_EVALUATED"
}
httpx-ws>=0.8.2runtime
jinja2
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.12",
  "evaluation": "NOT_EVALUATED"
}
jinja2>=3.1.6runtime
litestar
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.12",
  "evaluation": "NOT_EVALUATED"
}
litestar>=2.19.0runtime
loguru
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.12",
  "evaluation": "NOT_EVALUATED"
}
loguru>=0.7.3runtime
platformdirs
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.12",
  "evaluation": "NOT_EVALUATED"
}
platformdirs>=4.5.1runtime
pydantic
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.12",
  "evaluation": "NOT_EVALUATED"
}
pydantic>=2.12.5runtime
pydantic-settings
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.12",
  "evaluation": "NOT_EVALUATED"
}
pydantic-settings>=2.12.0runtime
rich
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.12",
  "evaluation": "NOT_EVALUATED"
}
rich>=14.3.2runtime

Distribution files

2 collected
acp_agent-0.2.4-py3-none-any.whl

bdist_wheel · 16.49 KB · Python py3

Source file
acp_agent-0.2.4.tar.gz

sdist · 11.12 KB · Python source

Source file

Repository

PENDING
observerw/acp-agent

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 18:22 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:e7910c22e116f53dc2c84833824813be1c0973b918db6251beefca3d602930cf

Other collected versions

View all collected versions →