Skip to main content

AGNT5 Python SDK

CI License

Build reliable AI agents and durable workflows in Python. The AGNT5 SDK provides typed components, workflow checkpoints, retries, streaming, tools, human-in-the-loop coordination, evaluation, and runtime observability.

Requirements

  • Python 3.11 or newer
  • An AGNT5 runtime for deployed execution

Installation

pip install agnt5

Quick start

Define a function. Type hints are used to derive its input and output schema.

from agnt5 import FunctionContext, function


@function(retries=3, backoff="exponential")
async def greet(ctx: FunctionContext, name: str) -> dict[str, str]:
    ctx.logger.info("greeting user", extra={"name": name})
    return {"message": f"Hello, {name}!"}

Register application components with a worker for runtime-backed execution:

import asyncio

from agnt5 import Worker


async def main() -> None:
    worker = Worker(service_name="hello-python")
    await worker.run()


asyncio.run(main())

Decorated functions, workflows, agents, tools, and scorers are registered when their modules are imported. See examples/app.py for a complete application entrypoint.

Invoke a deployed component

from agnt5 import Client

client = Client(
    gateway_url="https://gw.agnt5.com",
    api_key="agnt5_sk_...",
    deployment_id="deployment-id",
)

result = client.run("greet", {"name": "Ada"})
print(result)

Client also supports asynchronous submission, status and result polling, streaming events, batches, cancellation, workflow resume, chat, and evaluation. Configuration can be supplied explicitly or through AGNT5_GATEWAY_URL, AGNT5_API_KEY, and AGNT5_DEPLOYMENT_ID.

Core APIs

API Purpose
@function Typed, retryable units of work
@workflow Durable multi-step orchestration and checkpointing
Agent and @agent Model and tool orchestration
@tool Typed tools with generated schemas
ctx.state Durable workflow and component state
ctx.memory Conversation and application memory
Client / AsyncClient Invoke and observe deployed components
Worker Register components and serve runtime dispatch

In async workflows, use await ctx.state.set_async(key, value) and await ctx.state.delete_async(key). These await the runtime's durable acknowledgment while allowing other workflows to run. Reads remain local via ctx.state.get(key). The existing synchronous set and delete methods remain supported, but block their calling thread while waiting for persistence.

The shared Rust runtime foundation lives in agnt5dev/sdk-core. Vendor sandbox adapters live in agnt5dev/sdk-integrations.

Examples and documentation

  • examples/ contains functions, workflows, agents, tools, streaming, HITL, MCP, chat, and evaluation examples.
  • docs/ contains SDK-specific guides.
  • AGNT5 documentation covers platform concepts and deployment.

Development

uv sync --all-groups
uv run ruff check src tests
uv run pytest tests/unit -q
uv build --sdist

Development builds use a sibling checkout of sdk-core.

Contributing

See CONTRIBUTING.md. Report security issues according to SECURITY.md.

License

Licensed under the Apache License 2.0.

Response wait

Run and stream calls wait up to 5 minutes by default. Set the per-call wait to any value from zero to 24 hours. Zero returns a pending receipt immediately after acceptance. This controls response waiting, not the workflow execution deadline: accepted work continues when the wait expires or the client disconnects.

result = client.run("process_order", order, component_type="workflow", wait_timeout=60)
for event in client.stream_events("process_order", order, component_type="workflow", wait_timeout=60):
    print(event.event_type, event.run_id)

wait_timeout uses seconds and also applies to async run and stream_events. Run calls return 202 pending receipts directly, without additional polling. Event streams emit stream.wait_expired when the wait expires, or stream.detached for a 202 receipt. Use the run ID to read status/results. Chunk-only stream raises RunError with the run ID when waiting ends.

The default HTTP timeout allows at least the wait plus 10 seconds, or the client timeout if longer. Pass timeout=75 to set it explicitly. Python's HTTP timeout limits individual network operations; wait_timeout bounds the gateway wait.

Structured assertions

structured_assertions is a reserved built-in scorer, so workers need no user registration. The local helper uses the same SDK-core implementation as the runtime:

from agnt5.eval import ScorerInput, structured_assertions

result = structured_assertions(
    ScorerInput(output=[1, 2, 3], expected={"expected_length": 3}),
    {"assertions": [
        {"name": "unique_ids", "expr": "unique(output_json)"},
        {"name": "count", "expr": "size(output_json) == expected.expected_length"},
    ]},
)

The score is the fraction of assertions that pass; score_threshold defaults to

  1. Configuration and input errors always fail. See the SDK-core contract for supported expressions and execution limits. Requires the matching native extension.

