pontonier
Pontonier is the shared core library for agent-bridge MCP servers. An agent bridge lets one agent harness call an agent that runs on a different model. Three bridges use this library:
- codex-in-claude — Claude Code → Codex CLI
- moonbridge — Claude Code or Codex → Kimi CLI
- claude-in-codex — Codex → Claude Code CLI
A pontonier is the engineer who builds pontoon bridges: pontonier is not itself a bridge — it is what the bridges are built from.
What is in the box
pontonier.core — backend-agnostic machinery, extracted from the
bridges' _core packages:
| Module | Purpose |
|---|---|
jobs |
Disk-backed, daemonless async job store |
worktree |
Throwaway git worktrees for delegated work |
gitdiff |
Bounded, redacted git diff gathering |
redaction |
Best-effort secret redaction for diffs and prose |
runtime |
Subprocess execution with bounded streams and cleanup |
gitproc |
Hardened git subprocess helpers |
streamcap |
Bounded stream capture |
idempotency |
On-disk idempotency-key index |
workspace |
MCP-root workspace resolution |
jsoncache |
Small JSON file cache |
Rule: pontonier.core never imports from the rest of the package.
CI enforces this with import-linter.
pontonier.conventions — the shared vocabulary bridges are built from:
error taxonomy + repair rules (envelope), host-parameterized prompt
framing (prompts), effect-parameterized tool annotations
(annotations), CLI --help feature detection (preflight), and the
surface-fingerprint invariant (fingerprint). Wire serialization stays
in each bridge.
pontonier.backend — FROZEN (CONTRACT_API_VERSION = 1): the
BackendContract static-facts dataclass, the AgentBackend staged run
lifecycle (validate_request → prepare → finalize/classify_failure),
and a shared failure classifier with fixed precedence. Required Protocol
members and required BackendContract fields are stable within a minor
line; because additive changes to a Protocol or a frozen dataclass are
breaking, new behavior lands as optional capability protocols or
defaulted fields.
pontonier.testing — importable, framework-agnostic test kit: surface
honesty (forbidden-phrase scanning against the built wire), adapter and
contract conformance, and sync/async tool-pair parity. Checks return
violation lists; wire them into any harness.
Development
This project uses uv:
uv sync
uv run pytest
uv run ruff check
uv run lint-imports
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 pontonier-0.5.0.tar.gz.
File metadata
- Download URL: pontonier-0.5.0.tar.gz
- Upload date:
- Size: 313.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e10d9f0dec438f664a0edb9e18edba48d92714c1190f26c36324676b7465543a
|
|
| MD5 |
43f10c227ca386ae2749c006510efc89
|
|
| BLAKE2b-256 |
bb3643af9210c00a2ac8f5281fbb8299cc09fa5ae09bfc4f610bbf7f8ba5713f
|
Provenance
The following attestation bundles were made for pontonier-0.5.0.tar.gz:
Publisher:
publish.yml on briandconnelly/pontonier
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pontonier-0.5.0.tar.gz -
Subject digest:
e10d9f0dec438f664a0edb9e18edba48d92714c1190f26c36324676b7465543a - Sigstore transparency entry: 2494985416
- Sigstore integration time:
-
Permalink:
briandconnelly/pontonier@b32ac782fc4211a792af138d1135c480d13934a9 -
Branch / Tag:
refs/tags/v0.5.0 - Owner: https://github.com/briandconnelly
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@b32ac782fc4211a792af138d1135c480d13934a9 -
Trigger Event:
push
-
Statement type:
File details
Details for the file pontonier-0.5.0-py3-none-any.whl.
File metadata
- Download URL: pontonier-0.5.0-py3-none-any.whl
- Upload date:
- Size: 140.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
106099657d618b55a68b62fe81280eb90bc0d3ed368d9eb74fd9496987c9a816
|
|
| MD5 |
858af0a33fe400442871907c3e83e20c
|
|
| BLAKE2b-256 |
9ebeb8bafc89f199d54e00fcfbb8a66f2e7f96fc1bfe5d6c2cbd995204424005
|
Provenance
The following attestation bundles were made for pontonier-0.5.0-py3-none-any.whl:
Publisher:
publish.yml on briandconnelly/pontonier
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pontonier-0.5.0-py3-none-any.whl -
Subject digest:
106099657d618b55a68b62fe81280eb90bc0d3ed368d9eb74fd9496987c9a816 - Sigstore transparency entry: 2494985427
- Sigstore integration time:
-
Permalink:
briandconnelly/pontonier@b32ac782fc4211a792af138d1135c480d13934a9 -
Branch / Tag:
refs/tags/v0.5.0 - Owner: https://github.com/briandconnelly
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@b32ac782fc4211a792af138d1135c480d13934a9 -
Trigger Event:
push
-
Statement type: