Enterprise-ready AI agents
for the OS.
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.
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")
Four pillars. Zero compromise.
GantryGraph makes autonomous agents production-ready from day one.
Secure by Default
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.
LLM-Agnostic Vision
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.
Infinite Extensibility
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.
Cloud Native
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.
The agent loop — simple by design
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.
Open source at the core
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.