Customer-Facing Agents

Build one agent for your product and serve it inside your product, through Claude and ChatGPT, and in messaging interfaces.

Customer-facing agents let customers ask questions, work with their data, and take action through your product. Build one agent with tools for product actions and instructions that encode your product's rules and policies. AgentOS can serve that agent inside your product, through Claude and ChatGPT as an MCP connector, and in Slack or other messaging interfaces.

customer_agent.py
from agno.agent import Agent
from agno.db.postgres import PostgresDb
from agno.models.openai import OpenAIResponses
from agno.os import AgentOS

db = PostgresDb(db_url="postgresql+psycopg://ai:ai@localhost:5532/ai")

agent = Agent(
    name="Customer-Facing Agent",
    model=OpenAIResponses(id="gpt-5.5"),
    db=db,
    add_history_to_context=True,
    num_history_runs=5,
    enable_agentic_memory=True,
)

agent_os = AgentOS(agents=[agent], db=db)
app = agent_os.get_app()

if __name__ == "__main__":
    agent_os.serve(app="customer_agent:app", port=7777)

This configuration provides an HTTP API, persistent multi-turn history, and per-user memory. Authentication is disabled until you enable it. See Serve as an API for JWT authorization and opt-in per-user isolation.

Serve one agent across surfaces

The agent runs in your AgentOS as a service. Product interfaces, MCP clients, messaging interfaces, and backend jobs connect to the same agent.

SurfaceHow it reaches the agent
In-product chatPOST /agents/{agent_id}/runs with user_id and a per-thread session_id
Claude and ChatGPTWith MCP configured, AgentOS MCP Server publishes the agent as a natural-language tool at /mcp
Inline action ("summarize this", "draft a reply")The same endpoint, a short-lived session_id
Slack / Telegram / WhatsAppAn interface adapter maps the channel onto runs and sessions
Backend event (webhook, cron)A custom FastAPI route calling agent.arun(...)

Stored memory can follow a user when surfaces call the same agent with the same user_id and database. Session history continues only when they also reuse the same session_id. Messaging interfaces usually create surface-specific session IDs.

Choose a path

You haveYou wantStart with
A SaaS product with customer accountsJWT authentication and opt-in per-user isolationServe as an API
Users in Claude or ChatGPTYour agent published as an MCP toolAgentOS MCP Server
Users in Slack or the browserThe same agent where they already workInterfaces
An indexed document corpusAnswers grounded in retrieved contentKnowledge agents
Live systems such as Slack, Drive, or databasesCurrent records queried at run timeConnecting your data
Multi-day user relationshipsMemory that persists per user across surfacesSessions and memory

Explore

Developer Resources