Skip to main content

Agent Orchestration Process (AOP)

AOP runs autonomous CLI agents as bounded workers through one provider-independent interface. It creates isolated task worktrees, enforces execution profiles and deadlines, retains run evidence, resumes exact provider sessions, and keeps checkpointing and integration explicit.

It is intended for unattended jobs such as parallel code changes, evaluation pipelines, test generation, and autoresearch loops. Authentication, model execution, tools, and session persistence remain owned by each installed agent CLI.

Guiding principles

  • Describe complete semantic boundaries. Write access, visibility, identity, instructions, environment, credentials, and network access are separate facts and must be enforced and recorded explicitly.
  • Delegate harness-native behavior. Authentication, model execution, tools, session persistence, and provider protocols stay with the harness unless its automation interface is missing a required capability.
  • Project the least authority needed. A task receives only the selected provider credential and required runtime state, never an entire multi-provider credential store merely because copying it is easier.
  • Do not make users maintain parallel authentication. AOP reuses harness-managed credentials and preserves native environment overrides instead of inventing an AOP-specific secret store.
  • Keep controller policy outside model control. Isolation, deadlines, evidence, cleanup, and integration remain AOP responsibilities even when provider permission prompts are bypassed.
  • Prefer small native extension points over wrappers and forks. When a harness lacks a bounded automation feature, use its documented plugin or protocol surface and keep the added layer narrow.
  • Fail closed and record what ran. Ambiguous identity, stale pricing, invalid credentials, incomplete terminal output, and unenforced policy are failures, while effective policy and provenance remain inspectable after the run.
  • Optimize for the long-term product, not compatibility with accidental local setup. A clean break is acceptable before users exist when it removes ambiguity or foreseeable rewrites.

Why use AOP when ACP exists?

AOP is built for bounded automation, not as a general interactive agent host. Its provider adapters deliberately invoke the installed CLIs directly for one turn at a time and normalize only the contract needed by an automated worker: model and effort selection, a final result, exact resume identity, timing and usage, durable logs, process termination, and declared artifacts. Worktrees, filesystem isolation, deadlines, and integration remain AOP responsibilities outside the adapters.

Agent Client Protocol (ACP) standardizes communication between coding agents and interactive clients such as editors and IDEs. Use ACP when a person needs to chat with different agents through one client, approve actions, see live progress, and steer a session.

Use AOP when software needs to run bounded agent jobs unattended. AOP was designed to support autoresearch loops across multiple agent harnesses without reimplementing each harness's model selection, session resume, output parsing, permissions, runtime state, and failure handling in every research project. It starts disposable CLI turns, runs jobs concurrently in isolated worktrees, enforces deadlines, validates declared artifacts, records durable evidence and usage, resumes exact sessions, cleans up runtime state, and keeps integration explicit. It is suited to fanout, independent experiment cycles, evaluation pipelines, and other automation where the result matters more than an interactive interface.

The two are complementary. An interactive client can use ACP while an automation system uses AOP to schedule and govern bounded work.

Requirements and installation

The reference implementation is a Python CLI for running Codex, Claude Code, Cursor Agent, Devin CLI, OpenCode, Antigravity (agy), Grok Build, Hermes, and DeepSeek Harness (dsh) as bounded workers. See Provider adapters for authentication, model selection, runtime state, and current limitations.

Requirements:

  • Linux with bwrap; Git is required for edit and review profiles but not sealed
  • Python 3.11 or newer, managed through uv
  • At least one installed and authenticated supported agent CLI

Install the CLI from PyPI:

uv tool install agent-orchestration-process

For development, clone the repository and let uv create and synchronize the local environment. The default dev dependency group contains pytest and Ruff:

git clone https://github.com/wakamex/agent-orchestration-process.git
cd agent-orchestration-process
uv sync
uv run pytest
uv run ruff check src tests

First run

Initialize a Git repository and create one isolated task worktree:

cd /path/to/project
aop init
aop worktree create task-a

aop init adds /.aop/ to .gitignore. Commit that project-level change before integrating tasks so the main worktree is clean.

Run one bounded agent turn:

aop run task-a --agent claude --model sonnet --effort high \
  --prompt "Implement the parser and its tests"

aop run prints the agent's final message to stdout and its AOP run ID, provider session ID, and run artifact directory to stderr. Resume the exact session using the AOP run ID:

aop resume <run-id> --prompt "Address the review findings"

AOP retains the request, result, logs, final message, and declared artifacts under .aop/. See the CLI guide for inputs, artifacts, batch runs, machine-readable results, cleanup, model discovery, and lower-level worktree commands. See Integration when a task's changes are ready to checkpoint and merge.

Execution profiles

AOP profiles describe the complete execution boundary rather than only where writes are allowed. The isolated profiles expose only the declared workspace, inputs, provider runtime, private state, cache, scratch, output, and required operating-system paths. host runs without that isolation.

Profile Use it when
edit The agent should modify an isolated task worktree.
review The agent should inspect a task worktree without modifying it.
sealed The agent should see only explicit input snapshots, with no repository or inherited instructions.
host The command needs the native host environment and filesystem.

Inspect a declared profile or preview the intended policy without compiling or dispatching it:

aop profile explain sealed
aop profile explain sealed --agent codex --json
aop run study-arm --profile sealed --prompt "Answer using only declared inputs" --dry-run

All profiles currently retain native network connectivity because the supported provider CLIs need it. See Execution profiles for the exact filesystem, instruction, environment, credential, input, and output boundaries.

Results and usage

Every adapter records the same result shape, including exact resume identity, timing, token usage, cost evidence, logs, and declared artifacts. See Token usage and pricing for the normalized token contract, provider mappings, and cost calculation rules.

Metadata

Release files for agent-orchestration-process 0.1.5

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

Source distribution (sdist)

Source distribution for agent-orchestration-process 0.1.5
File Size Uploaded
agent_orchestration_process-0.1.5.tar.gz 63.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for agent-orchestration-process 0.1.5
File Interpreter ABI Platform
agent_orchestration_process-0.1.5-py3-none-any.whl Python 3 none any Details

Total release size: 135.2 kB

Release files / agent_orchestration_process-0.1.5.tar.gz

Download URL agent_orchestration_process-0.1.5.tar.gz
Size 63.5 kB
Tags Source
SHA-256 checksum
How to use checksums
dee566c64b1e649f4a3b854ee12cdd4c725e12432c2dd28261d2995b479abf69
BLAKE2b-256 checksum
How to use checksums
3663562f711c242f2a53f8041b61548b5880e39272fe85e6d188b58344d1f25b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / agent_orchestration_process-0.1.5-py3-none-any.whl

Download URL agent_orchestration_process-0.1.5-py3-none-any.whl
Size 71.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f6fd48437dd56a3914b914b5467367598908614dd088e8b1ea931b11a0e8ca5e
BLAKE2b-256 checksum
How to use checksums
4a1bc2f28c4368dc0d97e3e2a4796eb43ddc63a4fa7db05f52d7b562e122ba0a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

0.1.18

2 release files

0.1.17

2 release files

0.1.16

2 release files

0.1.13

2 release files

0.1.12

2 release files

0.1.11

2 release files

0.1.10

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

This release

0.1.5 This release

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

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