> Fetch clean Markdown by appending `.md` to any page URL under https://signalwire.com/docs or requesting it with the HTTP header `Accept: text/markdown`. The root index at https://signalwire.com/docs/llms.txt lists the available documentation indexes. # AgentServer > Host multiple AI agents on a single Hono HTTP server with shared routing and health checks. [agentbase]: /docs/server-sdks/reference/typescript/agents/agent-base [agentbase-serve]: /docs/server-sdks/reference/typescript/agents/agent-base/serve [agentbase-run]: /docs/server-sdks/reference/typescript/agents/agent-base/run [getagent]: /docs/server-sdks/reference/typescript/agents/agent-server/get-agent [getagents]: /docs/server-sdks/reference/typescript/agents/agent-server/get-agents [register]: /docs/server-sdks/reference/typescript/agents/agent-server/register [registerglobalroutingcallback]: /docs/server-sdks/reference/typescript/agents/agent-server/routing-callback [run]: /docs/server-sdks/reference/typescript/agents/agent-server/run [servestaticfiles]: /docs/server-sdks/reference/typescript/agents/agent-server/static-files [setupsiprouting]: /docs/server-sdks/reference/typescript/agents/agent-server/sip-routing [unregister]: /docs/server-sdks/reference/typescript/agents/agent-server/unregister `AgentServer` hosts multiple [`AgentBase`][agentbase] instances on a single Hono HTTP server. Each agent registers at its own URL route, and the server provides unified health monitoring, SIP-based routing, and static file serving. Use `AgentServer` when you have several related agents (sales, support, billing) that share the same deployment. For a single agent, use [`AgentBase.serve()`][agentbase-serve] or [`AgentBase.run()`][agentbase-run] instead. ## **Constructor** ```typescript {3} import { AgentServer } from '@signalwire/sdk'; const server = new AgentServer({ host: '0.0.0.0', port: 3000 }); ``` ### Constructor Parameters **`opts`** `object` Optional server configuration. --- **`opts.host`** `string` — default: 0.0.0.0 Hostname the server binds to. --- **`opts.port`** `number` — default: 3000 Port the server listens on. Also reads from the `PORT` environment variable. --- **`opts.logLevel`** `string` — default: info Logging level: `'debug'`, `'info'`, `'warn'`, or `'error'`. Lowercased and applied globally via `setGlobalLogLevel`. --- ## **Properties** **`host`** `string` The hostname the server binds to. --- **`port`** `number` The port the server listens on. --- **`logLevel`** `string` The logging level for the server (read-only). --- ## **Methods** #### [getAgent](/docs/server-sdks/reference/typescript/agents/agent-server/get-agent) Retrieve a specific registered agent by its route. #### [getAgents](/docs/server-sdks/reference/typescript/agents/agent-server/get-agents) Return all registered agents as a Map. #### [getApp](/docs/server-sdks/reference/typescript/agents/agent-server/get-app) Get the fully configured Hono application. #### [register](/docs/server-sdks/reference/typescript/agents/agent-server/register) Register an agent at a URL route on the server. #### [registerGlobalRoutingCallback](/docs/server-sdks/reference/typescript/agents/agent-server/routing-callback) Register a routing callback across all agents for custom request routing. #### [run](/docs/server-sdks/reference/typescript/agents/agent-server/run) Start the multi-agent HTTP server. #### [serveStaticFiles](/docs/server-sdks/reference/typescript/agents/agent-server/static-files) Serve static files from a directory alongside agent routes. #### [setupSipRouting](/docs/server-sdks/reference/typescript/agents/agent-server/sip-routing) Configure SIP-based routing to direct calls to specific agents by username. #### [unregister](/docs/server-sdks/reference/typescript/agents/agent-server/unregister) Remove an agent from the server's registry by route. ## **Example** ```typescript {11-14} import { AgentBase, AgentServer } from '@signalwire/sdk'; const salesAgent = new AgentBase({ name: 'sales-agent', route: '/sales' }); salesAgent.addLanguage({ name: 'English', code: 'en-US', voice: 'rime.spore' }); salesAgent.promptAddSection('Role', { body: 'You are a sales representative.' }); const supportAgent = new AgentBase({ name: 'support-agent', route: '/support' }); supportAgent.addLanguage({ name: 'English', code: 'en-US', voice: 'rime.spore' }); supportAgent.promptAddSection('Role', { body: 'You are a support specialist.' }); const server = new AgentServer({ host: '0.0.0.0', port: 3000 }); server.register(salesAgent, '/sales'); server.register(supportAgent, '/support'); await server.run(); ``` After starting, agents are available at: | Endpoint | Description | | ------------------------------- | --------------- | | `http://localhost:3000/sales` | Sales agent | | `http://localhost:3000/support` | Support agent | | `http://localhost:3000/health` | Health check | | `http://localhost:3000/ready` | Readiness check | > Host multiple AI agents on a single Hono HTTP server with shared routing and health checks. ## Docs - [getAgent](https://signalwire.com/docs/server-sdks/reference/typescript/agents/agent-server/get-agent.md): Look up a registered agent by its route prefix. - [getAgents](https://signalwire.com/docs/server-sdks/reference/typescript/agents/agent-server/get-agents.md): Return all registered agents keyed by their route prefix. - [getApp](https://signalwire.com/docs/server-sdks/reference/typescript/agents/agent-server/get-app.md): Build and return the Hono application with all registered agents. - [register](https://signalwire.com/docs/server-sdks/reference/typescript/agents/agent-server/register.md): Register an agent at a URL route on the server. - [registerGlobalRoutingCallback](https://signalwire.com/docs/server-sdks/reference/typescript/agents/agent-server/routing-callback.md): Register a routing callback across all agents for custom request routing. - [run](https://signalwire.com/docs/server-sdks/reference/typescript/agents/agent-server/run.md): Start the multi-agent HTTP server. - [serveStaticFiles](https://signalwire.com/docs/server-sdks/reference/typescript/agents/agent-server/static-files.md): Serve static files from a directory alongside agent routes. - [setupSipRouting](https://signalwire.com/docs/server-sdks/reference/typescript/agents/agent-server/sip-routing.md): Configure SIP-based routing to direct calls to specific agents by username. - [unregister](https://signalwire.com/docs/server-sdks/reference/typescript/agents/agent-server/unregister.md): Remove an agent from the server's registry by route.