<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Operations on Ulai Docs</title><link>https://docs.ulai.co.in/docs/agent-server/operations/</link><description>Recent content in Operations on Ulai Docs</description><generator>Hugo</generator><language>en</language><atom:link href="https://docs.ulai.co.in/docs/agent-server/operations/index.xml" rel="self" type="application/rss+xml"/><item><title>Deployment</title><link>https://docs.ulai.co.in/docs/agent-server/operations/deployment/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.ulai.co.in/docs/agent-server/operations/deployment/</guid><description>&lt;h2 id="the-image"&gt;The image&lt;a class="td-heading-self-link" href="#the-image" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;It is a &lt;strong&gt;heavy image and has to be&lt;/strong&gt;: it owns the audio. RNNoise is compiled&#10;from vendored C, TEN VAD is a prebuilt &lt;code&gt;.so&lt;/code&gt;, and libopus, libsoxr and&#10;libspeexdsp are linked for the transport and the DSP chain.&lt;/p&gt;&#10;&lt;p&gt;The runtime stage is Debian slim and carries only the binary plus those shared&#10;libraries. It owns no business data — no database, no agent store, no&#10;credentials.&lt;/p&gt;</description></item><item><title>Observability</title><link>https://docs.ulai.co.in/docs/agent-server/operations/observability/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.ulai.co.in/docs/agent-server/operations/observability/</guid><description>&lt;p&gt;Everything goes to stdout, so &lt;code&gt;docker logs&lt;/code&gt; is the whole interface. Every line&#10;for a call carries its bridge id, which makes one call one filter:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker logs agent_server --tail &lt;span class="m"&gt;100&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker logs agent_server 2&amp;gt;&lt;span class="p"&gt;&amp;amp;&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; grep 48c7ad0bc30f &lt;span class="c1"&gt;# one call&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker logs -f agent_server &lt;span class="c1"&gt;# follow&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;There are no metrics endpoints. Ship stdout to wherever you keep logs.&lt;/p&gt;&#10;&lt;h2 id="at-boot"&gt;At boot&lt;a class="td-heading-self-link" href="#at-boot" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;The whole configuration is printed, including variables that are &lt;strong&gt;set but not&#10;read&lt;/strong&gt; — usually a rename:&lt;/p&gt;</description></item><item><title>Troubleshooting</title><link>https://docs.ulai.co.in/docs/agent-server/operations/troubleshooting/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.ulai.co.in/docs/agent-server/operations/troubleshooting/</guid><description>&lt;h2 id="start-here"&gt;Start here&lt;a class="td-heading-self-link" href="#start-here" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker ps --filter &lt;span class="nv"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;agent_server &lt;span class="c1"&gt;# is it running?&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;curl -s http://localhost:8000/health &lt;span class="c1"&gt;# → ok&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker logs agent_server --tail &lt;span class="m"&gt;100&lt;/span&gt; &lt;span class="c1"&gt;# what happened&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Every line for a call carries its bridge id, so one call is one filter:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker logs agent_server 2&amp;gt;&lt;span class="p"&gt;&amp;amp;&lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt; &lt;span class="p"&gt;|&lt;/span&gt; grep 48c7ad0bc30f&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="the-call-joins-then-dies-immediately"&gt;The call joins, then dies immediately&lt;a class="td-heading-self-link" href="#the-call-joins-then-dies-immediately" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Look for &lt;code&gt;backend connect failed:&lt;/code&gt; right after &lt;code&gt;joined session=…&lt;/code&gt;.&lt;/p&gt;&#10;&lt;h3 id="this-call-carried-no-credentials-for-project-"&gt;&lt;code&gt;this call carried no credentials for project &amp;quot;…&amp;quot;&lt;/code&gt;&lt;a class="td-heading-self-link" href="#this-call-carried-no-credentials-for-project-" aria-label="Heading self-link"&gt;&lt;/a&gt;&lt;/h3&gt;&#10;&lt;p&gt;The profile carried a project but no key. The engine holds none of its own, so&#10;there is nothing to fall back onto.&lt;/p&gt;</description></item></channel></rss>