Skip to main content

Agent Control Plane — SDK and CLI for governed agent execution with a local Docker stack.

Project description

ACP Control Plane — Python SDK + CLI

PyPI: acp-ai · Import: acp

One pip install gives you a local governance stack: intercept tool calls, evaluate your OPA/Rego rules, persist audit + agent registry in Postgres, and view everything in the dashboard.

Requires: Docker Desktop (Compose v2). All acp commands run in your terminal (Terminal.app, iTerm, or the IDE integrated terminal).


Install (terminal)

pip install acp-ai
acp doctor

First-time setup (terminal)

Run these in order from any directory (home folder is fine):

# 1. Create your editable policy folder (~/.acp/policies)
acp init

# 2. Start local stack: Postgres + OPA + interceptor + dashboard
acp up --build

# 3. Open governance dashboard in browser
acp dashboard
Command What it does Where it runs
acp init Creates ~/.acp/policies/ with starter .rego files + HOW_TO_ADD_RULES.md Your terminal
acp up --build Starts Docker containers (first time builds interceptor image) Your terminal (needs Docker running)
acp up Starts stack without rebuild (after first --build) Your terminal
acp down Stops containers Your terminal
acp status Container + health check status Your terminal
acp dashboard Opens http://localhost:3090/dashboard/ Your terminal
acp doctor Checks Docker + package install Your terminal

Your rules (editable after pip install)

Policies are yours, not locked inside the package:

~/.acp/policies/
├── HOW_TO_ADD_RULES.md
├── router.rego                 ← route tools → policies
├── rbac.rego                   ← JWT roles → tools
├── mortgage_application.rego   ← commented sample (loan submit)
└── mortgage_underwriting.rego  ← commented sample (score_loan / escalate)

Edit files in ~/.acp/policies/, then restart:

acp down && acp up

Custom policy path (optional):

export ACP_POLICIES_DIR=/path/to/my/policies
acp up

Use in your agent project (any framework)

In your project folder (separate from ACP), activate a venv and use the SDK:

import os
from acp import governed_tool

os.environ.setdefault("ACP_INTERCEPTOR_URL", "http://localhost:8080")

@governed_tool(agent_id="my-agent", tool="my_tool_api", action="run_action")
def my_tool(amount: int) -> str:
    return f"ok:{amount}"

Works with CrewAI, Strands, LangGraph, or plain Python.

Register agents via dashboard Agent Registry or POST /api/v1/agents.


Local URLs

URL Purpose
http://localhost:3090/dashboard/ Dashboard (events, policies, registry, approvals)
http://localhost:8080 Interceptor API (/tool-call, /api/v1/*)

What Docker starts

Service Role
Postgres Audit log, agent registry, approvals
OPA Evaluates your Rego from ~/.acp/policies/
Interceptor PEP — POST /tool-call, JWT, registry
Dashboard Governance UI
Gateway Single origin on :3090

Also on disk: ~/.acp/jwt/ (dev RS256 keys), ~/.acp/runtime/ (compose + images).


Maintainers (ACP monorepo)

cd sdk/python
./scripts/sync_bundle.sh
./scripts/publish_pypi.sh
twine upload dist/*

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

acp_ai-0.2.0.tar.gz (74.1 kB view details)

Uploaded Source

Built Distribution

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

acp_ai-0.2.0-py3-none-any.whl (103.2 kB view details)

Uploaded Python 3

File details

Details for the file acp_ai-0.2.0.tar.gz.

File metadata

  • Download URL: acp_ai-0.2.0.tar.gz
  • Upload date:
  • Size: 74.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.6

File hashes

Hashes for acp_ai-0.2.0.tar.gz
Algorithm Hash digest
SHA256 f2908926df2e166a6e22057d58cacad4eb27efd58dee038d6568818f248be5a5
MD5 0632860a58f958e995fa8247fb547e5a
BLAKE2b-256 9dd79a969dcc2cac60603989087b8c98bd98f86b6367061a8a23d7593d2ccf43

See more details on using hashes here.

File details

Details for the file acp_ai-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: acp_ai-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 103.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.6

File hashes

Hashes for acp_ai-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 808525ac4312739efa388e0f24eead39cb18b5dda747bcd21d619fe69c87e2cc
MD5 7d885db49b951467be39cf334ee7e547
BLAKE2b-256 e5ab892ee82e62cd17e6c68ce4cc21c2c0a84df5cff3a391736001e3f0a97ec8

See more details on using hashes here.

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