LazyBridge
Build Python pipelines with Claude Code and Codex as engines. Swap the engine while keeping tools and application state; let one engine write and the other review. Agent = Engine + Tools + State is the shared contract.
from lazybridge import Agent, ClaudeCodeEngine, CodexEngine, Memory, Session, Store
def project_status() -> str:
"""Return this example project's status."""
return "The draft is ready for review."
state = dict(tools=[project_status], memory=Memory(), store=Store(), session=Session())
claude = Agent(name="claude", engine=ClaudeCodeEngine(), **state)
codex = Agent(name="codex", engine=CodexEngine(), **state)
assert claude.memory is codex.memory
assert claude.store is codex.store
assert claude.session is codex.session
Functions, agents and Plan-backed pipelines enter through tools=[...].
LLMEngine calls provider APIs; Plan runs a deterministic DAG; human engines
handle approval and supervision. Every agent returns an Envelope.
Install and authenticate
Python 3.11 or later:
python -m pip install "lazybridge[claude-code]==1.8.2"
Install and sign in to the local coding runtimes using the
Claude Code guide
and Codex guide.
Codex needs its CLI, with no Python SDK extra. With a subscription login,
coding runtimes use the account's plan quota; the adapters reuse the configured
authentication and do not force a billing path. For provider APIs, install the
matching extra (anthropic, openai, google, deepseek, litellm) and
configure that provider's credentials.
One writes, the other reviews
from lazybridge import Agent, ClaudeCodeEngine, CodexEngine
reviewer = Agent(name="codex-reviewer", engine=CodexEngine(
system='Start with "approved" or "rejected: <reason>". Check boundary cases.',
))
writer = Agent(name="claude-writer", engine=ClaudeCodeEngine(),
verify=reviewer, max_verify=3)
result = writer("Draft a function that blocks weekend deployment.")
print(result.text())
verify= is configured on the Agent. Rejection supplies feedback for the next
attempt; max_verify counts total attempts. Exhaustion returns the final draft
even when rejected. Use deterministic tests and explicit acceptance records
before shipping. See the full
Claude Code writes, Codex reviews guide.
Native history can survive a process restart: Claude has persist_session /
session_id, Codex has persist_thread / thread_id, and both support
session_alias through SessionRegistry. Python Memory, Store and Session
can be reused when changing engines; a native Claude transcript cannot migrate
into a Codex thread.
LazyTools connects the work
LazyTools is the integration layer:
- Code bridge: detached repository jobs, durable approvals, results and tier-based opposite-engine review.
- MCP server: code-support tools, projects and connectors.
- Projects: plans, claims, contracts and acceptance evidence in a shared Store.
Its distribution is lazytoolkit; its Python namespace is lazytools.
Core MCP/gateway shims were removed in 0.9. Follow the LazyTools installation
instructions rather than importing those removed modules.
Code computes results; the LLM reads them. Deterministic gates decide what may ship. Quota routing chooses from eligible tier rungs; the quota routing benchmark is in progress, with no comparative metrics published here.
Documentation and status
This README targets 1.8.2. The core public API is Stable; coding engines and extensions have their own boundaries. LazyTools 0.10.1 declares Alpha. See the maturity table and CHANGELOG.
- Quickstart
- Coding agents and engine differences
- Recipes and API reference
- For LLM assistants
- Website and working projects
For development, install .[test,docs], run python -m pytest, and build with
python -m mkdocs build --strict. The default suite excludes live model calls
and heavy rendering. CONTRIBUTING describes the checks.
The longer design rationale and worked examples live in Why LazyBridge (recursive pipelines, validation, review and exporters), the comparison, and the documentation map. This keeps the README focused while preserving those explanations in the guides.
Issues and contributions are welcome through the repository. See SECURITY.md for disclosure and LICENSE for Apache 2.0 terms. LazyBridge is designed by selvaz with Claude Code and Codex used as implementation partners under the owner's direction.
Metadata
Release files for lazybridge 1.8.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| lazybridge-1.8.2.tar.gz | 4.3 MB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| lazybridge-1.8.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 6.2 MB
Release files / lazybridge-1.8.2.tar.gz
| Download URL | lazybridge-1.8.2.tar.gz |
|---|---|
| Size | 4.3 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c2b69d1a4e0b3d6ba4047bfa3493ec25d4e7822d976f20cbeef3a26f369e60e4
|
|
BLAKE2b-256 checksum How to use checksums |
e9aaa25141ed03ac6d5edcc94d4a79bc3520d5e30c2e1c5392c40b7b6567100d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 15, 2026.
Transparency logRelease files / lazybridge-1.8.2-py3-none-any.whl
| Download URL | lazybridge-1.8.2-py3-none-any.whl |
|---|---|
| Size | 2.0 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
af4a565ac199cbe844e261e556222ac2c01f111609af378fb3f7ea75a1cc474d
|
|
BLAKE2b-256 checksum How to use checksums |
e4d5b4ed662ecc0ed97196f12a728af299bd4b50a19181a3c31fb4041f3886de
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 15, 2026.
Transparency logSecurity for lazybridge 1.8.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for lazybridge-1.8.2.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 15, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.