{% extends "base.html" %}
{% block styles %}
{{ super() }}
{% endblock %}
{% block content %}
GantryGraph is the Python SDK for building autonomous agents that see the screen,
click, browse, write code, and call any tool — all in an observable,
secure observe → think → act loop.
Enterprise-ready AI agents
for the OS.
pip install gantrygraph
from gantrygraph import GantryEngine, gantry_tool
from gantrygraph.perception import DesktopScreen
from gantrygraph.actions import MouseKeyboardTools
from langchain_anthropic import ChatAnthropic
@gantry_tool
async def send_slack(channel: str, msg: str) -> str:
"""Post a Slack message. Auto-exposed to the LLM."""
return await slack.post(channel, msg)
agent = GantryEngine(
llm=ChatAnthropic(model="claude-sonnet-4-6"),
perception=DesktopScreen(),
tools=[MouseKeyboardTools(), send_slack],
max_steps=30,
)
agent.run("File the quarterly report and ping #finance")
GantryGraph makes autonomous agents production-ready from day one.
Every tool runs inside a WorkspacePolicy chroot —
path traversal is blocked at the SDK level.
GuardrailPolicy gates dangerous operations behind a human-approval
callback. BudgetPolicy hard-caps cost and wall-clock time.
Swap vision backends without touching agent code.
BaseVisionProvider wraps GPT-4o, Claude, Gemini, or any local model.
Screenshots are pre-processed — resized, compressed, annotated —
before the LLM ever sees them.
Add a tool in one line with @gantry_tool.
Connect entire MCP servers — GitHub, Notion, Postgres — via MCPClient.
Need a custom loop? engine.get_graph() returns the raw
LangGraph CompiledStateGraph.
serve() wraps any agent in a FastAPI server with async job queues
and SSE event streaming — deploy on Kubernetes in minutes.
The included Dockerfile boots Xvfb for fully headless
GUI automation on Linux containers.
Four deterministic nodes. One observable graph. Zero magic.
Screenshot the desktop, render the browser DOM, or read any custom sensor via BasePerception.
The LLM receives multimodal context and decides which tools to call — or declares the task complete.
Each tool call passes through the guardrail gate. Errors become ToolMessage(status="error") for self-correction.
No tool calls in the last response? Task complete. Otherwise loop back — up to max_steps.
GantryGraph is the production-hardened evolution of openclaw, the open-source autonomous agent runtime originally published on GitHub. All source code is MIT licensed. Contributions, issues, and forks are welcome.