Skip to main content

AGENTICONTROL V0 MVP - Control plane for AI agents with synchronous blocking and asynchronous logging

Project description

AGENTICONTROL V0 MVP

Control plane for AI agents with synchronous blocking and asynchronous logging.

Overview

AGENTICONTROL provides:

  • Synchronous Blocking: Zero-latency policy checks and loop detection
  • Asynchronous Logging: Non-blocking trace event ingestion
  • Terminal Viewer: Real-time structured trace output for local debugging
  • Cloud Backend: Scalable trace storage and analytics

Key Features

  • 🛑 Policy V0 Checks: Block dangerous operations (SQL DROP, DELETE, PII patterns)
  • 🔄 Loop Detection: Detect and halt infinite loops (Rule A & B)
  • 💰 Cost Monitoring: Track token usage and estimated costs
  • 📊 Terminal Viewer: Beautiful real-time trace visualization with rich
  • ☁️ Cloud Uplink: Async trace ingestion to Supabase

Installation

pip install agenticontrol

Quick Start

Installation

pip install agenticontrol

Basic Usage with LangChain

from langchain.agents import initialize_agent, AgentType
from langchain.llms import OpenAI
from agenticontrol.hooks.langchain_handler import AgenticontrolCallbackHandler

# Initialize the callback handler
handler = AgenticontrolCallbackHandler(
    api_url="http://localhost:8000/api/v1/ingest/trace",  # Your backend URL
    api_key=None,  # Optional API key
    enable_blocking=True,  # Enable Policy V0 and Loop Detection
    enable_logging=True,  # Enable async trace logging
)

# Use with LangChain agent
agent = initialize_agent(
    tools=tools,
    llm=llm,
    agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
    callbacks=[handler],
    verbose=True
)

# Run agent - blocking checks happen automatically
try:
    result = agent.run("Your query here")
    print(f"Result: {result}")
except PolicyViolationError as e:
    print(f"Agent blocked: {e}")

# Cleanup
import asyncio
asyncio.run(handler.flush())
asyncio.run(handler.close())

Local-Only Mode (No Cloud Backend)

from agenticontrol.hooks.langchain_handler import AgenticontrolCallbackHandler

# Local-only mode: blocking checks work, but no cloud logging
handler = AgenticontrolCallbackHandler(
    api_url=None,  # Local-only mode
    enable_blocking=True,
    enable_logging=False
)

Terminal Viewer

The terminal viewer provides real-time trace visualization:

from agenticontrol.local.viewer import TraceViewer, get_viewer

# Get the viewer instance
viewer = get_viewer()

# Events are automatically displayed when using the callback handler
# The viewer shows:
# - 💭 LLM prompts and responses
# - 🛠 Tool calls and outputs
# - 🛑 Blocked operations (Policy V0, Loop Detection)
# - 💰 Cost tracking

Examples

See the examples/ directory for complete examples:

  • basic_usage.py - Basic LangChain integration
  • loop_detection_demo.py - Loop detection demonstration
  • policy_v0_demo.py - Policy V0 checks demonstration

Features

🛑 Policy V0 Checks

Blocks dangerous operations synchronously (zero latency):

  • SQL commands: DROP TABLE, DELETE FROM
  • File system: rm -rf, dangerous paths
  • PII patterns: Email addresses, SSNs, etc.
# Automatically blocks dangerous operations
agent.run("DROP TABLE users")  # Raises PolicyV0ViolationError

🔄 Loop Detection

Detects and halts infinite loops (Rule A & B):

  • Rule A: Identical LLM prompts repeated
  • Rule B: Identical tool calls repeated
# Blocks after 5 identical tool calls
for i in range(10):
    agent.run("search for 'test'")  # Blocks on 6th identical call

💰 Cost Monitoring

Tracks token usage and estimated costs:

  • Accumulates tokens per run
  • Calculates USD cost based on model rates
  • Updates in real-time

📊 Terminal Viewer

Beautiful real-time trace visualization:

  • Tree-like structure showing agent execution
  • Color-coded events (LLM, tools, errors)
  • Prominent display of blocked operations

☁️ Cloud Uplink

Async trace ingestion to Supabase:

  • Non-blocking HTTP calls
  • Batched uploads for efficiency
  • Never delays agent execution

Architecture

Synchronous Blocking (Zero Latency)

  • Policy V0 checks run in-memory
  • Loop detection runs synchronously
  • Raises PolicyViolationError to halt execution immediately

Asynchronous Logging (Non-Blocking)

  • Trace events sent via async HTTP
  • Batched uploads for efficiency
  • Never blocks agent execution

API Reference

AgenticontrolCallbackHandler

Main callback handler for LangChain integration.

Parameters:

  • api_url (str, optional): Backend API URL for trace ingestion
  • api_key (str, optional): API key for authentication
  • run_id (UUID, optional): Unique identifier for this run (auto-generated)
  • risk_engine (RiskEngine, optional): Custom risk engine instance
  • enable_blocking (bool): Enable synchronous blocking checks (default: True)
  • enable_logging (bool): Enable async trace logging (default: True)

Methods:

  • flush(): Flush pending events to cloud (async)
  • close(): Close client connections (async)

Exceptions

  • PolicyViolationError: Base exception for all policy violations
  • PolicyV0ViolationError: Raised when Policy V0 check fails
  • LoopDetectedError: Raised when loop detection triggers
  • CostThresholdExceededError: Raised when cost threshold exceeded

Development

Setup

# Clone repository
git clone https://github.com/yourorg/agenticontrol.git
cd agenticontrol

# Install in development mode
pip install -e ".[dev]"

# Run tests
pytest

# Run with coverage
pytest --cov=src/agenticontrol --cov-report=html

# Format code
black src tests examples

# Lint code
ruff check src tests examples

# Type checking
mypy src

Running Examples

# Basic usage
python examples/basic_usage.py

# Loop detection demo
python examples/loop_detection_demo.py

# Policy V0 demo
python examples/policy_v0_demo.py

Running Backend

cd backend
python run_server.py
# Or: python -m uvicorn backend.app.main:app --reload

Project Structure

src/agenticontrol/
├── models.py              # Pydantic models (TraceEvent, RunMetadata, RiskResult)
├── risk_engine.py         # Synchronous blocking checks
├── client.py              # Async HTTP client
├── exceptions.py          # PolicyViolationError hierarchy
└── hooks/
    └── langchain_handler.py  # LangChain integration

local/
└── viewer.py              # Terminal trace viewer

backend/
└── app/                   # FastAPI backend (separate repo)

Schema Versioning

The TraceEvent model includes a schema_version field for backward compatibility. Current version: 1.0.0

License

MIT

Contributing

See CONTRIBUTING.md (coming soon)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

agenticontrol-0.1.0.tar.gz (34.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

agenticontrol-0.1.0-py3-none-any.whl (22.6 kB view details)

Uploaded Python 3

File details

Details for the file agenticontrol-0.1.0.tar.gz.

File metadata

  • Download URL: agenticontrol-0.1.0.tar.gz
  • Upload date:
  • Size: 34.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.9

File hashes

Hashes for agenticontrol-0.1.0.tar.gz
Algorithm Hash digest
SHA256 0348af68133512203321983d30f06a65d8af03fd12891a2fd78933227027dd1e
MD5 a17c52afac376e8adc1ed86c9e212c78
BLAKE2b-256 a76e1ae460f62294bfda2590f524276c0fbfe6ae9d05c45be6a1c4c88c8d12ab

See more details on using hashes here.

File details

Details for the file agenticontrol-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: agenticontrol-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 22.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.9

File hashes

Hashes for agenticontrol-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 74a110139889629779bed122413c1ee9c5d6a1218318d2aefb8556ab19c9de5c
MD5 24e23fdc603bf1a630ba3f4ee50546b6
BLAKE2b-256 af0235d6e53eab62e8e2e0fe40b9489d1faac2c8cbbc3e62272cddf1411a21a4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page