Skip to main content

A11

A11

Build AI applications like normal software.

A11 is the open-source runtime for connecting models, tools and interfaces while keeping your architecture. It gives ordinary asynchronous code named streams, concurrency, tools and local-to-remote execution, and exposes the running application to Studio.

The Python API runs on a native C++20 runtime. TypeScript, Kotlin, C++ and Flow use the same action boundary where an application needs another language or process.

  • Named streams instead of mixed provider events. Read model text, reasoning, tool activity, progress, and durable interaction state from separate ports.
  • The same action contract locally and remotely. Move a handler to a GPU host, browser, or service without changing its inputs and outputs.
  • Deterministic runtime composition with Flow. Check and load compositions at runtime with defined concurrency, draining, deadlines, cancellation, and error propagation.

Run the first action · Try the live research agent · Read the documentation · Star A11

Try A11 live

The hosted parallel research agent plans a topic, searches the web for each brief, reviews the returned evidence concurrently, and streams a cited report to the browser. Its default model and search backends need no visitor account or API key.

Run your first streaming action

Install the core runtime on Python 3.11 or later:

python -m venv .venv
source .venv/bin/activate
pip install a11-kit

Save this as quickstart.py. The function signature becomes an action schema, and its asynchronous iterator becomes a named streaming output:

import asyncio
from collections.abc import AsyncIterator

import a11


REGISTRY = a11.ActionRegistry()


@REGISTRY.action(name="split-words", output="words")
async def split_words(text: str) -> AsyncIterator[str]:
    """Emit the words in a line as they become available."""
    for word in text.split():
        yield word


async def main() -> None:
    action = REGISTRY.make_action("split-words")
    await action["text"].finalize("named streams arrive early")
    action.run()

    async for word in action["words"]:
        print(word)
    await action.wait()


asyncio.run(main())

Run it:

python quickstart.py

The output port streams four values and then closes successfully. The same REGISTRY can be served over WebSocket, HTTP SSE, or WebRTC; callers still use the text and words ports.

Add model providers when the application needs them. With Ollama already running locally:

pip install "a11-kit[llm]"
a11 chat --provider ollama --no-voice --no-shell-tools

a11 chat reuses a gateway at the default endpoint, or starts one for the duration of the chat with the current directory as its coding workspace. --cwd PATH selects another workspace for a new gateway. An explicit --gateway URL must be reachable.

In a coding chat, /sandbox unrestricted grants host filesystem access and disables kernel process confinement. /sandbox workspace-write or /sandbox read-only restores confinement. Approval remains a separate setting (/approval suggest|auto). Sandbox changes affect subsequent tool calls for all clients of that gateway, not already-running processes.

Studio and IDE clients can call the UI-only configure_coding_agent action with sandbox_mode (read-only, workspace-write, or unrestricted) and/or approval_mode (suggest or auto). Omitted fields keep their current values; the result contains approval_mode, sandbox_ceiling, and network. This control is excluded from the coding agent's model-facing action list.

Input questions appear above the TUI composer. Use Up/Down to select and Enter to answer, or type a response when free text is allowed. An output-area status line shows Working during model calls and Waiting for input while a question is pending.

Add capabilities incrementally

Streaming. An asynchronous iterator yields values before it finishes. Named outputs give model text, reasoning, progress and structured values their own interfaces. The caller reads those streams and checks the action's final status separately.

Concurrency. Use ordinary Python tasks or C++ runtime primitives for independent work. Use nested A11 actions when the runtime should understand a parent/child relationship and propagate cancellation.

Tools. Expose registered actions to model calls through the SDK, or serve the same registry through MCP. The application still owns validation, authorization and policy.

Remote execution. Serve a registry from another process or machine. The caller configures a connection and calls the action; the handler's input and output contract stays stable.

Flow is available when an application needs a composition expressed as data. It is optional: model APIs, MCP, LangGraph and existing application code can remain part of the stack.

Inspect the work with Studio

Open Studio to explore an endpoint's action schemas, run calls and inspect streamed outputs, logs, timings, failures and cancellation.

A11 Studio showing an action and streamed results

Explore complete applications

  • Deep research plans a topic, searches the web in parallel and streams a cited synthesis.
  • Model interactions present one streaming interface across Claude, Gemini, Ollama and OpenAI-compatible providers.
  • The a11 chat --voice-model ... path keeps audio capture, transcription and model interaction on separate streams.
  • Generative media streams progress independently from generated image bytes.
  • Browser tools let a model call typed actions implemented inside an existing page.

Each guide names its provider, model and hardware prerequisites. Local actions and remote transports do not require a model.

Install only what the application needs

