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.
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
- Build a parallel research agent in Python.
- Stream one model interface across Claude, Gemini, and Ollama.
- Turn an application action into an LLM tool.
- Move a local action behind a remote service.
- Compose allowed actions safely at runtime.
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.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| a11_kit-0.7.6.tar.gz | 2.5 MB | Details |
Built distributions (wheels)
Total release size: 141.3 MB
Release files / a11_kit-0.7.6.tar.gz
| Download URL | a11_kit-0.7.6.tar.gz |
|---|---|
| Size | 2.5 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
93df1ceabcb8dcd34e2af21928df8443919265a370a4b0233bd3d8ec19e9eec6
|
|
BLAKE2b-256 checksum How to use checksums |
4e80ce539326cc249427a40af6b1eadd4599b4075bb270f4cfa1ff2f9325946b
|
| 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 Sep 16, 2026.
Transparency logRelease files / a11_kit-0.7.6-cp314-cp314-manylinux_2_28_x86_64.whl
| Download URL | a11_kit-0.7.6-cp314-cp314-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 12.6 MB |
| Tags | CPython 3.14 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
6637ac39e4364c9a92a5673afa383f45d6ef28a56bc62788a9d8de3bd936e52c
|
|
BLAKE2b-256 checksum How to use checksums |
4fc094802fa85ebab1b819b99ea6e273de90fdb284b1d4524b39d554994e92cb
|
| 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 Sep 16, 2026.
Transparency logRelease files / a11_kit-0.7.6-cp314-cp314-manylinux_2_28_aarch64.whl
| Download URL | a11_kit-0.7.6-cp314-cp314-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 12.0 MB |
| Tags | CPython 3.14 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
4e8e1a7bd9e58f8fc044b65522fc35e2b4cf93fce22a224d151e0181a1e1b394
|
|
BLAKE2b-256 checksum How to use checksums |
7a6e0827af5e78160268fce92989d45a88e3f23049e24d4705888b7a0c40854f
|
| 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 Sep 16, 2026.
Transparency logRelease files / a11_kit-0.7.6-cp314-cp314-macosx_14_0_arm64.whl
| Download URL | a11_kit-0.7.6-cp314-cp314-macosx_14_0_arm64.whl |
|---|---|
| Size | 10.1 MB |
| Tags | CPython 3.14 macOS 14.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
e1c6c57eca19ad741f0d760ef29f2541cc50bf22cd58a93798b8df6dc619a966
|
|
BLAKE2b-256 checksum How to use checksums |
53abaf6ad0f698b595ec6230f12dc2621d82fa6344fffdcd4c90b65aed430fec
|
| 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 Sep 16, 2026.
Transparency logRelease files / a11_kit-0.7.6-cp313-cp313-manylinux_2_28_x86_64.whl
| Download URL | a11_kit-0.7.6-cp313-cp313-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 12.6 MB |
| Tags | CPython 3.13 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
4c3ddac999a9e41cf0244f964722d71b80b9f6c27198a645d4256ddf96dd8cbb
|
|
BLAKE2b-256 checksum How to use checksums |
d3264056daacebf7af09ff34e04cce3a339673fdb95c9fcc9d3d65f51ee22f6b
|
| 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 Sep 16, 2026.
Transparency logRelease files / a11_kit-0.7.6-cp313-cp313-manylinux_2_28_aarch64.whl
| Download URL | a11_kit-0.7.6-cp313-cp313-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 12.0 MB |
| Tags | CPython 3.13 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
f5c87ff3cbf3dcebbb208a13c511786d0f3c45e62e1c32715f3fee6fca5f03e1
|
|
BLAKE2b-256 checksum How to use checksums |
b116993b56cddc10e74a0efcba9aee6fd56656b8884be9ceb7f1a9e787bf996f
|
| 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 Sep 16, 2026.
Transparency logRelease files / a11_kit-0.7.6-cp313-cp313-macosx_14_0_arm64.whl
| Download URL | a11_kit-0.7.6-cp313-cp313-macosx_14_0_arm64.whl |
|---|---|
| Size | 10.1 MB |
| Tags | CPython 3.13 macOS 14.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
e9a0e184040155317fb02af2a679f6777b55cc45a5f7ef58122ccfb4918d34b3
|
|
BLAKE2b-256 checksum How to use checksums |
c35047b4641652da2cfad630ddb96d277f7ca64c8a0e562c093444e8219c2096
|
| 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 Sep 16, 2026.
Transparency logRelease files / a11_kit-0.7.6-cp312-cp312-manylinux_2_28_x86_64.whl
| Download URL | a11_kit-0.7.6-cp312-cp312-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 12.6 MB |
| Tags | CPython 3.12 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
49e9a40678fe24dfb2d7f18e0a9a0df6980d7004fd1c58ada5b346d2de88f4c0
|
|
BLAKE2b-256 checksum How to use checksums |
7b06ea929b33fa3a5a754f5e11510c727c5a3cca5862f05f0a2b749e7071b1ad
|
| 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 Sep 16, 2026.
Transparency logRelease files / a11_kit-0.7.6-cp312-cp312-manylinux_2_28_aarch64.whl
| Download URL | a11_kit-0.7.6-cp312-cp312-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 12.0 MB |
| Tags | CPython 3.12 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
66f528fdd6094a0031d55a72ba97c4faeebb789983b6d92a656710541a06c88c
|
|
BLAKE2b-256 checksum How to use checksums |
21ca460bf34268bd05aaf8128a805b20b21df9c2083ca913a880ad6f8af702e9
|
| 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 Sep 16, 2026.
Transparency logRelease files / a11_kit-0.7.6-cp312-cp312-macosx_14_0_arm64.whl
| Download URL | a11_kit-0.7.6-cp312-cp312-macosx_14_0_arm64.whl |
|---|---|
| Size | 10.1 MB |
| Tags | CPython 3.12 macOS 14.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
28425a7b136a197202518e56debd21afffa6a05836295f673629b587b685a678
|
|
BLAKE2b-256 checksum How to use checksums |
c64e50ce324f1e6f248315249508a0216cd9dc62b1a9efed7e7e4cfc4835736f
|
| 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 Sep 16, 2026.
Transparency logRelease files / a11_kit-0.7.6-cp311-cp311-manylinux_2_28_x86_64.whl
| Download URL | a11_kit-0.7.6-cp311-cp311-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 12.6 MB |
| Tags | CPython 3.11 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
1c7b44e6b87d9ce8cdcbbd807c296cf5897042fc0fa42af0d47da4509e07e926
|
|
BLAKE2b-256 checksum How to use checksums |
748ef6d0c2be160ae614b3d25ff793ec2459c9a81d0433005156ec35a64138ef
|
| 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 Sep 16, 2026.
Transparency logRelease files / a11_kit-0.7.6-cp311-cp311-manylinux_2_28_aarch64.whl
| Download URL | a11_kit-0.7.6-cp311-cp311-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 12.0 MB |
| Tags | CPython 3.11 Linux glibc 2.28+ ARM64 |
|
SHA-256 checksum How to use checksums |
e26ce7a2e7c6b53b06fa27d112b52fd57848d76667790468f4b5dea08a8362da
|
|
BLAKE2b-256 checksum How to use checksums |
9f7f4f9d3bdb069c1e436c10e56535d1d42179a77844da4253f6d560f5c1d4a5
|
| 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 Sep 16, 2026.
Transparency logRelease files / a11_kit-0.7.6-cp311-cp311-macosx_14_0_arm64.whl
| Download URL | a11_kit-0.7.6-cp311-cp311-macosx_14_0_arm64.whl |
|---|---|
| Size | 10.1 MB |
| Tags | CPython 3.11 macOS 14.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
c0b6af6fd5bdd19f54cc6ff3fed4038735071b141f0a2bf63f43d003537e1e87
|
|
BLAKE2b-256 checksum How to use checksums |
9e911092164cf2153a1d789a70492301f9e958c33fc209f00daea6eefbe89c50
|
| 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 Sep 16, 2026.
Transparency log