One chat. Every agent.
Any protocol.
Centralize every agent and MCP server in your company — ADK, A2A or custom —
behind one API and one MCP endpoint, with RBAC deciding who can reach what.
Protocol-agnostic
Custom REST/SSE, A2A (JSON-RPC) and Google ADK agents — all behind one uniform interface.
AG-UI native
The API emits standard AG-UI events over SSE, so the UI never has to know how an agent is built.
Sessions that persist
Conversation history per agent, stored in Redis and managed by the API. Agents stay stateless.
Multi-agent chats
Talk to several agents in one thread and propagate context between them.
Share & collaborate
Share conversations with revocable links, and build shared multi-agent groups your team uses together.
RBAC for every agent & MCP
Fine-grained, per-agent and per-MCP access control by group or user. One endpoint; each caller only sees what they’re allowed to.
MCP server
Aggregate your agents and company MCP servers into one MCP endpoint for any compatible IDE or CLI — standard OAuth + Dynamic Client Registration, no manual setup.
Built-in observability
Usage, latency and cost dashboards out of the box. Plus a Slack integration.
Deploy anywhere
Published container images, a Docker Compose stack and Helm values for Kubernetes.
Three steps to one front door for every agent
Register what you already run, put it behind a single gateway, and reach it from anywhere — without each client learning a new protocol.
Register any agent
Point Agentgram at an agent’s endpoint and pick its protocol — Custom REST/SSE, A2A (JSON-RPC) or Google ADK. No redeploy: agents are managed at runtime from the admin panel and stored in PostgreSQL.
One API, one MCP endpoint — behind RBAC
Every agent and every company MCP server is reachable through a single API and a single /mcp endpoint. Role-based access control decides, per agent and per MCP server, exactly who can reach what.
Talk to it from anywhere
Chat from the web UI, call agents as tools from your IDE or CLI over MCP, or wire them into Slack. The API converts every protocol into a uniform stream of AG-UI events.
A thin, stateless multiplexer in the middle
Clients speak AG-UI and MCP. Agents speak their own protocol. The Go API translates between them, enforces access, and keeps the sessions.
Different protocols in. One event stream out.
Whatever an agent speaks, the web client always sees the same AG-UI events — so the UI never changes when your agents do.
A plain HTTP endpoint that streams Server-Sent Events (or returns JSON). The simplest way to plug in your own service.
POST /api/agents/{agentId}/chat
Content-Type: application/json
{ "messages": [{ "role": "user", "content": "Hello" }],
"session_id": "optional-uuid" }One gateway, many workflows
A single integration that each person experiences differently, based on what they're allowed to reach.
Bundle logs, metrics and Kubernetes agents into a shared group and triage an outage together — everyone sees the same thread.
Add one MCP endpoint to Claude Code or Cursor and call every agent you're allowed to as a tool — ask_logs-agent and more.
Built-in dashboards break down usage, latency and error rate per agent and per user — no extra observability stack.
Send a teammate a read-only, time-limited and revocable link to a conversation. They can clone it to keep digging.
Register every agent and MCP server once; RBAC by Google Workspace group or email gives each person only what they're entitled to.
Custom REST/SSE, A2A or Google ADK — register the endpoint and it speaks AG-UI like everything else.
A real chat client, not a demo widget
Streaming responses, tool calls, multi-agent threads and an admin surface to manage it all.




Your agents as tools, in any MCP client
Agentgram ships a standard MCP server with OAuth and Dynamic Client Registration — connect with just the URL.
claude mcp add --transport http agentgram https://agentgram.eu/mcp
# then run /mcp, pick "agentgram" and sign in onceYou get one ask_<agent-id> tool per agent you can reach, plus the tools of every MCP server registered in Agentgram — all filtered by your permissions.
From a laptop to a cluster
Published container images, a Docker Compose stack and Helm values. Database migrations run automatically on startup.
Self-host the whole stack on a single VM.
cd agentgram/examples/docker-compose
cp .env.example .env # set POSTGRES_PASSWORD, pin AGENTGRAM_VERSION
docker compose up -d # web on http://localhost:3000One chat. Every agent. Any protocol.
Run the full stack locally in a couple of commands, then point it at your own agents.
Open source · MIT licensed · Self-hosted