Observed since 21 Oct, 09:01 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Runtime-enforced governance kernel for AI agents
Runtime-enforced execution governance for AI agents.
AgenWatch is a Python SDK that guarantees AI agents stop when they must.
Budgets, iteration limits, and execution boundaries are enforced during runtime, not observed after failure.
This is not an observability tool.
This is not a prompt framework.
AgenWatch is an execution kernel.
For architectural details and guarantees, see ARCHITECTURE.md
Most agent frameworks answer:
“How do I make my agent smarter?”
AgenWatch answers a different question:
“Can I mathematically guarantee this agent will stop?”
AgenWatch enforces hard limits before tools or LLM calls execute:
AgenWatch does not try to make agents smarter.
It makes them governable.
pip install agenwatch
This example shows pure AgenWatch execution with runtime enforcement.
import os
from agenwatch import Agent, tool
from agenwatch.providers import OpenAIProvider
@tool("Echo input text")
def echo(**kwargs) -> dict:
"""Echo back the provided text"""
text = kwargs.get("text", "")
return {"echo": text}
agent = Agent(
tools=[echo],
llm=OpenAIProvider(
api_key=os.getenv("OPENAI_API_KEY"),
model="gpt-4o-mini"
),
budget=1.0, # Hard execution budget
max_iterations=5
)
result = agent.run("Echo hello")
print(f"Success: {result.success}")
print(f"Cost: {result.cost}")
print(f"Output: {result.output}")
AgenWatch enforces budgets as a runtime kill switch, not a warning.
Behavior:
budget_exceededThis enforcement happens synchronously inside the kernel.
AgenWatch can be used alongside LangChain.
Important distinction:
AgenWatch cannot force an LLM to call a tool. It only governs tool calls if and when they occur.
# Pattern: LangChain Logic + AgenWatch Enforcement
import os
from langchain_core.prompts import ChatPromptTemplate
from agenwatch import Agent, tool
from agenwatch.providers import OpenAIProvider
# Step 1: Define tools (AgenWatch-governed)
@tool("Echo text safely")
def echo(**kwargs) -> dict:
return {"echo": kwargs.get("text", "")}
# Step 2: Create AgenWatch Agent (the kernel)
agent = Agent(
tools=[echo],
llm=OpenAIProvider(
api_key=os.getenv("OPENAI_API_KEY"),
model="gpt-4o-mini"
),
budget=1.0,
max_iterations=3
)
# Step 3: Let LangChain produce the task
prompt = ChatPromptTemplate.from_messages([
("human", "Say hello using the echo tool")
])
task = prompt.format_messages()[0].content
# Step 4: Execute through AgenWatch
result = agent.run(task)
print(f"Success: {result.success}")
print(f"Cost: {result.cost}")
print(f"Output: {result.output}")
Success: True
Cost: 0.0
Output: It seems that I don't have access to an echo tool to assist with that.
However, I can say hello directly:
Hello!
This behavior is expected.
AgenWatch does not influence LLM reasoning. It governs execution, not decision-making.
AgenWatch exposes execution events for inspection:
for event in agent.stream("Analyze input"):
print(event.type)
AgenWatch records execution decisions so failures can be inspected without re-running the agent.
In v0.1:
This is intentional and documented.
AgenWatch is designed for:
Use AgenWatch when you need:
AgenWatch prioritizes predictability over flexibility.
AgenWatch may not be a good fit if:
AgenWatch is complementary to frameworks like:
Those frameworks focus on agent capability. AgenWatch focuses on agent control.
Version: 0.1.0
MIT License
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.1.2 | 15 Jan 2026 | 7 |
This describes our collected data; it is not a security assessment.
Shared repository data · GitHub
Public sponsor counts have not been collected. These signals belong to the repository owner.
github · 1 observations shown. Missing days are unknown.
| Date / source period | Value | Observed at |
|---|---|---|
| 2026-10-21 | 0 | 2026-10-21T16:59:35.7730574Z |
Observed since 21 Oct, 09:01 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:66d7a4cddaff971cf5221bfac7642c8979f141a36ad14831bf834786866c6081