Skip to main content

Python SDK for agent-runtime — invoke declarative agent workflows from Python

Project description

lp-agent-runtime-sdk

Python SDK for running agent-runtime workflows. Wraps the agent-runtime binary to execute declarative .agent bundles from Python, with support for registering Python functions as callable tools.

Installation

pip install lp-agent-runtime-sdk
# or
uv add lp-agent-runtime-sdk

The package ships pre-built binaries for macOS (arm64, amd64), Linux (amd64, arm64), and Windows (amd64) — no separate install required.

Quick Start

from agent_runtime import Runtime, RunError

rt = Runtime()

@rt.tool("pricing.get_quote", version="v1")
def get_quote(sku: str, quantity: int) -> dict:
    return {"unit_price": 9.99, "currency": "USD"}

try:
    output = rt.run("./my_bundle.agent", inputs={"sku": "ABC-1", "quantity": 10})
    print(output)
except RunError as e:
    print(f"Flow failed: {e} (run_id={e.run_id})")

Authoring Bundles

Bundles are directories with a .agent extension containing a declarative flow definition. See FLOWS.md in the main repo for the full authoring guide.

API Reference

Runtime(binary=None, env=None)

Creates a runtime instance.

  • binary — explicit path to the agent-runtime binary (optional)
  • env — extra environment variables merged into the subprocess environment

@rt.tool(name, version="v1")

Decorator that registers a Python function as a tool callable by the workflow. The tool reference inside the bundle must match name@version.

@rt.tool("supplier_api.get_price", version="v1")
def get_price(item_code: str) -> dict:
    return {"price": 42.0}

# Async tools are also supported
@rt.tool("data.fetch_record", version="v1")
async def fetch_record(record_id: str) -> dict:
    ...

rt.run(bundle, inputs=None, on_event=None) -> dict

Executes a bundle synchronously and returns the flow output as a dict.

rt.arun(bundle, inputs=None, on_event=None) -> dict

Async version of run. Use with await inside an async context.

result = await rt.arun("./bundle.agent", inputs={"query": "hello"})

rt.validate(bundle)

Validates a bundle directory. Raises RuntimeError if the bundle is invalid.

File Inputs

Use FileInput to pass a local file as a flow input. The path is resolved to an absolute path automatically.

from agent_runtime import Runtime, FileInput

rt = Runtime()
output = rt.run("./ocr_bundle.agent", inputs={"document": FileInput("./invoice.pdf")})

Streaming Events

Pass an on_event callback to receive TraceEvent objects as the workflow executes.

def on_event(event: TraceEvent) -> None:
    print(f"[{event.event}] node={event.node} duration={event.duration_ms}ms")

rt.run("./bundle.agent", inputs={...}, on_event=on_event)

Key TraceEvent fields:

Field Type Description
event str Event type (e.g. node.start, node.done, tool.call)
node str Node name in the flow
node_type str Node type (e.g. llm, tool, router)
tool str Tool reference if a tool was called
model str Model name for LLM nodes
input_tokens int Tokens consumed
output_tokens int Tokens produced
duration_ms int Node execution time
error str Error message if the node failed
output dict Node output

Traces & Debugging

Where traces go

Trace events are emitted by the runtime binary to stdout as newline-delimited JSON and streamed to you in real time via the on_event callback. There is no separate log file — if you don't attach a callback, events are silently consumed and discarded.

To capture a full trace for debugging, collect all events into a list:

from agent_runtime import Runtime, TraceEvent, RunError

rt = Runtime()
trace: list[TraceEvent] = []

try:
    output = rt.run("./bundle.agent", inputs={...}, on_event=trace.append)
except RunError as e:
    # Flow-level failure — the error message and run_id are on the exception.
    # Check the trace for the node that produced the error.
    failed = [ev for ev in trace if ev.error]
    for ev in failed:
        print(f"node={ev.node} error={ev.error}")
    raise

Event types

Event When it fires
flow_start Flow begins executing
flow_done Flow completed successfully
node_start A node begins executing
node_done A node finished (check ev.error for failure)
tool_call The runtime is calling a registered tool
tool_done Tool call returned

Error channels

There are two ways a run can surface an error:

Node-level — a node fails but the flow may continue (e.g. a retry). Delivered as a TraceEvent with event="node_done" and a non-empty error field. The attempt and max_retries fields indicate retry state.

Flow-level — the flow terminates in an error state. The SDK raises RunError with the message and run_id. Check the collected trace to find which node caused it.

Binary crash — the agent-runtime process exits with a non-zero code (misconfigured bundle, missing env var, etc.). The SDK raises RuntimeError with the stderr output as the message. This is distinct from a flow error and does not produce a RunError.

Typical debug loop

  1. Collect the full trace with on_event=trace.append
  2. On RunError, filter [ev for ev in trace if ev.error] to find the failing node
  3. Inspect ev.inputs, ev.args, and ev.output on surrounding events to understand the data at that point
  4. Fix the bundle or tool, then re-run

