<h1>Welcome to Arch!<a@click.prevent="window.navigator.clipboard.writeText($el.href); $el.setAttribute('data-tooltip', 'Copied!'); setTimeout(() => $el.setAttribute('data-tooltip', 'Copy link to this element'), 2000)"aria-label="Copy link to this element"class="headerlink"data-tooltip="Copy link to this element"href="#welcome-to-arch"><svgheight="1em"viewbox="0 0 24 24"width="1em"xmlns="http://www.w3.org/2000/svg"><pathd="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z"></path></svg></a></h1>
<p>Build <strong>faster</strong>, <strong>multi-LLM</strong> agents for the <strong>enterprise</strong>.</p>
</div>
<ahref="https://www.producthunt.com/posts/arch-3?embed=true&utm_source=badge-top-post-badge&utm_medium=badge&utm_souce=badge-arch-3"target="_blank"><imgalt="Arch - Build fast, hyper-personalized agents with intelligent infra | Product Hunt"height="54"src="https://api.producthunt.com/widgets/embed-image/v1/top-post-badge.svg?post_id=565761&theme=dark&period=daily&t=1742433071161"style="width: 250px; height: 54px;"width="250"/></a><p><aclass="reference external"href="https://github.com/katanemo/arch"rel="nofollow noopener">Arch<svgfill="currentColor"height="1em"stroke="none"viewbox="0 96 960 960"width="1em"xmlns="http://www.w3.org/2000/svg"><pathd="M188 868q-11-11-11-28t11-28l436-436H400q-17 0-28.5-11.5T360 336q0-17 11.5-28.5T400 296h320q17 0 28.5 11.5T760 336v320q0 17-11.5 28.5T720 696q-17 0-28.5-11.5T680 656V432L244 868q-11 11-28 11t-28-11Z"></path></svg></a> is a smart edge and AI gateway for AI-native apps - one that is natively designed to handle and process prompts, not just network traffic.</p>
<ahref="https://www.producthunt.com/posts/arch-3?embed=true&utm_source=badge-top-post-badge&utm_medium=badge&utm_souce=badge-arch-3"target="_blank"><imgalt="Arch - Build fast, hyper-personalized agents with intelligent infra | Product Hunt"height="54"src="https://api.producthunt.com/widgets/embed-image/v1/top-post-badge.svg?post_id=565761&theme=dark&period=daily&t=1742433071161"style="width: 250px; height: 54px;"width="250"/></a><p><aclass="reference external"href="https://github.com/katanemo/arch"rel="nofollow noopener">Arch<svgfill="currentColor"height="1em"stroke="none"viewbox="0 96 960 960"width="1em"xmlns="http://www.w3.org/2000/svg"><pathd="M188 868q-11-11-11-28t11-28l436-436H400q-17 0-28.5-11.5T360 336q0-17 11.5-28.5T400 296h320q17 0 28.5 11.5T760 336v320q0 17-11.5 28.5T720 696q-17 0-28.5-11.5T680 656V432L244 868q-11 11-28 11t-28-11Z"></path></svg></a> is a models-native edge and LLM proxy/gateway for AI agents - one that is natively designed to handle and process prompts, not just network traffic.</p>
<p>Built by contributors to the widely adopted <aclass="reference external"href="https://www.envoyproxy.io/"rel="nofollow noopener">Envoy Proxy<svgfill="currentColor"height="1em"stroke="none"viewbox="0 96 960 960"width="1em"xmlns="http://www.w3.org/2000/svg"><pathd="M188 868q-11-11-11-28t11-28l436-436H400q-17 0-28.5-11.5T360 336q0-17 11.5-28.5T400 296h320q17 0 28.5 11.5T760 336v320q0 17-11.5 28.5T720 696q-17 0-28.5-11.5T680 656V432L244 868q-11 11-28 11t-28-11Z"></path></svg></a>, Arch handles the <em>pesky low-level work</em> in building agentic apps — like applying guardrails, clarifying vague user input, routing prompts to the right agent, and unifying access to any LLM. It’s a language and framework friendly infrastructure layer designed to help you build and ship agentic apps faster.</p>
<liclass="toctree-l2"><aclass="reference internal"href="../concepts/llm_providers/supported_providers.html">Supported Providers & Configuration</a></li>
<spanid="id1"></span><h1>Deployment<a@click.prevent="window.navigator.clipboard.writeText($el.href); $el.setAttribute('data-tooltip', 'Copied!'); setTimeout(() => $el.setAttribute('data-tooltip', 'Copy link to this element'), 2000)"aria-label="Copy link to this element"class="headerlink"data-tooltip="Copy link to this element"href="#deployment"><svgheight="1em"viewbox="0 0 24 24"width="1em"xmlns="http://www.w3.org/2000/svg"><pathd="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z"></path></svg></a></h1>
<p>This guide shows how to deploy Arch directly using Docker without the archgw CLI, including basic runtime checks for routing and health monitoring.</p>
<sectionid="docker-deployment">
<h2>Docker Deployment<a@click.prevent="window.navigator.clipboard.writeText($el.href); $el.setAttribute('data-tooltip', 'Copied!'); setTimeout(() => $el.setAttribute('data-tooltip', 'Copy link to this element'), 2000)"aria-label="Copy link to this element"class="headerlink"data-tooltip="Copy link to this element"href="#docker-deployment"x-intersect.margin.0%.0%.-70%.0%="activeSection ='#docker-deployment'"><svgheight="1em"viewbox="0 0 24 24"width="1em"xmlns="http://www.w3.org/2000/svg"><pathd="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z"></path></svg></a></h2>
<p>Below is a minimal, production-ready example showing how to deploy the Arch Docker image directly and run basic runtime checks. Adjust image names, tags, and the <codeclass="docutils literal notranslate"><spanclass="pre">arch_config.yaml</span></code> path to match your environment.</p>
<divclass="admonition note">
<pclass="admonition-title">Note</p>
<p>You will need to pass all required environment variables that are referenced in your <codeclass="docutils literal notranslate"><spanclass="pre">arch_config.yaml</span></code> file.</p>
</div>
<p>For <codeclass="docutils literal notranslate"><spanclass="pre">arch_config.yaml</span></code>, you can use any sample configuration defined earlier in the documentation. For example, you can try the <aclass="reference internal"href="../guides/llm_router.html#llm-router"><spanclass="std std-ref">LLM Routing</span></a> sample config.</p>
<sectionid="docker-compose-setup">
<h3>Docker Compose Setup<a@click.prevent="window.navigator.clipboard.writeText($el.href); $el.setAttribute('data-tooltip', 'Copied!'); setTimeout(() => $el.setAttribute('data-tooltip', 'Copy link to this element'), 2000)"aria-label="Copy link to this element"class="headerlink"data-tooltip="Copy link to this element"href="#docker-compose-setup"x-intersect.margin.0%.0%.-70%.0%="activeSection ='#docker-compose-setup'"><svgheight="1em"viewbox="0 0 24 24"width="1em"xmlns="http://www.w3.org/2000/svg"><pathd="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z"></path></svg></a></h3>
<p>Create a <codeclass="docutils literal notranslate"><spanclass="pre">docker-compose.yml</span></code> file with the following configuration:</p>
<h3>Starting the Stack<a@click.prevent="window.navigator.clipboard.writeText($el.href); $el.setAttribute('data-tooltip', 'Copied!'); setTimeout(() => $el.setAttribute('data-tooltip', 'Copy link to this element'), 2000)"aria-label="Copy link to this element"class="headerlink"data-tooltip="Copy link to this element"href="#starting-the-stack"x-intersect.margin.0%.0%.-70%.0%="activeSection ='#starting-the-stack'"><svgheight="1em"viewbox="0 0 24 24"width="1em"xmlns="http://www.w3.org/2000/svg"><pathd="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z"></path></svg></a></h3>
<p>Start the services from the directory containing <codeclass="docutils literal notranslate"><spanclass="pre">docker-compose.yml</span></code> and <codeclass="docutils literal notranslate"><spanclass="pre">arch_config.yaml</span></code>:</p>
<divclass="highlight-bash notranslate"><divclass="highlight"><pre><span></span><code><spanid="line-1"><spanclass="c1"># Set required environment variables and start services</span>
</span><spanid="line-3"><spanclass="w"></span>--data<spanclass="w"></span><spanclass="s1">'{"messages":[{"role":"user","content":"tell me a joke"}], "model":"none"}'</span><spanclass="w"></span><spanclass="se">\</span>
<h2>Troubleshooting<a@click.prevent="window.navigator.clipboard.writeText($el.href); $el.setAttribute('data-tooltip', 'Copied!'); setTimeout(() => $el.setAttribute('data-tooltip', 'Copy link to this element'), 2000)"aria-label="Copy link to this element"class="headerlink"data-tooltip="Copy link to this element"href="#troubleshooting"x-intersect.margin.0%.0%.-70%.0%="activeSection ='#troubleshooting'"><svgheight="1em"viewbox="0 0 24 24"width="1em"xmlns="http://www.w3.org/2000/svg"><pathd="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z"></path></svg></a></h2>
<sectionid="common-issues-and-solutions">
<h3>Common Issues and Solutions<a@click.prevent="window.navigator.clipboard.writeText($el.href); $el.setAttribute('data-tooltip', 'Copied!'); setTimeout(() => $el.setAttribute('data-tooltip', 'Copy link to this element'), 2000)"aria-label="Copy link to this element"class="headerlink"data-tooltip="Copy link to this element"href="#common-issues-and-solutions"x-intersect.margin.0%.0%.-70%.0%="activeSection ='#common-issues-and-solutions'"><svgheight="1em"viewbox="0 0 24 24"width="1em"xmlns="http://www.w3.org/2000/svg"><pathd="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z"></path></svg></a></h3>
<dlclass="simple">
<dt><strong>Environment Variables</strong></dt><dd><p>Ensure all environment variables (<codeclass="docutils literal notranslate"><spanclass="pre">OPENAI_API_KEY</span></code>, <codeclass="docutils literal notranslate"><spanclass="pre">ANTHROPIC_API_KEY</span></code>, etc.) used by <codeclass="docutils literal notranslate"><spanclass="pre">arch_config.yaml</span></code> are set before starting services.</p>
</dd>
<dt><strong>TLS/Connection Errors</strong></dt><dd><p>If you encounter TLS or connection errors to upstream providers:</p>
<ulclass="simple">
<li><p>Check DNS resolution</p></li>
<li><p>Verify proxy settings</p></li>
<li><p>Confirm correct protocol and port in your <codeclass="docutils literal notranslate"><spanclass="pre">arch_config</span></code> endpoints</p></li>
</ul>
</dd>
<dt><strong>Verbose Logging</strong></dt><dd><p>To enable more detailed logs for debugging:</p>
<ulclass="simple">
<li><p>Run archgw with a higher component log level</p></li>
<li><p>See the <aclass="reference internal"href="../guides/observability/observability.html#observability"><spanclass="std std-ref">Observability</span></a> guide for logging and monitoring details</p></li>
<li><p>Rebuild the image if required with updated log configuration</p></li>
</ul>
</dd>
<dt><strong>CI/Automated Checks</strong></dt><dd><p>For continuous integration or automated testing, you can use the curl commands above as health checks in your deployment pipeline.</p>