> 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. # run > Start the client with automatic reconnection. [connect]: /docs/server-sdks/reference/typescript/relay/client/connect [disconnect]: /docs/server-sdks/reference/typescript/relay/client/disconnect [ref-relayclient]: /docs/server-sdks/reference/typescript/relay/client Async entry point that connects to Relay and runs the event loop until interrupted. This is the recommended way to start a [`RelayClient`][ref-relayclient] for long-running services. It calls [`connect()`][connect] internally and automatically reconnects with exponential backoff (1 second initial delay, up to 30 seconds maximum) if the connection is lost. The method awaits until shutdown is requested. Press `Ctrl+C` to trigger a clean shutdown -- the client handles `SIGINT` and `SIGTERM` gracefully. > **Note** > > For async contexts where you need manual control over the connection lifecycle, > use [`connect()`][connect] and > [`disconnect()`][disconnect] directly. ## **Parameters** None. ## **Returns** `Promise` -- resolves when the client is stopped via `Ctrl+C` or a programmatic shutdown. ## **Example** ```typescript {17} import { RelayClient } from '@signalwire/sdk'; const client = new RelayClient({ project: process.env.SIGNALWIRE_PROJECT_ID!, token: process.env.SIGNALWIRE_API_TOKEN!, contexts: ['default'] }); client.onCall(async (call) => { await call.answer(); const action = await call.play([{ type: 'tts', text: 'Welcome! Goodbye.' }]); await action.wait(); await call.hangup(); }); // Awaits forever, reconnects on connection loss await client.run(); ``` > Start the client with automatic reconnection.