Skip to main content

A11

A concurrent action and streaming runtime for building AI agents.

A11 lets you write agents as ordinary async def code: values stream between producers and consumers, work is packaged as composable actions, and the same code runs in one process or across a network with a transport swap. The API is Python; the runtime underneath is a native C++20 implementation, so the streaming and concurrency stay fast and off the event loop's critical path.

📖 Documentation →

Install

pip install "a11-kit[llm]"

The [llm] extra pulls in the Anthropic and Google model SDKs. Drop it for the core runtime only.

See it in 30 seconds

Chat with a model right from the terminal (streaming its reply, and its thoughts with -v):

export GEMINI_API_KEY=...        # or ANTHROPIC_API_KEY
a11 chat -v

The ideas

A11 is small at its core — a few ideas compose into everything from a one-file helper to a fleet of networked agents. (The Principles page goes deeper.)

  • Everything is asynchronous. Every operation that can wait is a coroutine you await; the runtime schedules thousands cooperatively. Completion is an event (await action.done.wait()) and lifecycles are context managers that finalise — or abort with the right status — for you.
  • Everything is a stream. The unit of state is a node: a single ordered sequence of chunks with a writer end and a reader end. An agent rarely has its whole answer at once — it has the next token, frame, or tool call — so nodes make incremental production and consumption the natural shape, with backpressure built in.
  • Actions are wired streams. An action's typed input/output ports are nodes, so calling one is wiring streams together. A handler can emit output before it has finished reading input — exactly what streaming an LLM response through a pipeline looks like.
  • Two extension points: storage and transport. A ChunkStore is the log behind a node (swap the in-memory default for disk, a database, or fault injection); a WireStream moves bytes between peers (in-process, WebSocket, HTTP SSE, WebRTC). Everything above them is unchanged, so making an agent distributed is a transport swap, not a rewrite.
  • Sessions tie it together. A Session multiplexes wire streams, dispatches incoming action calls against a registry, and drains and closes the connection cleanly.

A taste

Produce into a node and read it back — backpressure and finalisation included:

import asyncio
import a11


async def main() -> None:
    async with a11.AsyncNode.create("tokens") as node:   # seals on exit
        for word in ["A11", "streams", "everything"]:
            await node.put(word)                          # await = backpressure

    async for token in node:
        print(token)


asyncio.run(main())

Stream a model's reply through that same node abstraction — interact_with_llm is just an action whose text_output port carries tokens as they arrive:

import a11
from a11.sdk.interact_with_llm import INTERACT_WITH_LLM_SCHEMA, interact_with_llm
from a11.sdk.llm import LlmHeaders

interact = (
    a11.Action(INTERACT_WITH_LLM_SCHEMA)
    .bind_handler(interact_with_llm)
    .set_header(LlmHeaders.PROVIDER.value, "gemini")
    .set_header(LlmHeaders.MODEL.value, "gemini-3.5-flash")
    .run()
)

# ...then, inside your async code, feed the conversation in and stream the reply:
async for chunk in interact["text_output"]:   # tokens as the model emits them
    print(chunk, end="", flush=True)

The guides build these up step by step — from a node, to a WebSocket echo session, to calling an action on a remote server, to a tool-using agent.

Learn more

  • Documentation — principles, guides, and the full Python API reference.
  • Guides — hands-on walkthroughs from a single stream to a networked, tool-using agent.
  • Examples — runnable programs under examples/.

Building the C++ runtime

A11's runtime is a standalone C++20 library you can build and link without Python. The steps below are self-contained; for the editable Python build, wheel matrix, testing workflow, and architecture, see BUILDING.md.

1. Install the tools, then build the C++ libraries. A11 links a pinned set of statically-built libraries (Boost, OpenSSL, libcurl, nghttp2, hiredis, nlohmann-json, uvw) rather than system copies; scripts/bootstrap_wheel_deps.sh builds them into a per-architecture prefix. From Homebrew you install only the tools (a C++20 compiler, CMake ≥ 3.28, Ninja; Linux tool package names vary):

brew install cmake googletest ninja pkg-config

