Skip to main content

OpenAVT

CI PyPI Python 3.11+ Apache 2.0 Experimental

Closing the Voice-to-Business trust gap. TLS over voice, built for agents.

A personal AI agent calls a bank, utility or store on your behalf. The business needs to verify the agent, the customer it represents and the actions that customer authorized. Conversation alone cannot establish those permissions.

OpenAVT (Open Agent Voice TLS) carries cryptographic identity, encrypted requests and signed customer permissions through the call's actual audio. Participating businesses check identity and permission before acting.

For business teams: the problem, value and adoption path. For developers: run the demo or explore the architecture.

The trust gap

Risk OpenAVT's approach
Audio prompt injection and hijacking: an IVR or counterparty's speech can try to redirect an agent or extract data. Use protected structured requests and enforce signed permissions outside the LLM. Speech cannot expand a grant.
Missing cryptographic identity: a voice, caller ID or spoken passcode does not prove an agent's key or customer authority. Mutual TLS authenticates both endpoints; customer grants travel inside TLS rather than being spoken aloud.
Scope creep: a request to read data can become a request to change an account. Bind each grant to the agent certificate, customer, business, action and resource; check expiry, revocation and single-use state.

TLS does not make an LLM immune to prompt injection. These checks constrain requests at the participating backend; preventing leaks through speech or other tools still requires controls in the calling agent.

How it works

  1. Enroll: the Agent Voice Authority (AVA) issues an agent certificate after key proof.
  2. Delegate: a separate business signer issues a scoped customer grant.
  3. Call: mutual TLS 1.3 authenticates the peers through audio and protects requests and responses.
  4. Enforce: the business checks the grant against the authenticated peer before executing the permitted action.

The current demo allows reading Alice's order, then denies an address change under the same read-only scope. Keys and grant credentials stay out of model inputs. Identity and permission details →

Try the demo

Requires Python 3.11+ and the openssl executable. No OpenAI key needed.

python -m pip install 'openavt[webrtc,authority]'
openavt delegation-demo

The demo enrolls an agent, issues customer consent, and establishes a live local audio call. It accepts one authorized request and rejects seven misuse cases, including scope escalation, replay and revocation. It saves a report and audio under output/.

For two real OpenAI voice agents, configure OPENAI_API_KEY locally, then run:

python -m pip install 'openavt[agents,authority]'
openavt delegation-demo --agents

More demos and installation options →

Sub-second handshakes

Measured on an established local 64 kbps G.711 PCMU audio call:

Run Full mutual TLS handshake Evidence
main CI, 5 fresh calls, October 11, 2026 0.561 s median · 0.581 s max Benchmark
Two OpenAI agents with AVA and customer delegation 0.623 s Demo results

The timer includes both authenticated endpoints and the final audio ACK. It excludes certificate creation, call setup and LLM/speech time. These local results are not a carrier or Internet latency guarantee. The fast PCM profile requires an unchanged digital PCMU path; transcoding or audio processing can break it. Measurements and reproduction →

Scope

This is an experimental local prototype. Both peers run on one machine; public Internet, carrier/PSTN and microphone paths have not been verified. Ordinary speech is outside the inner TLS session. There is no WebRTC data channel carrying the protected requests.

Certificates prove registered account/key control. Customer authentication uses demo credentials; provider verification, real customer login and production CA operations remain future work. Banking, payments and utility integrations are target use cases; the implemented demo returns a fixed read-only order result. Trust boundaries →

Documentation

Goal Guide
Evaluate the business case and adoption path Voice-to-Business trust gap
Install and choose a demo Quickstart
Understand certificates and customer consent Authority and delegation
Run a persistent authority AVA CLI walkthrough
Integrate the transport Architecture and library usage
Reproduce the timings Performance
Inspect tests and evidence Verification
Build and publish the package Releasing

Metadata

Release files for openavt 0.1.3

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

Source distribution (sdist)

Source distribution for openavt 0.1.3
File Size Uploaded
openavt-0.1.3.tar.gz 194.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for openavt 0.1.3
File Interpreter ABI Platform
openavt-0.1.3-py3-none-any.whl Python 3 none any Details

Total release size: 249.5 kB

Release files / openavt-0.1.3.tar.gz

Download URL openavt-0.1.3.tar.gz
Size 194.9 kB
Tags Source
SHA-256 checksum
How to use checksums
47e313d885a6879f4d4be11460178751c91b16472923c41ad730ff0777beba2b
BLAKE2b-256 checksum
How to use checksums
a37459436ce4894f9fd0ed63875b48d08bcff6b3b4a5c7c5c36e0de64f9b6ccf
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 12, 2026.

Transparency log

Release files / openavt-0.1.3-py3-none-any.whl

Download URL openavt-0.1.3-py3-none-any.whl
Size 54.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0e91e768b3f686a0486cdda8640f289bcc27fb5a691b5ae8da48ec520427a64f
BLAKE2b-256 checksum
How to use checksums
402e80b52fb05a32cddecf4ff774110b651ec188c35e39d623925f641607d228
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 12, 2026.

Transparency log

Release history Release notifications | RSS feed

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

This release

0.1.3 This release

2 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