AutoGen vs Promptise Foundry: Multi-Agent, Honestly¶
If you're weighing AutoGen vs Promptise for a multi-agent system, the honest answer starts with what each tool was actually built for. Microsoft's AutoGen is a research-first library for conversational agents that talk to each other in a loop — brilliant for exploring ideas in a notebook. Promptise Foundry treats each agent as a governed HTTP service with authentication, audit, and tenancy. By the end of this post you'll know which model fits your problem, and you'll have seen real code for wiring agent-to-agent calls in Promptise.
Where AutoGen is the better fit¶
Let's give AutoGen its due, because for a large class of work it's the right call.
AutoGen's AssistantAgent / UserProxyAgent conversation model is genuinely elegant for multi-turn agent dialogue: two or more agents pass messages back and forth until they converge on an answer, with a human optionally in the loop. If your goal is to explore how a group of agents reasons — a "society of mind" experiment, a debate, a critic-and-writer pair — AutoGen gets you there in a few lines and a Jupyter cell.
Reach for AutoGen when:
- You're prototyping and iterating on prompts interactively, not shipping a service.
- The interesting artifact is the conversation itself — the back-and-forth is the product.
- You want a large gallery of community notebooks and research patterns to copy from.
- You're already deep in the Microsoft/Azure ecosystem and want tight integration.
If that's you, AutoGen is a fine choice and this post won't try to talk you out of it. The friction shows up later — when the notebook has to become a deployed system that other people and other services call.
The core difference: chat loops vs governed services¶
The philosophical split between the two frameworks is simple to state.
AutoGen orchestrates a conversation. Agents are objects in one Python process, exchanging messages through a shared runtime. That's a great mental model for reasoning experiments and a harder one for production, where you care about who called an agent, whether they were allowed to, and what happened.
Promptise deploys agents as services. Each agent is a real process behind an HTTP endpoint. Cross-agent communication happens over HTTP with JWT authentication, so a call from one agent to another is an authenticated request you can log, rate-limit, and scope to a tenant — not an in-memory method call. Identity flows through every layer: the framework's CallerContext carries user_id, roles, and tenant_id from the original request through every delegated hop.
That's the whole thesis of the Why Promptise page: production agents need the boring infrastructure — auth, audit, isolation — to be default behavior, not something you bolt on after the demo works.
A fair multi-agent framework comparison¶
Here's a side-by-side for the decision that actually matters — not features on a checklist, but how each tool behaves when you go from experiment to deployment. This is the practical core of any multi-agent framework comparison.
| Concern | AutoGen | Promptise Foundry |
|---|---|---|
| Primary shape | Conversational agents in one process | Agents as HTTP services |
| Agent-to-agent transport | In-memory message passing | HTTP + JWT, per-call identity |
| Auth between agents | Not the framework's job | Built in (JWT, roles, scopes) |
| Multi-tenancy | Roll your own | tenant_id propagated end to end |
| Tool integration | Function/tool registration | MCP-native auto-discovery |
| Failure of one peer | Can stall the loop | Graceful degradation on broadcast |
| Best home | Notebook, research, prototyping | Deployed, governed, multi-team systems |
Neither column is "wrong." They optimize for different phases. The question is which phase you are in.
Cross-agent calls over HTTP+JWT¶
This is where Promptise's design earns its keep. You register peer agents on build_agent(), and Promptise injects one delegation tool per peer plus a fan-out broadcast. The agent decides when to call them; every call is an authenticated HTTP request.
import asyncio
from promptise import build_agent
from promptise.cross_agent import CrossAgent
async def main():
agent = await build_agent(
model="openai:gpt-5-mini",
instructions="You coordinate specialists. Delegate when a peer knows better.",
cross_agents={
"researcher": CrossAgent(
url="http://research-agent:8001",
jwt_secret="shared-secret",
description="Finds and summarizes research papers.",
),
"coder": CrossAgent(
url="http://code-agent:8002",
jwt_secret="shared-secret",
description="Writes and reviews Python code.",
),
},
)
result = await agent.ainvoke({
"messages": [{"role": "user",
"content": "Find recent papers on retrieval and draft a summary script."}]
})
print(result["messages"][-1].content)
await agent.shutdown()
asyncio.run(main())
That config injects ask_agent_researcher and ask_agent_coder tools. The coordinator model reads each peer's description, decides which one to ask, and makes the HTTP call under the hood — the ask_peer pattern, but as a tool the LLM invokes on its own.
For fan-out, call broadcast() directly and let slow or dead peers fall away instead of blocking the whole group:
# Ask every peer at once; a peer that times out is simply omitted.
results = await agent.broadcast(
"What is the current status of your subsystem?",
timeout=30.0,
)
# results: dict[str, str] — agent_name → reply, with graceful degradation
The graceful degradation matters in production. If one peer is down or slow, broadcast() returns the responses it did get within the timeout rather than raising — so a single misbehaving service can't take the coordinator down with it. The full end-to-end setup, including how identity propagates across each hop, is documented in building agents.
AutoGen in production vs Promptise¶
The real test of any framework is what happens after the prototype works. Running AutoGen in production is absolutely possible — plenty of teams do it — but you become responsible for the layers the library leaves out:
- Authentication and authorization between agents and from callers.
- Tenancy isolation so tenant A's requests can't touch tenant B's state.
- Audit trails for who invoked what, when, and with which identity.
- Deployment topology — turning in-process agents into independently scalable services.
Promptise treats those as first-class concerns. Agents ship as services, identity rides through delegation via CallerContext, and the MCP-native tool layer means your agents discover tools from servers automatically instead of hand-wiring function schemas. You spend your time on the agent's behavior, not on rebuilding the governance plumbing.
If you're still choosing between several options rather than just these two, our honest guide to the best AI agent framework in 2026 walks the broader field, and the framework-choosing checklist turns these trade-offs into concrete questions to ask about your own project.
Frequently asked questions¶
Is Promptise a drop-in AutoGen alternative?¶
Not a line-for-line one, and it shouldn't be. AutoGen models agents as conversation participants in a process; Promptise models them as authenticated HTTP services. If you're a happy AutoGen user who only needs an interactive multi-agent loop, there's no urgency to switch. Consider Promptise as an AutoGen alternative when you need auth, audit, tenancy, and deployment as built-in behavior rather than custom code.
Can I migrate an AutoGen prototype to Promptise?¶
Yes. The usual path is to keep your agent logic and instructions, then re-express each agent as a Promptise service with build_agent() and wire the delegation with cross_agents=. Tools move to MCP servers so they're discovered automatically. Because Promptise agents are services, you can migrate one agent at a time rather than rewriting the whole system at once.
How do agents authenticate each other in Promptise?¶
Every cross-agent call is an HTTP request signed with a shared JWT secret (or asymmetric keys), and the original caller's identity — user_id, roles, and tenant_id — propagates through each delegated hop via CallerContext. That means a delegated call is subject to the same authorization and tenancy rules as the original request, and every hop is loggable.
Next steps¶
Decide whether your agents live in a notebook or run as services, then wire the agent-to-agent calls in the building agents guide. Start from the Quick Start to stand up your first agent, and read Why Promptise to see how auth, audit, and tenancy stay default-on as your system grows.