export A11_DEPS_PREFIX="$HOME/.cache/a11-deps/$(uname -m)"
export CMAKE_PREFIX_PATH="$A11_DEPS_PREFIX"
export OPENSSL_ROOT_DIR="$A11_DEPS_PREFIX"
export PKG_CONFIG_PATH="$A11_DEPS_PREFIX/lib/pkgconfig"
export MACOSX_DEPLOYMENT_TARGET=14.4   # macOS only
scripts/bootstrap_wheel_deps.sh

CMake still fetches the pinned Abseil (and libdatachannel, for WebRTC) automatically. See BUILDING.md for the full rundown.

2. Configure, build, and install to a prefix (the exports above point CMake at the dependency prefix):

cmake -S . -B build -G Ninja \
  -DCMAKE_BUILD_TYPE=Release \
  -DA11_BUILD_PYTHON=OFF \
  -DCMAKE_OSX_DEPLOYMENT_TARGET=14.4 \
  -DCMAKE_INSTALL_PREFIX="$PWD/install"

cmake --build build -j
cmake --install build

On macOS, pass -DCMAKE_OSX_DEPLOYMENT_TARGET=14.4 as shown — it must match the value the prefix was bootstrapped with. Setting it as a cache variable here (not only via the MACOSX_DEPLOYMENT_TARGET environment export, which CMake may not pick up) is what enables the Boost.Fiber futex spinlock; a lower target compiles Boost.Fiber without futex support and fails with "futex not supported on this platform". The flag is ignored on Linux.

3. Use it from your own CMake project. The install exports a CMake package named a11 with per-component targets (a11::service links the whole runtime). Point your consumer's CMAKE_PREFIX_PATH at both the install prefix and the dependency prefix from step 1, so the transitive static Boost/OpenSSL/… resolve:

find_package(a11 CONFIG REQUIRED)

add_executable(my_agent main.cc)
target_link_libraries(my_agent PRIVATE a11::service)
target_compile_features(my_agent PRIVATE cxx_std_20)
#include "a11/nodes/node_map.h"

int main() {
  auto node_map = a11::nodes::NodeMap::Create();
  return node_map.ok() ? 0 : 1;
}

Configure your project with -DCMAKE_PREFIX_PATH=/path/to/install so find_package locates it. The generated C++ API reference is published alongside the docs.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

a11_kit-0.4.1.tar.gz (1.7 MB view details)

Uploaded Source

Built Distributions

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