Metadata

Release files for agnt5 0.14.2

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

Source distribution (sdist)

Source distribution for agnt5 0.14.2
File Size Uploaded
agnt5-0.14.2.tar.gz 924.2 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for agnt5 0.14.2
File Interpreter ABI Platform
agnt5-0.14.2-cp310-abi3-manylinux_2_28_x86_64.whl CPython 3.10 abi3 Linux glibc 2.28+ x86-64 Details
agnt5-0.14.2-cp310-abi3-manylinux_2_28_aarch64.whl CPython 3.10 abi3 Linux glibc 2.28+ ARM64 Details
agnt5-0.14.2-cp310-abi3-macosx_11_0_arm64.whl CPython 3.10 abi3 macOS 11.0+ ARM64 Details

Total release size: 55.4 MB

Release files / agnt5-0.14.2.tar.gz

Download URL agnt5-0.14.2.tar.gz
Size 924.2 kB
Tags Source
SHA-256 checksum
How to use checksums
f484ecfebd7f0b1cd2d23556e8063600d7ba17928ab3cd94429e66e674f16d1b
BLAKE2b-256 checksum
How to use checksums
66bfc08a8e5102a12e20564e49a118373ac8fca9a3856cd33d644db71618b21b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / agnt5-0.14.2-cp310-abi3-manylinux_2_28_x86_64.whl

Download URL agnt5-0.14.2-cp310-abi3-manylinux_2_28_x86_64.whl
Size 18.4 MB
Tags CPython 3.10 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
f312e1cb488a3c55c7937a8f391f51535701a15fddf24018f7ddb98ca60efcbe
BLAKE2b-256 checksum
How to use checksums
8f3d55eb24f1fd8ef0d2823963dfa090e2bc8fce87c720b468be34e9e996cc4c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / agnt5-0.14.2-cp310-abi3-manylinux_2_28_aarch64.whl

Download URL agnt5-0.14.2-cp310-abi3-manylinux_2_28_aarch64.whl
Size 19.4 MB
Tags CPython 3.10 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
a04ffec512c95eb61fedf06b9cc41cd27af3629cfa72a27128ec4b303f45e644
BLAKE2b-256 checksum
How to use checksums
0589b5a3cab2c0ca5b7bb9c59e9f1590663ba2c80a81ba15d4a99308e062317a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / agnt5-0.14.2-cp310-abi3-macosx_11_0_arm64.whl

Download URL agnt5-0.14.2-cp310-abi3-macosx_11_0_arm64.whl
Size 16.6 MB
Tags CPython 3.10 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
f467dc0a5a35e5d1ba73e3efa302e9b1542acb5fb0d6654616143feaf830b61e
BLAKE2b-256 checksum
How to use checksums
ba158dd2e2a7f9782b7ec77e851b5070a6780f40f737684c3ab111627490bfdf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

This release

0.14.2 This release

4 release files

0.13.6

4 release files

0.13.5

4 release files

0.13.4

4 release files

0.13.3

4 release files

0.13.2

4 release files

0.13.1

4 release files

0.13.0

4 release files

0.12.0

4 release files

0.9.8

3 release files

0.9.7

3 release files

0.9.6

3 release files

0.9.5

3 release files

0.9.4

3 release files

0.9.3

3 release files

0.9.2

3 release files

0.9.1

3 release files

0.9.0

4 release files

0.8.7

4 release files

0.8.5

4 release files

0.8.4

4 release files

0.8.3

4 release files

0.8.2

4 release files

0.8.1

4 release files

0.8.0

4 release files

0.7.20

4 release files

0.7.18

4 release files

0.7.11

4 release files

0.7.10

4 release files

0.7.9

4 release files

0.7.8

4 release files

0.7.6

4 release files

0.7.5

4 release files

0.7.4

4 release files

0.7.3

4 release files

0.7.2

4 release files

0.7.1

4 release files

0.6.1

4 release files

0.6.0

4 release files

0.5.2

4 release files

0.5.1

4 release files

0.5.0

4 release files

0.4.3

4 release files

0.4.2

4 release files

0.4.1

4 release files

0.4.0

4 release files

0.3.7

4 release files

0.3.6

4 release files

0.3.5

4 release files

0.3.4

4 release files

0.3.3

4 release files

0.3.1

4 release files

0.2.7

4 release files

0.2.6

4 release files

0.2.5

4 release files

0.2.4

4 release files

0.2.3

4 release files

0.2.2

3 release files

0.2.1

3 release files

0.2.0

5 release files

0.1.3

6 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