The Python distribution is a11-kit, imported as a11. Provider integrations are optional extras such as a11-kit[ollama], a11-kit[claude] and a11-kit[openai]. Browser and TypeScript applications use:

npm install @curiositystack/a11

The standalone C++20 runtime needs no Python installation. Build and link it through its exported CMake targets using the instructions below.

Go deeper

Questions and rough edges are useful project signals: start a discussion, report friction, or tell us about an integration.

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 <cstddef>
#include <iostream>
#include <memory>
#include <optional>
#include <string>
#include <vector>

#include <absl/log/log.h>
#include <absl/status/status.h>
#include <absl/status/status_macros.h>
#include <absl/strings/str_split.h>

#include "a11/actions/registry.h"
#include "a11/nodes/async_node.h"

namespace {

using a11::actions::Action;
using a11::actions::ActionPortSchema;
using a11::actions::ActionRegistry;
using a11::actions::ActionSchema;
using a11::nodes::AsyncNode;

ActionSchema SplitWordsSchema() {
  return ActionSchema{
      .name = "split-words",
      .inputs = {{"text", ActionPortSchema{
                             .name = "text", .type = "text/plain"}}},
      .outputs = {{"words", ActionPortSchema{
                               .name = "words", .type = "text/plain"}}},
  };
}

absl::Status SplitWords(std::shared_ptr<Action> action) {
  ABSL_ASSIGN_OR_RETURN(std::shared_ptr<AsyncNode> input,
                        action->GetInput("text"));
  ABSL_ASSIGN_OR_RETURN(
      std::optional<std::string> text,
      input->NextObject<std::string>().Await());
  if (!text.has_value()) {
    return absl::FailedPreconditionError("text input ended before a value");
  }

  ABSL_ASSIGN_OR_RETURN(std::shared_ptr<AsyncNode> output,
                        action->GetOutput("words"));
  std::vector<std::string> words =
      absl::StrSplit(*text, absl::ByAnyChar(" \t\n"), absl::SkipWhitespace());
  if (words.empty()) {
    return output->Finalize({.wait = true}).Await().status();
  }
  for (size_t index = 0; index + 1 < words.size(); ++index) {
    ABSL_RETURN_IF_ERROR(output->Put(words[index]).Await().status());
  }
  return output->Finalize(words.back(), {.wait = true}).Await().status();
}

absl::Status RunExample() {
  auto registry = std::make_shared<ActionRegistry>();
  ABSL_RETURN_IF_ERROR(registry->RegisterSync(
      "split-words", SplitWordsSchema(), SplitWords));
  ABSL_ASSIGN_OR_RETURN(std::shared_ptr<Action> action,
                        registry->MakeAction("split-words"));

  ABSL_ASSIGN_OR_RETURN(std::shared_ptr<AsyncNode> input,
                        action->GetInput("text"));
  ABSL_RETURN_IF_ERROR(
      input->Finalize(std::string("named streams arrive early"),
                      {.wait = true})
          .Await()
          .status());
  ABSL_RETURN_IF_ERROR(action->Run().status());

  ABSL_ASSIGN_OR_RETURN(std::shared_ptr<AsyncNode> output,
                        action->GetOutput("words"));
  while (true) {
    ABSL_ASSIGN_OR_RETURN(std::optional<std::string> word,
                          output->NextObject<std::string>().Await());
    if (!word.has_value()) break;
    std::cout << *word << '\n';
  }
  return action->Wait().Await().status();
}

}  // namespace

int main() {
  const absl::Status status = RunExample();
  if (!status.ok()) {
    LOG(ERROR) << status;
    return 1;
  }
  return 0;
}

This is the same split-words action as the Python quickstart: the registry owns its schema and handler, the input carries one complete value, and the output emits words as a stream. Reading the output before Wait() drains it while the handler is running and preserves backpressure.

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.

Metadata

Release files for a11-kit 0.7.13

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

Source distribution (sdist)

