Agent class, a tool-calling interface, and an arun() method. xpander does not replace your framework. It plugs into it.
Selection lives in xpander_config.json, written by xpander agent new. The SDK reads framework from that file and wires up accordingly:
xpander_config.json
Comparison
| Capability | Agno | OpenAI Agents SDK | LangChain | AWS Strands |
|---|---|---|---|---|
| Pre-built connectors (2,000+) | Auto-included | agent.openai_agents_sdk_tools | agent.tools.functions | agent.strands_tools |
Custom @register_tool functions | Auto-included | Auto-included | Auto-included | Auto-included |
| Instructions (role, goal, general) | Auto-attached | agent.instructions.full | agent.instructions.full | agent.instructions.full |
| Model + provider credentials | Auto-attached | agent.model_name (you build the client) | agent.model_name (you build the client) | agent.model_name (you build the client) |
| Knowledge-base retriever | Auto-attached | Manual via agent.knowledge_bases_retriever() | Manual | Manual |
| Session storage (Postgres) | Auto-wired | Manual | Manual | Manual |
| User and agent memory | Auto-wired | Manual | Manual | Manual |
| Context optimization (toon encoding, compaction) | Auto-wired | Not available | Not available | Not available |
| Guardrails (PII, prompt injection, moderation) | Auto-wired | Manual | Manual | Manual |
| Multi-agent teams | Auto-wired (AgnoTeam) | Manual | Manual | Manual |
Session helpers (agent.get_user_sessions, etc.) | Yes | Raises NotImplementedError | Raises NotImplementedError | Raises NotImplementedError |
- Agno is the only path with automatic wiring.
Backend.aget_args()dispatches onagent.framework. On the other three, you load the agent throughAgents().aget(...)and read fields off it yourself. - Pre-built connectors and custom
@register_toolfunctions reach every framework. What changes is the property name you read them from:agent.tools.functionsfor LangChain,agent.openai_agents_sdk_toolsfor the OpenAI Agents SDK,agent.strands_toolsfor AWS Strands. - Memory, knowledge retrieval, and guardrails are Agno-only auto-wired. On other frameworks, xpander gives you the data (
agent.knowledge_bases_retriever(), session metadata, the agent’s memory config) but your code is responsible for plugging it into the framework. - Agno-exclusive features: context optimization (toon encoding, runtime compaction),
AgnoTeam-based multi-agent coordination, and the session helpers (agent.get_user_sessions,agent.get_session,agent.delete_session, which raiseNotImplementedErroroutside Agno).
How to choose
Default to Agno unless you have a reason not to. Pick a non-Agno framework when:- Existing investment. Your team already builds on it and switching cost is real. Example: a LangGraph workflow that’s been in production for six months.
- Framework-specific feature. You need something Agno doesn’t have. Example: LangGraph’s stateful multi-step workflows, the OpenAI Agents SDK’s
Runnerergonomics, Strands’ AWS-native primitives. - Embedded in an existing app. You’re adding xpander tools to a service that already runs one of these frameworks. Example: a FastAPI worker that already imports
agents.Runner.
framework in xpander_config.json and rewriting your handler.
Next steps
Agno
The recommended path. What
Backend.aget_args() actually wires up.OpenAI Agents SDK
Manual wiring with
agent.openai_agents_sdk_tools.LangChain + LangGraph
Manual wiring with
agent.tools.functions and create_react_agent.AWS Strands
Manual wiring with
agent.strands_tools on AWS-native orchestration.Core Concepts
The SDK class names mapped onto agents, tasks, threads, tools, and memory.
Quickstart
10-minute scaffold-to-deploy walkthrough on the default Agno path.




