This release is a pre-release and may not be stable for production use.
Agent Bridge Connect
中文 | English
AgentBC is a local-first task control system for running background work through agents on your machine. The current release supports Codex/ChatGPT, Claude Code, and Hermes. It gives different agent CLIs one task identity, one Runner gateway, one report contract, and one recovery model.
Public Alpha. Use AgentBC on development projects with version control and review agent output before accepting changes.
Current release: 1.0.1A2 (Python package version 1.0.1a2).
Why AgentBC
- Dispatch work to local agents through one CLI.
- Keep continuation work in a visible chain such as
4XMC-001 -> 4XMC-002. - Write deliverables directly to a user project or an isolated managed workspace.
- Observe concurrent work through a compact, automatically managed task list.
- Separate readable task reports from bounded runtime records.
- Close, recover, reassign, or hand off work without relying on chat context.
- Receive concise macOS completion and recovery notifications.
- Send and receive tasks in natural language from any supported agent. See the examples for complete workflows.
Create A Task
In any supported agent conversation, invoke /agentbc, describe the task in
natural language, and name the executor:
/agentbc Ask Codex (or any supported agent) to write a document summarizing AgentBC's features and use cases.
Requirements
- macOS for the current desktop notification and task-list workflow;
- Python 3.10 or newer;
- at least one installed and authenticated executor: Codex, Claude Code, or Hermes.
Install And Verify
One command downloads, verifies, installs, and configures AgentBC:
curl -fsSL \
https://github.com/roway49/agent-bridge-connect/releases/download/v1.0.1A2/install-agentbc-alpha.sh \
| sh -s -- \
https://github.com/roway49/agent-bridge-connect/releases/download/v1.0.1A2
For a package-managed installation from PyPI:
python3 -m pip install agentbc==1.0.1a2
agentbc setup
Start with Quick Start, then use the User Guide for task and Runner commands.
Architecture
AgentBC is a local control plane. Agent integrations submit structured tasks to one local Runner; Core owns task identity, state, reports, records, and notifications.
flowchart TD
A[Human or controller agent] --> CLI[CLI and installed skill]
CLI --> S[TaskService]
S --> TS[TaskStore]
CLI --> R[Runner gateway]
R --> X[Executor adapter]
X --> E[Codex, Claude Code, or Hermes CLI]
E --> P[Project or managed artifact root]
R --> L[RunLease and progress record]
S --> RP[Task brief and report]
S --> I[Global task index]
S --> N[Task List and desktop notification]
Component Boundaries
CLI and skills. The CLI exposes task, Runner, setup, record, worker, and uninstall operations. Installed skills teach each controller how to select a customer path, preserve dispatcher identity, and choose create versus handoff. Skills cannot bypass Core validation and do not own task truth.
TaskService and TaskStore. TaskService owns state transitions, task-code
allocation, handoff lineage, close and recovery behavior, report finalization,
and index refresh. TaskStore owns compact runtime records. Each task iteration
has a bounded record budget so long-running agents do not create unbounded
metadata.
Runner. Runner is the normal dispatch gateway. It validates the task and path plan, acquires a run lease, launches the executor, records low-frequency progress evidence, and classifies executor termination. Runner does not decide whether a deliverable is good; that remains a user or reviewer decision.
Executor adapters. Adapters translate one task packet into executor-specific arguments and prompts. The executor CLI remains an independent process. Codex and Claude receive scoped writable roots where supported; Hermes runs from the selected project or artifact root and remains subject to its own CLI capabilities.
Reports and records. Readable task briefs and reports are separate from compact machine state. Reports describe requirements, lineage, results, and artifact locations; runtime records preserve exact status and recovery evidence.
Task And Completion Model
A four-character TASKCODE identifies a task chain. The numeric suffix is its
iteration: 4XMC-001 and 4XMC-002 belong to the same chain. Commands may use
the task code to resolve the current head or the full ID for an exact iteration.
Successful execution requires one versioned terminal declaration. The executor's final response must end with exactly one single-line marker:
AGENTBC_FINAL_CALLBACK: {"version":1,"task_id":"4XMC-001","final_state":"completed","summary":"Implemented and verified the requested change","step_results":[{"id":1,"status":"done"}]}
completed is valid only when task_id matches and every declared task step
appears exactly once with status done. Missing or invalid JSON, wrong task IDs,
duplicate/unknown/missing steps, and non-done completion steps fail the flow.
input_required must be explicit and identify at least one declared step as
blocked; permission or approval prose alone is a failure. A two-option choice
declares a concrete decision reason and two label/description objects, for example
"input":{"type":"choice","reason":"why a decision is required","options":[{"label":"A","description":"what A does"},{"label":"B","description":"what B does"}]}.
The desktop dialog explains the reason and both outcomes, then renders the two
labels as direct buttons. Operational deadline and CLI fallback fields remain in
the task record/report but are not shown in the desktop dialog. Input dialogs
remain visible for up to five minutes; dismissing or timing out leaves the task
waiting for a CLI response.
- Runner confirms that execution started.
- The executor emits and exits with its final marker.
- Runner and Core validate only that flow declaration.
- Core writes the terminal status and synchronizes the report.
- Task List and desktop notifications display the same status.
completed: a valid completed marker declares every task step done; quality is not asserted.needs_recovery: an explicit retryable transport or infrastructure failure stopped execution.failed: the marker or non-retryable execution contract was missing or invalid.
A zero exit is never completion by itself. AgentBC does not inspect Git state, tests, files, or artifact quality when validating the flow marker, and it never automatically retries a recovery state.
A dispatch response such as accepted is not task completion. Task status,
reports, artifacts, and notifications are the source of truth.
Every report and task brief includes a Dispatcher Traceability section labeling
the controller that created or handed off the task: Dispatcher platform and
Dispatcher conversation ID. These labels describe the current dispatcher
conversation, not the source task conversation and not the executor's temporary
session. The conversation ID shows unavailable when no trusted dispatcher ID
was available; AgentBC never guesses it from processes, paths, history, or a
previous task, and a handoff records the current dispatcher conversation.
AgentBC does not delete the dispatcher conversation.
Path And Data Model
The controller supplies either an explicit user path or the literal
"default path". Runner derives the path plan. Explicit paths receive
deliverables directly; default-path tasks receive an isolated managed artifact
root. Reports and runtime records always remain Core-owned.
~/Documents/AgentBC/workspace/
|-- tasks/
| |-- artifacts/YYYY-MM-DD/<TASKCODE>/
| `-- report/YYYY-MM-DD/<TASKCODE>/
| |-- <TASKCODE>-<NNN>-task.md
| `-- <TASKCODE>-<NNN>-report.md
`-- record/
|-- README.md
|-- TASK_INDEX.md
|-- task_index.jsonl
`-- <TASKCODE>/<NNN>/
|-- task.json
|-- events.jsonl
|-- interventions.jsonl
|-- run_lease.json
`-- bounded progress and run-log files
Each iteration record is capped at 10KB. agentbc record clean removes eligible
terminal diagnostics while preserving core indexes and state. Empty managed
artifact directories are removed after terminal execution; customer projects
are never automatic-cleanup or uninstall targets.
Local Security Model
- Runner accepts authenticated local spool requests.
- One installation owns one Runner identity and stable PID; duplicate or orphaned startup is rejected even when spool state has been replaced.
- Customer paths are explicit task inputs and are never copied into the managed workspace as a permission workaround.
- Managed tasks receive a task-scoped artifact root rather than the workspace root.
- Report Markdown is Core-owned.
- Uninstall and task close never traverse customer project paths.
Runner uninstall honors two isolation controls:
AGENTBC_UNINSTALL_SKIP_RUNNER=1skips stopping Runner and preserves its live spool, token, and pid files during uninstall.AGENTBC_RUNNER_SPOOL=/path/to/spoolrelocates the Runner spool used by the CLI, setup, and uninstall paths, letting tests and multi-install setups isolate the spool from the per-user default/tmp/agentbc-runner-v2-<uid>.
AgentBC is not a container sandbox. Use source control, normal OS permissions, and executor-native approval controls for defense in depth.
Documentation
License
AgentBC is released under the MIT License.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file agentbc-1.0.1a2.tar.gz.
File metadata
- Download URL: agentbc-1.0.1a2.tar.gz
- Upload date:
- Size: 242.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
87127de057c99502a0f9dcd8b6c273618496ad68a9fb5a6baa702f3f0e726caf
|
|
| MD5 |
f76470c8c6e900f794f7a00e18bfbd29
|
|
| BLAKE2b-256 |
9cf5386f4188f0d210c226ef41f6437e02ec15df2fafc7641692b101d6943362
|
Provenance
The following attestation bundles were made for agentbc-1.0.1a2.tar.gz:
Publisher:
publish-pypi.yml on roway49/agent-bridge-connect
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
agentbc-1.0.1a2.tar.gz -
Subject digest:
87127de057c99502a0f9dcd8b6c273618496ad68a9fb5a6baa702f3f0e726caf - Sigstore transparency entry: 2371878741
- Sigstore integration time:
-
Permalink:
roway49/agent-bridge-connect@cca9616177d4ea557a9edfdf5243aaa66431dabf -
Branch / Tag:
refs/heads/main - Owner: https://github.com/roway49
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@cca9616177d4ea557a9edfdf5243aaa66431dabf -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file agentbc-1.0.1a2-py3-none-any.whl.
File metadata
- Download URL: agentbc-1.0.1a2-py3-none-any.whl
- Upload date:
- Size: 180.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
64cb6fa9dbd93a24af83cf63c6dc83e7da4cc5478a306dd8bde8d43a5ef64a8c
|
|
| MD5 |
bf7161b78176e9c4e0c734d2e3fb8ab2
|
|
| BLAKE2b-256 |
c0b7a15790ef4ab1a7414930bc15dbc7dd6d8f7dfaf3633aa171d5df4e9c5ca6
|
Provenance
The following attestation bundles were made for agentbc-1.0.1a2-py3-none-any.whl:
Publisher:
publish-pypi.yml on roway49/agent-bridge-connect
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
agentbc-1.0.1a2-py3-none-any.whl -
Subject digest:
64cb6fa9dbd93a24af83cf63c6dc83e7da4cc5478a306dd8bde8d43a5ef64a8c - Sigstore transparency entry: 2371879159
- Sigstore integration time:
-
Permalink:
roway49/agent-bridge-connect@cca9616177d4ea557a9edfdf5243aaa66431dabf -
Branch / Tag:
refs/heads/main - Owner: https://github.com/roway49
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@cca9616177d4ea557a9edfdf5243aaa66431dabf -
Trigger Event:
workflow_dispatch
-
Statement type: