Skip to main content
The source code for this example is available on GitHub: Agent Control Demo
Complete example demonstrating the Agent Control workflow: creating controls, running a controlled agent, and dynamically updating controls without code changes.

Overview

This demo shows how to:
  1. Create an agent and register it with the Agent Control server
  2. Define controls (regex, list-based) and assign them to a policy
  3. Run an agent that uses the @control decorator with server-side policies
  4. Dynamically update controls on the server without redeploying code

Prerequisites

Python 3.12+ uv — fast Python package manager
Start the Agent Control server from the monorepo root:
Verify the server is running:
Install dependencies (if not already done from monorepo root):
1

Create controls on the server

Run the setup script to create the agent, controls, and policy:
This creates a demo agent (demo-chatbot), two controls (block-ssn-output, block-banned-words), and a policy assigned to the agent.
2

Run the demo agent

Start the agent that uses server-side controls:
The agent will initialize with agent_control.init(), load the assigned policy, apply @control() decorators, and run test scenarios that demonstrate allow/deny behavior.
3

Update controls dynamically

Update controls on the server without changing code or restarting the agent:
Key insight: controls are enforced server-side, so you can update rules in real-time without redeploying code.

Files

How It Works

1. Server-Side Control Definition

Controls are defined on the server with scope, selector, evaluator, and action. Example from setup_controls.py:

2. Agent Integration

The agent uses the @control() decorator to fetch its policy from the server and enforce controls before/after execution. Example from demo_agent.py:

3. Dynamic Updates

Controls can be updated on the server without code changes. You can enable/disable controls, update patterns, change decisions, or add new controls to policies.

Configuration

All scripts use the same agent configuration:
Set AGENT_CONTROL_URL to connect to a different server:

Troubleshooting

Server Connection Issues

Error: Failed to connect to server Fix:

Agent Not Found

Error: Agent not found when running demo_agent.py Fix: Run setup_controls.py first:

Import Errors

Error: ModuleNotFoundError: No module named 'agent_control' Fix: Install dependencies from monorepo root:

Next Steps

Resources