Skip to main content

Universal Tool Orchestration Platform - Intelligent, secure tool orchestration for LLM-based agent systems

Project description

Agent-Gantry

Universal Tool Orchestration Platform for LLM-Based Agent Systems

Context is precious. Execution is sacred. Trust is earned.

Agent-Gantry is a Python 0.8.0 library for building agents that can discover, select, and execute the right tools without flooding every prompt with every schema your organization owns. It combines semantic retrieval, provider schema conversion, secure execution, framework bridges, MCP/A2A interoperability, persistence adapters, and observability into one tool orchestration layer.

Documentation

The project documentation is now an Astro + React + TypeScript site with an implementation journey, interactive tool lifecycle walkthrough, integration matrix, and production operations guidance.

npm install
npm run dev      # local docs server
npm run build    # type-check and static build
npm run preview  # verify the generated site styling

Start with the rich docs in src/pages/index.astro. The published site lives at codehalwell.github.io/Agent-Gantry.

Install

uv add agent-gantry
# or
pip install agent-gantry

Useful extras:

uv add "agent-gantry[openai]"
uv add "agent-gantry[anthropic]"
uv add "agent-gantry[google-genai]"
uv add "agent-gantry[lancedb,nomic]"
uv add "agent-gantry[mcp,a2a]"
uv add "agent-gantry[agent-frameworks]"
uv add "agent-gantry[all]"

Quick start

from openai import AsyncOpenAI
from agent_gantry import AgentGantry, set_default_gantry, with_semantic_tools

client = AsyncOpenAI()
gantry = AgentGantry()
set_default_gantry(gantry)

@gantry.register(tags=["weather"])
def get_weather(city: str) -> str:
    """Get the current weather for a city."""
    return f"The weather in {city} is 72°F and sunny."

@with_semantic_tools(limit=3, dialect="openai")
async def ask_llm(prompt: str, *, tools=None):
    return await client.chat.completions.create(
        model="gpt-5.5",
        messages=[{"role": "user", "content": prompt}],
        tools=tools,
    )

await ask_llm("What's the weather in San Francisco?")

Agent-Gantry automatically fingerprints registered tools, syncs definitions to the configured vector store, retrieves semantically relevant tools, and converts schemas to the requested provider dialect.

Core capabilities

  • Semantic tool routing: reduce prompt context by retrieving top-k relevant tools instead of injecting every tool.
  • Register once, run anywhere: emit schemas for OpenAI-compatible APIs, Anthropic, Gemini, framework adapters, MCP, and A2A paths.
  • Secure execution: run tools through policies, capabilities, timeouts, retries, rate limits, circuit breakers, callbacks, and telemetry.
  • Persistence and retrieval: use in-memory defaults, LanceDB, Qdrant, Chroma, pgvector, OpenAI/Nomic/sentence-transformers embeddings, and rerankers.
  • Framework coverage: Microsoft Agent Framework plus LangChain, LangGraph, LlamaIndex, CrewAI, AutoGen, Semantic Kernel, Google ADK, Pydantic AI, OpenAI Agents SDK, Smolagents, Haystack, and Agno.
  • Bundled Claude Skill: install with agent-gantry install-skill --claude or target a project-local skills directory.

Manual retrieval and execution

from agent_gantry import AgentGantry
from agent_gantry.schema.execution import ToolCall

gantry = AgentGantry()

@gantry.register(tags=["finance"])
def calculate_tax(amount: float) -> float:
    """Calculate US sales tax for an amount."""
    return amount * 0.08

tools = await gantry.retrieve_tools("What is the tax on $100?", limit=5)
result = await gantry.execute(ToolCall(
    tool_name="calculate_tax",
    arguments={"amount": 100.0},
))

Development

uv sync --all-extras
uv run pytest
npm install
npm run build

License

MIT

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

agent_gantry-0.9.0.tar.gz (245.1 kB view details)

Uploaded Source

Built Distribution

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

agent_gantry-0.9.0-py3-none-any.whl (346.9 kB view details)

Uploaded Python 3

File details

Details for the file agent_gantry-0.9.0.tar.gz.

File metadata

  • Download URL: agent_gantry-0.9.0.tar.gz
  • Upload date:
  • Size: 245.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for agent_gantry-0.9.0.tar.gz
Algorithm Hash digest
SHA256 cf72883df4c025ab5af0158b45805c174fe8409c4cb3b378ff4c9686ea99c19c
MD5 4e98aa080d9fcce0c9d2c14a99510083
BLAKE2b-256 378cb0c6b4429aa14dffbfc46ca68ae50f5c25e30f7933b3ec9eb5061aebd2fe

See more details on using hashes here.

Provenance

The following attestation bundles were made for agent_gantry-0.9.0.tar.gz:

Publisher: publish.yml on CodeHalwell/Agent-Gantry

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file agent_gantry-0.9.0-py3-none-any.whl.

File metadata

  • Download URL: agent_gantry-0.9.0-py3-none-any.whl
  • Upload date:
  • Size: 346.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for agent_gantry-0.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4d28690f169e780f1274b68f82cdcf0f3a9375575de1eeaa17bdc8f9d4fa020a
MD5 187465349ac64904deaa1cde024463ae
BLAKE2b-256 3b3ef0afb92a4d523fefe00fdb00e9fbc148a96a222d2d3764e47ae4dfd56423

See more details on using hashes here.

Provenance

The following attestation bundles were made for agent_gantry-0.9.0-py3-none-any.whl:

Publisher: publish.yml on CodeHalwell/Agent-Gantry

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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