Binary Resolution

The SDK locates the agent-runtime binary in this order:

  1. binary argument passed to Runtime()
  2. AGENT_RUNTIME_BIN environment variable
  3. Bundled platform binary (included in the package)
  4. agent-runtime on PATH

Development

uv run pytest          # run tests
uv run ruff check .    # lint

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

lp_agent_runtime_sdk-0.1.0.tar.gz (42.5 MB view details)

Uploaded Source

Built Distributions

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

lp_agent_runtime_sdk-0.1.0-py3-none-win_amd64.whl (42.7 MB view details)

Uploaded Python 3Windows x86-64

lp_agent_runtime_sdk-0.1.0-py3-none-macosx_11_0_arm64.whl (8.4 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

lp_agent_runtime_sdk-0.1.0-py3-none-macosx_10_12_x86_64.whl (17.3 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

Details for the file lp_agent_runtime_sdk-0.1.0.tar.gz.

File metadata

  • Download URL: lp_agent_runtime_sdk-0.1.0.tar.gz
  • Upload date:
  • Size: 42.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.13

File hashes

Hashes for lp_agent_runtime_sdk-0.1.0.tar.gz
Algorithm Hash digest
SHA256 caab583ac80bc1991693f2683fc0f4c6b8edda9fdba27dd1f80797a595b44ec7
MD5 b5dcefaec2b259fbed7eac7ea4869ba7
BLAKE2b-256 12fa058cad86c186cbbc12bcf015b9bd7e6ab97831d6ea0b88dd25ee11882f8d

See more details on using hashes here.

File details

Details for the file lp_agent_runtime_sdk-0.1.0-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for lp_agent_runtime_sdk-0.1.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 9cdb9bd484cabf92fc8327f4d5517808d0400a65dcfbe070f9d2f23434391122
MD5 da180c786ab333753f382dcbbb302aa8
BLAKE2b-256 a3db91a31c23ac7ced4de1b72e95165a92954e347d61fca75e495647d7477e0f

See more details on using hashes here.

Provenance

The following attestation bundles were made for lp_agent_runtime_sdk-0.1.0-py3-none-win_amd64.whl:

Publisher: publish.yml on levelplaneai/agent-runtime-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lp_agent_runtime_sdk-0.1.0-py3-none-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for lp_agent_runtime_sdk-0.1.0-py3-none-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 01eb4502c93dcb08016f6d77a5884b187c995e498049d805d671e0bb4273d038
MD5 b5f88f1e10024043eed01f8225a82f09
BLAKE2b-256 9bec482076b310325f697b3854f79aa2c2891337894f17b98f824f9863bed3e5

See more details on using hashes here.

Provenance

The following attestation bundles were made for lp_agent_runtime_sdk-0.1.0-py3-none-manylinux2014_x86_64.whl:

Publisher: publish.yml on levelplaneai/agent-runtime-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lp_agent_runtime_sdk-0.1.0-py3-none-manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for lp_agent_runtime_sdk-0.1.0-py3-none-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 28e74895f2f293cd2c57739b0ef6bfcda9396fa9829da210203a086fadd33ceb
MD5 abc1aafc1c4ec4b2a11c447eb944fed9
BLAKE2b-256 0ac38bffe54642e6eef73c2eee2402a29ff00fb70efe4086c62b3cc7e5b768db

See more details on using hashes here.

Provenance

The following attestation bundles were made for lp_agent_runtime_sdk-0.1.0-py3-none-manylinux2014_aarch64.whl:

Publisher: publish.yml on levelplaneai/agent-runtime-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lp_agent_runtime_sdk-0.1.0-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for lp_agent_runtime_sdk-0.1.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 096007e4246c0e63dc18579db24324f967a01df7e4eca27648349102d2a08b57
MD5 a9724ec7e3b314a66672653af71c24d3
BLAKE2b-256 73fb030dc08e3df282232e9258bddb46cedfe6e3a84047aa10d66de6160b6a21

See more details on using hashes here.

Provenance

The following attestation bundles were made for lp_agent_runtime_sdk-0.1.0-py3-none-macosx_11_0_arm64.whl:

Publisher: publish.yml on levelplaneai/agent-runtime-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lp_agent_runtime_sdk-0.1.0-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for lp_agent_runtime_sdk-0.1.0-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 ef046d6e5244710d91c42c363d4913cad1253ce97c2960d110b0897283007a4b
MD5 b54a6bda33c0bd727d567f95eb8e2317
BLAKE2b-256 7fc142dc1f3ffb0155a55c78cb573d7ef2c4c94f7121a3c13bd7d06ae058a063

See more details on using hashes here.

Provenance

The following attestation bundles were made for lp_agent_runtime_sdk-0.1.0-py3-none-macosx_10_12_x86_64.whl:

Publisher: publish.yml on levelplaneai/agent-runtime-python

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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