Behavioral Firewall and Cryo-Sleep State Parking for AI Agents
Project description
LetsPing Python SDK
The official state management infrastructure for Human-in-the-Loop (HITL) AI agents.
LetsPing is a behavioral firewall and governance layer. It provides mathematically secure state-parking (Cryo-Sleep) and execution governance for autonomous agents built on frameworks like LangGraph, CrewAI, and custom architectures.
Features
- The Behavioral Shield: Silently profiles your agent's execution paths via Markov Chains. Automatically intercepts 0-probability reasoning anomalies (hallucinations/prompt injections).
- Cryo-Sleep State Parking: Pauses execution and securely uploads massive agent states directly to storage using Signed URLs, entirely bypassing serverless timeouts and webhook payload limits.
- Smart-Accept Drift Adaptation: Approval decisions mathematically alter the baseline. Old unused reasoning paths decay automatically via Exponential Moving Average (EMA).
Installation
pip install letsping
Configuration
Set your API key as an environment variable (recommended) or pass it directly.
export LETSPING_API_KEY="lp_live_..."
Usage
1. The "Ask" Primitive (Blocking)
Use this when you want to pause a script until a human approves.
from letsping import LetsPing
client = LetsPing()
# Pauses here for up to 24 hours (default)
decision = client.ask(
service="payments-agent",
action="transfer_funds",
payload={
"amount": 5000,
"currency": "USD",
"recipient": "acct_99"
},
priority="critical"
)
# Execution resumes only after approval
print(f"Transfer approved by {decision['metadata']['actor_id']}")
2. Async / Non-Blocking (FastAPI/LangGraph)
For high-concurrency environments or event loops.
import asyncio
from letsping import LetsPing
async def main():
async def main():
client = LetsPing()
# Non-blocking wait, with massive state snapshot
# The state is AES-GCM encrypted and direct-uploaded to S3, bypassing payloads
decision = await client.aask(
service="github-agent",
action="merge_pr",
payload={"pr_id": 42},
timeout=3600, # 1 hour timeout
state_snapshot=graph.get_state()
)
asyncio.run(main())
3. LangChain / Agent Integration
LetsPing provides a compliant tool interface that can be injected directly into LLM agent toolkits (LangChain, CrewAI, etc). This allows the LLM to decide when to ask for help.
from letsping import LetsPing
client = LetsPing()
tools = [
# ... your other tools (search, calculator) ...
# Inject the human as a tool
client.tool(
service="research-agent",
action="review_draft",
priority="high"
)
]
Error Handling
The SDK uses typed exceptions for control flow.
ApprovalRejectedError: Raised when the human explicitly clicks "Reject".TimeoutError: Raised when the duration (default 24h) expires without a decision.LetsPingError: Base class for API or network failures.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file letsping-0.1.8.tar.gz.
File metadata
- Download URL: letsping-0.1.8.tar.gz
- Upload date:
- Size: 9.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c743716f708f6f78d8e5206be3ccd0ecb7213577e0be19227ba70f70d377fdd0
|
|
| MD5 |
f3e48b8e395d24fcaabac2735f98ca4c
|
|
| BLAKE2b-256 |
b28a17dfb38102b733e82408c6f745d96a4842a64cc2b0e91efe4d8ec3f17a0d
|
File details
Details for the file letsping-0.1.8-py3-none-any.whl.
File metadata
- Download URL: letsping-0.1.8-py3-none-any.whl
- Upload date:
- Size: 8.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2fb3333f2affd660e565722f424e94372b52814f381e1be8782a82d26896370c
|
|
| MD5 |
c590839cd65c0ac22c99311116ef2183
|
|
| BLAKE2b-256 |
308cec067d26aa695203868b0b7b7003dc663a18b609dc8d430fd4e6333e0bce
|