# Customer-Facing Agents (/use-cases/product-agents/overview)



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.

```python title="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](/use-cases/product-agents/serve-as-an-api#auth) for JWT authorization and opt-in per-user isolation.

## Serve one agent across surfaces [#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.

| Surface                                           | How it reaches the agent                                                                                                 |
| ------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| In-product chat                                   | `POST /agents/{agent_id}/runs` with `user_id` and a per-thread `session_id`                                              |
| Claude and ChatGPT                                | With MCP configured, [AgentOS MCP Server](/features/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 / WhatsApp                       | An 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 [#choose-a-path]

| You have                                        | You want                                         | Start with                                                             |
| ----------------------------------------------- | ------------------------------------------------ | ---------------------------------------------------------------------- |
| A SaaS product with customer accounts           | JWT authentication and opt-in per-user isolation | [Serve as an API](/use-cases/product-agents/serve-as-an-api)           |
| Users in Claude or ChatGPT                      | Your agent published as an MCP tool              | [AgentOS MCP Server](/features/mcp-server)                             |
| Users in Slack or the browser                   | The same agent where they already work           | [Interfaces](/use-cases/product-agents/interfaces)                     |
| An indexed document corpus                      | Answers grounded in retrieved content            | [Knowledge agents](/use-cases/knowledge-agents)                        |
| Live systems such as Slack, Drive, or databases | Current records queried at run time              | [Connecting your data](/use-cases/product-agents/connecting-your-data) |
| Multi-day user relationships                    | Memory that persists per user across surfaces    | [Sessions and memory](/use-cases/product-agents/sessions-and-memory)   |

## Explore [#explore]

<CardGroup cols="2">
  <Card title="Serve as an API" icon="server" href="/use-cases/product-agents/serve-as-an-api">
    Turn the agent into an HTTP service with streaming, sessions, and auth.
  </Card>

  <Card title="Sessions and memory" icon="clock-rotate-left" href="/use-cases/product-agents/sessions-and-memory">
    Store multi-turn history and per-user memory in the configured database.
  </Card>

  <Card title="Connecting your data" icon="plug" href="/use-cases/product-agents/connecting-your-data">
    Give the agent access to Slack, Drive, databases, and MCP servers.
  </Card>

  <Card title="Interfaces" icon="comments" href="/use-cases/product-agents/interfaces">
    Connect Slack, Telegram, WhatsApp, and browser clients through interface adapters.
  </Card>
</CardGroup>

## Developer Resources [#developer-resources]

* [Runtime overview](/features/runtime)
* [Sessions](/sessions/overview)
* [Memory](/memory/overview)
* [Scout template](/deploy/templates/scout/overview)
