aidr-agent (Python)
Give an AI agent a verifiable AIDR identity from its first run. Apache-2.0.
pip install "aidr-agent[requests]" # add ,langchain for the LangChain tools
from aidr_agent import Agent
agent = Agent.load_or_enroll("research-01", audiences=["https://shop.example"])
agent.session().get("https://shop.example/products") # signed; other sites get anonymous requests
- An organisation admin issues an enrollment token in the console (Organisations → Enrollment tokens).
- Put it in
AIDR_ENROLLMENT_TOKENwhere the agent runs. The first run generates the key on that machine, enrolls, proves the key and saves the identity; later runs load it. The token is then no longer needed. - Requests to the agent's allowed sites carry an RFC 9421 signature and a short-lived credential.
Anything else goes out unsigned, or is refused with
on_unlisted="refuse". Plain http is never signed, except to localhost.
Python 3.10+. Extras: requests (for agent.session() / agent.auth()), langchain (the tools, on
langchain-core), langchain-community (the RequestsToolkit wrapper). It installs aidr-crypto
and aidr-core, the same signing code the registry runs.
Where the identity is kept
| Store | Use it for | How |
|---|---|---|
FileKeyStore (default) |
laptops, VMs, persistent volumes | ~/.aidr/agents/<name>/identity.json, mode 0600 (AIDR_AGENT_HOME moves it) |
EnvKeyStore |
containers, serverless | python -m aidr_agent enroll --name <name> --print-identity, then store the line as the secret AIDR_AGENT_IDENTITY |
A container that starts with an empty disk would enroll a new agent on every start and spend a use of
the token each time: use AIDR_AGENT_IDENTITY there.
HTTP clients
agent.session(): arequests.Session.agent.auth(): forrequests.get(url, auth=…).agent.httpx_auth(): forhttpx.Clientandhttpx.AsyncClient.agent.sign_headers(method, url): the headers themselves, for any other client.
LangChain
from aidr_agent.langchain import aidr_http_tools
tools = aidr_http_tools(agent) # http_get, http_post: signed, and limited to the agent's sites
The tools reach only the origins they are given (by default the agent's allowed audiences). An LLM
choosing URLs is how a prompt-injected agent would present its identity somewhere it should not, or
reach internal addresses. For code still on langchain-community's RequestsToolkit,
signed_requests_wrapper(agent) is a drop-in TextRequestsWrapper that signs, sync and async.
langchain-community is being sunset, so new code should use the tools.
Command line
aidr-agent enroll --name research-01 --audience https://shop.example
aidr-agent whoami --name research-01
(python -m aidr_agent … is the same command.)
The token is read only from AIDR_ENROLLMENT_TOKEN, never from the command line.
Metadata
Release files for aidr-agent 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| aidr_agent-0.1.1.tar.gz | 17.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| aidr_agent-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 40.0 kB
Release files / aidr_agent-0.1.1.tar.gz
| Download URL | aidr_agent-0.1.1.tar.gz |
|---|---|
| Size | 17.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
59a43d317dcbfd4e37cd39de2b5bccb914363e41bc1d28d43a5acb166677474e
|
|
BLAKE2b-256 checksum How to use checksums |
c2dd528952fd7225ac9bf2395831208add2367cb027114c37d964b75bc78d6fe
|
| 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 Oct 2, 2026.
Transparency logRelease files / aidr_agent-0.1.1-py3-none-any.whl
| Download URL | aidr_agent-0.1.1-py3-none-any.whl |
|---|---|
| Size | 22.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7cf3300c9664bb1cd88552628cf47d53a1ba086294bd345c420565d24082472b
|
|
BLAKE2b-256 checksum How to use checksums |
0178666429447ed53f9489d152ac908630ae3ff2ec13639798f4813de7cd3c9f
|
| 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 Oct 2, 2026.
Transparency log