Source distribution for a11-kit 0.7.13
File Size Uploaded Provenance Actions
a11_kit-0.7.13.tar.gz 2.8 MB With provenance Details for a11_kit-0.7.13.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for a11-kit 0.7.13
File Actions
a11_kit-0.7.13-cp314-cp314-manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64 Details for a11_kit-0.7.13-cp314-cp314-manylinux_2_28_x86_64.whl
a11_kit-0.7.13-cp314-cp314-manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ ARM64 Details for a11_kit-0.7.13-cp314-cp314-manylinux_2_28_aarch64.whl
a11_kit-0.7.13-cp314-cp314-macosx_14_0_arm64.whl CPython 3.14 CPython 3.14 macOS 14.0+ ARM64 Details for a11_kit-0.7.13-cp314-cp314-macosx_14_0_arm64.whl
a11_kit-0.7.13-cp313-cp313-manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64 Details for a11_kit-0.7.13-cp313-cp313-manylinux_2_28_x86_64.whl
a11_kit-0.7.13-cp313-cp313-manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ ARM64 Details for a11_kit-0.7.13-cp313-cp313-manylinux_2_28_aarch64.whl
a11_kit-0.7.13-cp313-cp313-macosx_14_0_arm64.whl CPython 3.13 CPython 3.13 macOS 14.0+ ARM64 Details for a11_kit-0.7.13-cp313-cp313-macosx_14_0_arm64.whl
a11_kit-0.7.13-cp312-cp312-manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64 Details for a11_kit-0.7.13-cp312-cp312-manylinux_2_28_x86_64.whl
a11_kit-0.7.13-cp312-cp312-manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ ARM64 Details for a11_kit-0.7.13-cp312-cp312-manylinux_2_28_aarch64.whl
a11_kit-0.7.13-cp312-cp312-macosx_14_0_arm64.whl CPython 3.12 CPython 3.12 macOS 14.0+ ARM64 Details for a11_kit-0.7.13-cp312-cp312-macosx_14_0_arm64.whl
a11_kit-0.7.13-cp311-cp311-manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64 Details for a11_kit-0.7.13-cp311-cp311-manylinux_2_28_x86_64.whl
a11_kit-0.7.13-cp311-cp311-manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ ARM64 Details for a11_kit-0.7.13-cp311-cp311-manylinux_2_28_aarch64.whl
a11_kit-0.7.13-cp311-cp311-macosx_14_0_arm64.whl CPython 3.11 CPython 3.11 macOS 14.0+ ARM64 Details for a11_kit-0.7.13-cp311-cp311-macosx_14_0_arm64.whl

Total release size: 151.4 MB

Release files / a11_kit-0.7.13.tar.gz

Download URL a11_kit-0.7.13.tar.gz
Size 2.8 MB
Tags Source
SHA-256 checksum
How to use checksums
19f067b6ea2ba3f898cb5f9752b7242d5e2416ad7948e48f234347390b483bec
BLAKE2b-256 checksum
How to use checksums
e5745b9fd741ea3f22b3a2d191f5346d19aa60270c09cfc3977f99f9f9f2a0e2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 31, 2026.

Transparency log

Release files / a11_kit-0.7.13-cp314-cp314-manylinux_2_28_x86_64.whl

Download URL a11_kit-0.7.13-cp314-cp314-manylinux_2_28_x86_64.whl
Size 13.5 MB
Tags CPython 3.14 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
8e6d7e17b80f2560d84bcdcef4fe5383a4c0d5b21e4ac849cd0e8622ce3fae07
BLAKE2b-256 checksum
How to use checksums
4988eef6cb46d0b940682d8fd4309d5eaed5e5f8e175a66fece028f4e5cf3deb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 31, 2026.

Transparency log

Release files / a11_kit-0.7.13-cp314-cp314-manylinux_2_28_aarch64.whl

Download URL a11_kit-0.7.13-cp314-cp314-manylinux_2_28_aarch64.whl
Size 12.8 MB
Tags CPython 3.14 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
5753202018c8d32f3735d0f8c7085e1d3e929a6d4bca0b86456e4d1abbbf8a85
BLAKE2b-256 checksum
How to use checksums
b49af89aeab660df8a3599bc9fefe70c4eca6a50303d58493efcbe007e9a3cbc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 31, 2026.

Transparency log

Release files / a11_kit-0.7.13-cp314-cp314-macosx_14_0_arm64.whl

Download URL a11_kit-0.7.13-cp314-cp314-macosx_14_0_arm64.whl
Size 10.8 MB
Tags CPython 3.14 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
010408b6c82e77f1243ee827c030244e53c77c0c7f61d70a9b48ded9775854c0
BLAKE2b-256 checksum
How to use checksums
b360b06c20a895ac264fecdad7195f35ea60e419adc212c383ca3e23d0c613e4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 31, 2026.

Transparency log

Release files / a11_kit-0.7.13-cp313-cp313-manylinux_2_28_x86_64.whl

Download URL a11_kit-0.7.13-cp313-cp313-manylinux_2_28_x86_64.whl
Size 13.5 MB
Tags CPython 3.13 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
40c16bf30d212310cf30ea6f3d2067d42a29648b720f1ef00a40f7fe0ebc4023
BLAKE2b-256 checksum
How to use checksums
837033bf76764fd4e0f25e558792fb3eee7e8c8822b6cdcb44aa527cd7236111
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 31, 2026.

Transparency log

Release files / a11_kit-0.7.13-cp313-cp313-manylinux_2_28_aarch64.whl