a11_kit-0.4.1-cp314-cp314-manylinux_2_28_x86_64.whl (11.6 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

a11_kit-0.4.1-cp314-cp314-manylinux_2_28_aarch64.whl (11.1 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

a11_kit-0.4.1-cp314-cp314-macosx_14_0_x86_64.whl (9.1 MB view details)

Uploaded CPython 3.14macOS 14.0+ x86-64

a11_kit-0.4.1-cp314-cp314-macosx_14_0_arm64.whl (8.8 MB view details)

Uploaded CPython 3.14macOS 14.0+ ARM64

a11_kit-0.4.1-cp313-cp313-manylinux_2_28_x86_64.whl (11.6 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

a11_kit-0.4.1-cp313-cp313-manylinux_2_28_aarch64.whl (11.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

a11_kit-0.4.1-cp313-cp313-macosx_14_0_x86_64.whl (9.1 MB view details)

Uploaded CPython 3.13macOS 14.0+ x86-64

a11_kit-0.4.1-cp313-cp313-macosx_14_0_arm64.whl (8.8 MB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

a11_kit-0.4.1-cp312-cp312-manylinux_2_28_x86_64.whl (11.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

a11_kit-0.4.1-cp312-cp312-manylinux_2_28_aarch64.whl (11.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

a11_kit-0.4.1-cp312-cp312-macosx_14_0_x86_64.whl (9.1 MB view details)

Uploaded CPython 3.12macOS 14.0+ x86-64

a11_kit-0.4.1-cp312-cp312-macosx_14_0_arm64.whl (8.8 MB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

a11_kit-0.4.1-cp311-cp311-manylinux_2_28_x86_64.whl (11.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

a11_kit-0.4.1-cp311-cp311-manylinux_2_28_aarch64.whl (11.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

a11_kit-0.4.1-cp311-cp311-macosx_14_0_x86_64.whl (9.1 MB view details)

Uploaded CPython 3.11macOS 14.0+ x86-64

a11_kit-0.4.1-cp311-cp311-macosx_14_0_arm64.whl (8.8 MB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

File details

Details for the file a11_kit-0.4.1.tar.gz.

File metadata

  • Download URL: a11_kit-0.4.1.tar.gz
  • Upload date:
  • Size: 1.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for a11_kit-0.4.1.tar.gz
Algorithm Hash digest
SHA256 ace96554aeb0117a0e249e9768dc195ee390285e7e2b3e239fbf1058a589f255
MD5 f3f8a61abfd3d35483465c37c09e67d9
BLAKE2b-256 40bc77b54d67be42ffaa2e728b36216f24066edcb717ae105459e829df4ca054

See more details on using hashes here.

Provenance

The following attestation bundles were made for a11_kit-0.4.1.tar.gz:

Publisher: release.yml on hpnkv/a11

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

File details

Details for the file a11_kit-0.4.1-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for a11_kit-0.4.1-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c5bd5f0f4e896eb223954e5a128e58e33e2a0fdb9241ae70375a0d5643576f58
MD5 0dfde9b812087270c23201c5063904bb
BLAKE2b-256 b6e7e32fb56e268962a7415fe8204ecf4a2e97c6dc99f8d1c5e096736a3257a7

See more details on using hashes here.

Provenance

The following attestation bundles were made for a11_kit-0.4.1-cp314-cp314-manylinux_2_28_x86_64.whl:

Publisher: release.yml on hpnkv/a11

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

File details

Details for the file a11_kit-0.4.1-cp314-cp314-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for a11_kit-0.4.1-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2d00e5541a813be326ca36232780b6ed3ad5b0932fd84e8949a43d0752bdccee
MD5 987fe37efc6a8f19a1828dc97bd22812
BLAKE2b-256 5e66862870d9a129bc6558eb276d047b437b513c79e49c5257c244f5883f9758

See more details on using hashes here.

Provenance

The following attestation bundles were made for a11_kit-0.4.1-cp314-cp314-manylinux_2_28_aarch64.whl:

Publisher: release.yml on hpnkv/a11

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

File details

Details for the file a11_kit-0.4.1-cp314-cp314-macosx_14_0_x86_64.whl.

File metadata

File hashes

Hashes for a11_kit-0.4.1-cp314-cp314-macosx_14_0_x86_64.whl
Algorithm Hash digest
SHA256 e2c8463e2d262192d191b82f0550f6504d1a6109be604751010de609ff9702f8
MD5 ea9aa2737c1369f6b115ae134b1580a4
BLAKE2b-256 d27d3baa549d90abdda24bbb50aa78506c568eb543770b43e80e508df21b947e

See more details on using hashes here.

Provenance

The following attestation bundles were made for a11_kit-0.4.1-cp314-cp314-macosx_14_0_x86_64.whl:

Publisher: release.yml on hpnkv/a11

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

File details

Details for the file a11_kit-0.4.1-cp314-cp314-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for a11_kit-0.4.1-cp314-cp314-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 3b2cd2296597431a38a638f5d04ac6d8b3798666f0e63721acce108aa16ab639
MD5 1291f096df8a63babd52d716667cb340
BLAKE2b-256 28296b7c5daf50a07e677583e677bab411e3871f0acf9c4c4d6314cd8fedde43

See more details on using hashes here.

Provenance

The following attestation bundles were made for a11_kit-0.4.1-cp314-cp314-macosx_14_0_arm64.whl:

Publisher: release.yml on hpnkv/a11

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

File details

Details for the file a11_kit-0.4.1-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for a11_kit-0.4.1-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3018157652db15030f5a9c61ea6300575a6241646c45bb069763b8739f0ad141
MD5 c5528c034ad013fb3c497d9067fe3e45
BLAKE2b-256 5477daff1694e8eea70a3efd20ec4cc750f2386240408c92c9101e74930baddd

See more details on using hashes here.

Provenance

The following attestation bundles were made for a11_kit-0.4.1-cp313-cp313-manylinux_2_28_x86_64.whl:

Publisher: release.yml on hpnkv/a11

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

File details

Details for the file a11_kit-0.4.1-cp313-cp313-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for a11_kit-0.4.1-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3c0bd70100d09b8cf761e55b9bd940601eb44d09e6d45bb1355100dfe633e615
MD5 e94565057dc2984f407a3580918bb1cf
BLAKE2b-256 8b9461bab898592467847899c06969a4dfa1b26aa4d17139f9e364e11584815c

See more details on using hashes here.

Provenance

The following attestation bundles were made for a11_kit-0.4.1-cp313-cp313-manylinux_2_28_aarch64.whl:

Publisher: release.yml on hpnkv/a11

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

File details

Details for the file a11_kit-0.4.1-cp313-cp313-macosx_14_0_x86_64.whl.

File metadata

File hashes

Hashes for a11_kit-0.4.1-cp313-cp313-macosx_14_0_x86_64.whl
Algorithm Hash digest
SHA256 1def72d698ba2d82781a0901b32eff15058138b8c0e8fea90cb67da8f7fd94c4
MD5 14021d9e0c6fde5f0be4ad5dfb207c75
BLAKE2b-256 c850539bc3187323a69c1ce90feb69a207e28d9aa36f8c60e7b8ec983d8efc4d

See more details on using hashes here.

Provenance

The following attestation bundles were made for a11_kit-0.4.1-cp313-cp313-macosx_14_0_x86_64.whl:

Publisher: release.yml on hpnkv/a11

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

File details

Details for the file a11_kit-0.4.1-cp313-cp313-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for a11_kit-0.4.1-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 5349378411904a82acf2c7f4771dfea08d732d69f7e95cb18c1dedccae0d5690
MD5 a8856d1fac05453ba8b528979bafd2c9
BLAKE2b-256 3533b61f75b0298f42772e1d24e7b29d6474afe6fb3a11a2e91f805fac1b6075

See more details on using hashes here.

Provenance

The following attestation bundles were made for a11_kit-0.4.1-cp313-cp313-macosx_14_0_arm64.whl:

Publisher: release.yml on hpnkv/a11

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

File details

Details for the file a11_kit-0.4.1-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for a11_kit-0.4.1-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 45cda310d59a23dee5574c027b8625ccf8f118d1edfdf36fd20f9571e04dbefe
MD5 a97d835ef7b138deb2a926287cf31c32
BLAKE2b-256 0572dd3acb47e502ab4ac87e5ef653cb29c6dc784c0ecf072555398adeb1d0d4

See more details on using hashes here.

Provenance

The following attestation bundles were made for a11_kit-0.4.1-cp312-cp312-manylinux_2_28_x86_64.whl:

Publisher: release.yml on hpnkv/a11

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

File details

Details for the file a11_kit-0.4.1-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for a11_kit-0.4.1-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e90dfc2b5ca573fa2351bc949cd498828d869e82b3c6286d596ec185a883dd4b
MD5 ea7663b552686edfa69de05831045bf6
BLAKE2b-256 2f79366d31a92e3d5732e82c57cbb9d556d9c53911c58fe33e30873d7b7c5737

See more details on using hashes here.

Provenance

The following attestation bundles were made for a11_kit-0.4.1-cp312-cp312-manylinux_2_28_aarch64.whl:

Publisher: release.yml on hpnkv/a11

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

File details

Details for the file a11_kit-0.4.1-cp312-cp312-macosx_14_0_x86_64.whl.

File metadata

File hashes

Hashes for a11_kit-0.4.1-cp312-cp312-macosx_14_0_x86_64.whl
Algorithm Hash digest
SHA256 a3c28b19c17157507477dc6e7c81046871628dee1fba7eacfad6a005d4d0e548
MD5 fe6c163671ee20d857586bf42f3ea058
BLAKE2b-256 8a82afa28c54a0aaf9940bc3e0843d5fa9c97b9509534e54f9ff984f97432002

See more details on using hashes here.

Provenance

The following attestation bundles were made for a11_kit-0.4.1-cp312-cp312-macosx_14_0_x86_64.whl:

Publisher: release.yml on hpnkv/a11

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

File details

Details for the file a11_kit-0.4.1-cp312-cp312-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for a11_kit-0.4.1-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 650ec4b77be4689c48bfc20c3e20b8d214f81df60a4f9a76ff5973d3a66d743e
MD5 1002cd6fab51a195362d6baeeafc5455
BLAKE2b-256 1afd5f449544e69c4f095ba236f2e6dc219131001dcc0d7a8d80ccd980bada67

See more details on using hashes here.

Provenance

The following attestation bundles were made for a11_kit-0.4.1-cp312-cp312-macosx_14_0_arm64.whl:

Publisher: release.yml on hpnkv/a11

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

File details

Details for the file a11_kit-0.4.1-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for a11_kit-0.4.1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7fc1084cb3dbc562fcb70a87e9a63347d460f0f36a599322441de640bca241c4
MD5 a11b568a4b1d1a34afe24e6a682098f8
BLAKE2b-256 80f8236407dce8703efee802c3434491fa5cbf8d358c80cf528b0f1cb0a0f2a6

See more details on using hashes here.

Provenance

The following attestation bundles were made for a11_kit-0.4.1-cp311-cp311-manylinux_2_28_x86_64.whl:

Publisher: release.yml on hpnkv/a11

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

File details

Details for the file a11_kit-0.4.1-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for a11_kit-0.4.1-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 fc5ae6a115b7b6618fd3ccaabb10f07c75705befe841d9d4489cbba8614ed8db
MD5 8cd14a135a9e71e90c6b9ce3c9b252b9
BLAKE2b-256 f135bbdf8d59a97de2fa03dab5b2deae7cacaaa54eaf44f09d440d497f14c84f

See more details on using hashes here.

Provenance

The following attestation bundles were made for a11_kit-0.4.1-cp311-cp311-manylinux_2_28_aarch64.whl:

Publisher: release.yml on hpnkv/a11

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

File details

Details for the file a11_kit-0.4.1-cp311-cp311-macosx_14_0_x86_64.whl.

File metadata

File hashes

Hashes for a11_kit-0.4.1-cp311-cp311-macosx_14_0_x86_64.whl
Algorithm Hash digest
SHA256 7ca288828bdc3a97515d3ca8eeaf55895a55895931b610ad5b637c1572fffc5d
MD5 8ed1244db01193dd39277d2868f848a6
BLAKE2b-256 8dfc33ccdc3acdbefea6c9d63147a02e962982e8abef577ed327b04c02eea670

See more details on using hashes here.

Provenance

The following attestation bundles were made for a11_kit-0.4.1-cp311-cp311-macosx_14_0_x86_64.whl:

Publisher: release.yml on hpnkv/a11

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

File details

Details for the file a11_kit-0.4.1-cp311-cp311-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for a11_kit-0.4.1-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 67b15541a4a568e26a984358d816c6aabe05d708fec117489162ddc319b3aeef
MD5 0b324b70001b7857140f2edeb4d38a8b
BLAKE2b-256 8946df48d7ec2d5e7f444b0ab015aa4cbcc6b6e1be75893d373b21ad63593112

See more details on using hashes here.

Provenance

The following attestation bundles were made for a11_kit-0.4.1-cp311-cp311-macosx_14_0_arm64.whl:

Publisher: release.yml on hpnkv/a11

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

Release history Release notifications | RSS feed

0.5.6

17 files

0.5.5

17 files

0.5.4

17 files

0.5.3

17 files

0.5.2

17 files

0.5.1

17 files

0.5.0

17 files

0.4.6

17 files

0.4.4

17 files

0.4.2

17 files

This release

0.4.1 This release

17 files

0.3.3

17 files

0.3.2

17 files

0.3.1

17 files

0.3.0

17 files

0.2.5

17 files

0.2.3

17 files

0.2.2

17 files

0.2.1

17 files

0.2.0

17 files

0.1.8

17 files

0.1.7

17 files

0.1.6

17 files

0.1.5

16 files

0.1.4

16 files

0.1.3

8 files

0.1.2

8 files

0.1.1

17 files

0.1.0

3 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