P
Build Agents as simple as Python Classes
- Create Object Oriented Agents using the paradigms you know.
- Make existing Software agentic instead of rewriting.
- Test Agents the same way you test Software.
Why This Changes Everything
Every developer who knows OOP can build agentic software.
Peteos makes classes agentic. They interact with their class members.
Extend and specialize agents using inheritance.
Compose to build multi agent systems easily.
class GroceryList(AgenticObject): "You manage a grocery list. Add items, list them, clear." def __init__(self): super().__init__() self._items: dict[Grocery, int] = {} @tool def add_item(self, item: Grocery, quantity: int): self._items[item] = self._items.get(item, 0) + quantity return f"Added {quantity} {item.value}s." groceries = GroceryList() await groceries.invoke_agent("Add 2 milk and 3 eggs to the list.") await groceries.invoke_agent("How much will my shopping cost?")
Process-tuned AI Agents
The future isn't bigger models. It's smarter agents.
Give each Agentic Object a specific purpose following Separation of Concerns.
Agent-tuned models are orders of magnitude more efficient than generalists.
Use the peteos platform to auto calibrate agent specific models. Learn More
@agentic_object(model="google/gemma4")
class MathExpert(AgenticObject): """You are a solver for mathematic problems.""" ...
@agentic_object(model="zai/glm-4.7")
class RegExpert(AgenticObject): """You are an expert for building regular expressions.""" ...
The Platform
The library is how you build. The platform is how you get it right.

Test-driven model optimization
Write your tests the way you always have. The platform finds the right model for the job automatically.
Invocation observability
Watch agents reason, call tools, and modify state through structured trace logs. Every invocation tells a story.
Granular cost tracking
Know exactly what each object costs, token by token. Every invocation is tracked so you can optimize spend.
Get Started
Three lines of code to Agentic Classes.
from peteos import AgenticObject
class MyAgent(AgenticObject): """You are a helpful assistant."""
@tool def process(self, data: str): return f"Processed: {data}"
agent = MyAgent()
result = await agent.invoke_agent("Process this data.")