Download URL a11_kit-0.7.13-cp313-cp313-manylinux_2_28_aarch64.whl
Size 12.8 MB
Tags CPython 3.13 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
362a88b8b0c9f55094b70ff597f8f87b42a2993888f4bf03f3f5d358143491b4
BLAKE2b-256 checksum
How to use checksums
31b63d4781ea841e0cd651594bfae844f34fb366d269f55880d4793530a67c21
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 31, 2026.

Transparency log

Release files / a11_kit-0.7.13-cp313-cp313-macosx_14_0_arm64.whl

Download URL a11_kit-0.7.13-cp313-cp313-macosx_14_0_arm64.whl
Size 10.8 MB
Tags CPython 3.13 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
a98215bde3ea2334f7e3bb85bd401e2d8bbcff0eb7e1b232e1aa0f5ec084b407
BLAKE2b-256 checksum
How to use checksums
5c12e8392aa1c5e2ff14a2923c4d7f7d5071d530692cc183a3ae1e68854dbc89
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 31, 2026.

Transparency log

Release files / a11_kit-0.7.13-cp312-cp312-manylinux_2_28_x86_64.whl

Download URL a11_kit-0.7.13-cp312-cp312-manylinux_2_28_x86_64.whl
Size 13.5 MB
Tags CPython 3.12 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
ba9834c013fd79dd54abd38c84a3bb9c923a9bf8795d706755e359f704b682b1
BLAKE2b-256 checksum
How to use checksums
10923d3e4657fbb90f08f56c62257de4b8891d46862161712e588c7f43476f30
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 31, 2026.

Transparency log

Release files / a11_kit-0.7.13-cp312-cp312-manylinux_2_28_aarch64.whl

Download URL a11_kit-0.7.13-cp312-cp312-manylinux_2_28_aarch64.whl
Size 12.8 MB
Tags CPython 3.12 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
9cc197fe7e65660a06f87c1020c3d5007f2762db8d3fc1ea49eb4c62f37ec801
BLAKE2b-256 checksum
How to use checksums
a7c83f4e1ed2c29ded6c7bb48940738f71f86b34f5eca8ad4609f0b1bbe7010a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 31, 2026.

Transparency log

Release files / a11_kit-0.7.13-cp312-cp312-macosx_14_0_arm64.whl

Download URL a11_kit-0.7.13-cp312-cp312-macosx_14_0_arm64.whl
Size 10.8 MB
Tags CPython 3.12 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
663e7fc6468de2823c4f615c6d2809b5b772ff8f95e266b527fd3cce1c09c107
BLAKE2b-256 checksum
How to use checksums
63d4eb8e0f2e9aaf1f7dddaf69b76ded2c35b4806a3775f988bdbf59208ea06f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 31, 2026.

Transparency log

Release files / a11_kit-0.7.13-cp311-cp311-manylinux_2_28_x86_64.whl

Download URL a11_kit-0.7.13-cp311-cp311-manylinux_2_28_x86_64.whl
Size 13.5 MB
Tags CPython 3.11 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
08efda213cdc42e8a0d6234549e8270f6d940f2c8faa0553f4c288d0bfce109c
BLAKE2b-256 checksum
How to use checksums
f9d4c5595f9114e6d37c7daec51f6567a68472fd04c9cfd8f741b3f10b5f0429
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 31, 2026.

Transparency log

Release files / a11_kit-0.7.13-cp311-cp311-manylinux_2_28_aarch64.whl

Download URL a11_kit-0.7.13-cp311-cp311-manylinux_2_28_aarch64.whl
Size 12.8 MB
Tags CPython 3.11 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
e8d79fc0b7ad344577961d4636a9eadac77a00edd25b44c3321bbce07379d7d8
BLAKE2b-256 checksum
How to use checksums
0037c76a69f7b0b777bcdaff6dbea18733cb64566da9a5a785e96bc4a79e425b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 31, 2026.

Transparency log

Release files / a11_kit-0.7.13-cp311-cp311-macosx_14_0_arm64.whl

Download URL a11_kit-0.7.13-cp311-cp311-macosx_14_0_arm64.whl
Size 10.8 MB
Tags CPython 3.11 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
40ee2607ad7044d4d85213c0cf0d2c4599e8f9088122c57d0102645c907d2607
BLAKE2b-256 checksum
How to use checksums
d945575abf2cae7384c815ed5a79e308e371100626d28dd7eb6b15661b9bb482
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 31, 2026.

Transparency log

Security for a11-kit 0.7.13

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 13 files in this release have been uploaded with provenance metadata.

Select from 13 files

Attestation for a11_kit-0.7.13.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 31, 2026.

Transparency log

A 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.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.7.13 This release

13 release files Full provenance

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