Lelu · Python SDK
Python client for Lelu — the confidence-aware authorization engine for autonomous AI agents.
Author: Abenezer Getachew
Maintainer: Abenezer Getachew
Installation
pip install lelu-agent-auth-sdk
Quick start
Option 1: Zero-config local (recommended)
Run the local engine once — it self-generates its key and policy in ~/.lelu,
no account needed:
npx -y lelu-mcp start
Then create one shared instance and import it everywhere. With no arguments,
lelu() discovers that engine automatically:
import asyncio
from lelu import lelu
auth = lelu(actor="invoice_bot") # zero-config: finds the local engine
async def main():
result = await auth.authorize(tool="invoice:create")
if result.decision == "allow":
... # proceed
elif result.decision == "human_review":
# Queued for a human. Don't just wait for "approved" and then act —
# an approval is bound to the request it approved, so pass the same
# request back and let the engine confirm nothing changed.
outcome = await auth.wait_and_redeem(result, tool="invoice:create")
if not outcome.allowed:
raise PermissionError(outcome.reason)
... # proceed
else:
raise PermissionError(result.reason)
asyncio.run(main())
The instance exposes the full client as auth.api (tokens, review queue,
audit, policies): await auth.api.mint_token(...).
Option 2: Self-hosted or cloud engine
Point the same factory at any engine with explicit config — or set
LELU_BASE_URL / LELU_API_KEY and keep calling lelu() with no arguments:
auth = lelu(
base_url="https://your-engine.example.com",
api_key=os.environ["LELU_API_KEY"],
actor="invoice_bot",
)
LeluClient(...) from earlier versions keeps working unchanged — auth.api
is that same client.
API
| Method | Description |
|---|---|
agent_authorize(req) |
Confidence-aware agent authorization |
authorize(req) |
Human RBAC authorization |
mint_token(req) |
Mint a JIT-scoped JWT |
revoke_token(token_id) |
Revoke a token immediately |
is_healthy() |
Health-check the engine |
License
MIT
Metadata
Release files for lelu-agent-auth-sdk 0.4.41
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| lelu_agent_auth_sdk-0.4.41.tar.gz | 65.6 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| lelu_agent_auth_sdk-0.4.41-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 116.6 kB
Release files / lelu_agent_auth_sdk-0.4.41.tar.gz
| Download URL | lelu_agent_auth_sdk-0.4.41.tar.gz |
|---|---|
| Size | 65.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
bfff74a63fd759017fe5530517dce4dbb4d9fc62bd3511bfd7d561ca6cc8d7ad
|
|
BLAKE2b-256 checksum How to use checksums |
7089ec5a6b5a512c4fe4fa19037328600e8fa06ee6405d3b1e662e02018d8ad8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Release files / lelu_agent_auth_sdk-0.4.41-py3-none-any.whl
| Download URL | lelu_agent_auth_sdk-0.4.41-py3-none-any.whl |
|---|---|
| Size | 51.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b80cb103e40daed5315773c5270718d441ba322e7977610ed590789fad267d9c
|
|
BLAKE2b-256 checksum How to use checksums |
a39ec62d225699269ff7f8748e44b4b57e2cd62fb30d5146a1f6fe71c9c9ad49
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.3
|
Security for lelu-agent-auth-sdk 0.4.41
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
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.