Skip to main content

agentroute (Python SDK)

Build, deploy, and monetize AI agents. Phase 2 ships Agent with tools, persistent memory, conversation-history policies, and structured output — all against any OpenAI-compatible model (OpenRouter default, plus Ollama and custom HTTP endpoints).

Install

pip install agentroute

Quick start

Layer 0 — three-line hello world

from agentroute import Agent

agent = Agent("my-bot", model="claude-sonnet-4")
print(agent.run("Tell me a joke"))

Set AGENTROUTE_API_KEY (or OPENROUTER_API_KEY) to an OpenRouter key. One key works for every model string (claude-sonnet-4, gpt-4o, gemini-2.0-flash, deepseek-v3, ...).

Layer 1 — add a tool

from agentroute import Agent

agent = Agent("weather-bot", model="claude-sonnet-4")

@agent.tool
def get_weather(city: str) -> str:
    """Get the current weather for a city."""
    return "Sunny, 22C"

print(agent.run("What's the weather in Zurich?"))

Memory (conversation + facts)

from agentroute import Agent, Memory, MemorySQLite

# In-RAM (lost on restart):
agent = Agent("bot", model="claude-sonnet-4", memory=Memory())

# Persistent (SQLite + FTS5 search):
agent = Agent("bot", model="claude-sonnet-4", memory=MemorySQLite("agent.db"))

agent.run("remember my favorite color is blue")
agent.run("what is my favorite color?")  # remembers across runs

History policies

from agentroute import Agent, MemorySQLite, HistorySlidingWindow

agent = Agent(
    "bot",
    model="claude-sonnet-4",
    memory=MemorySQLite("agent.db"),
    history=HistorySlidingWindow(20),  # keep last 20 user-turn groups
)

Also available: HistoryTruncate(max_tokens=100_000) and HistorySummarize(model=...).

Structured output

from agentroute import Agent, Retry
from pydantic import BaseModel

class WeatherReport(BaseModel):
    city: str
    temp_c: float

agent = Agent("bot", model="claude-sonnet-4", output=WeatherReport)

@agent.output_validator
def sanity(ctx, output: WeatherReport) -> WeatherReport:
    if output.temp_c > 60:
        raise Retry("Temperature unrealistic, reconsider.")
    return output

result = agent.run("Weather in Zurich?")
print(result.output.city, result.output.temp_c)

Async

import asyncio
from agentroute import Agent

async def main() -> None:
    agent = Agent("bot", model="claude-sonnet-4")
    result = await agent.arun("hi")
    print(result.output)

asyncio.run(main())

Local models (Ollama)

agent = Agent("local", model="ollama/llama3")
print(agent.run("hi"))

Development

cd packages/python
pip install -e '.[dev]'
pytest                 # unit tests (integration tests auto-skipped)
pytest -m integration  # integration tests (mocked + live)
ruff check src tests
mypy src/agentroute

Phase 2 scope: Agent, Tool, Context, Result, Event, ModelCloud, resolve_model(), Config, exceptions (ErrorAgent, ErrorMaxTurns, ErrorBudget, Retry), Memory, MemorySQLite, HistorySlidingWindow, HistorySummarize, HistoryTruncate, structured output with validators. Multi-agent (Team/Company), guards, MCP, A2A, and deployment land in later phases.

Release files for agentroute 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for agentroute 1.1.0
File Size Uploaded
agentroute-1.1.0.tar.gz 29.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for agentroute 1.1.0
File Interpreter ABI Platform
agentroute-1.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 52.9 kB

Release files / agentroute-1.1.0.tar.gz

Download URL agentroute-1.1.0.tar.gz
Size 29.4 kB
Tags Source
SHA-256 checksum
How to use checksums
da014e549bba1131e790ebe87f0ace16fcc071654821c3cd9fff7bf3670ab3ec
BLAKE2b-256 checksum
How to use checksums
097566bfee6020cc7f422bd8438e1e75237d4c31904a670e82109cf227a1b135
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.3

Release files / agentroute-1.1.0-py3-none-any.whl

Download URL agentroute-1.1.0-py3-none-any.whl
Size 23.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
03d8e5dc4595b66d0d2e2f6fbc67f511863c7414fb95f5087f15b32f28b738b3
BLAKE2b-256 checksum
How to use checksums
d506817be93360691ca84f05b6dfac0af032be38f429094c06fcfebbc5358079
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.3

Release history Release notifications | RSS feed

This release

1.1.0 This release

2 release files

1.0.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page