<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>iYan Documentation on iYan Docs</title><link>https://docs.iyan.ai/</link><description>Recent content in iYan Documentation on iYan Docs</description><generator>Hugo</generator><language>en</language><lastBuildDate>Mon, 01 Jan 0001 00:00:00 +0000</lastBuildDate><atom:link href="https://docs.iyan.ai/index.xml" rel="self" type="application/rss+xml"/><item><title>Installation</title><link>https://docs.iyan.ai/docs/enterprise/installation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.iyan.ai/docs/enterprise/installation/</guid><description>&lt;p&gt;Self-hosted iYan Enterprise is deployed with Ansible. All images are pre-built
and pulled from the iYan private registry — no compilation required.&lt;/p&gt;
&lt;h2 id="architecture"&gt;Architecture &lt;a href="#architecture" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;&lt;style&gt;
.zoom-img {
 cursor: zoom-in;
 transition: opacity 0.2s;
}
.zoom-img:hover { opacity: 0.85; }
.zoom-overlay {
 position: fixed;
 inset: 0;
 z-index: 9999;
 background: rgba(0,0,0,0.85);
 display: none;
 align-items: center;
 justify-content: center;
 cursor: zoom-out;
 padding: 2rem;
}
.zoom-overlay.open { display: flex; }
.zoom-overlay img {
 max-width: 95vw;
 max-height: 95vh;
 border-radius: 4px;
 box-shadow: 0 8px 32px rgba(0,0,0,0.4);
}
.zoom-close {
 position: absolute;
 top: 1rem;
 right: 1.5rem;
 color: #fff;
 font-size: 2rem;
 cursor: pointer;
 line-height: 1;
}
&lt;/style&gt;
&lt;p&gt;&lt;img src="https://docs.iyan.ai/images/alpha-platform-architecture.png"
alt="Alpha Platform Architecture"
loading="lazy"
class="zoom-img"
style="width:100%;border:1px solid #e5e7eb;border-radius:8px;margin:1em 0;"&gt;&lt;/p&gt;</description></item><item><title>Platform Overview</title><link>https://docs.iyan.ai/docs/architecture/overview/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.iyan.ai/docs/architecture/overview/</guid><description>&lt;p&gt;The Alpha Platform is composed of the following services. Each runs as a
container in the enterprise deployment; the license server is the only
component hosted by the vendor off-site.&lt;/p&gt;
&lt;h2 id="core-services"&gt;Core services &lt;a href="#core-services" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Service&lt;/th&gt;
					&lt;th&gt;Role&lt;/th&gt;
					&lt;th&gt;Description&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Kira&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;AI agent backend&lt;/td&gt;
					&lt;td&gt;Core AI agent backend. Serves the REST API, SSE streaming, authentication, and the agent orchestration loop.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Misa&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Worker&lt;/td&gt;
					&lt;td&gt;Async task worker: images, diagrams, voice transcription, email, cron jobs. Consumes tasks from RabbitMQ.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Ryuk&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Web frontend&lt;/td&gt;
					&lt;td&gt;nginx serving the React 19 + Vite web SPA. Reverse-proxies API calls to Kira.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Web SPA&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;UI&lt;/td&gt;
					&lt;td&gt;React 19 + Vite web application (chat, vault, kanban, settings, playground).&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Mobile app&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;UI (planned)&lt;/td&gt;
					&lt;td&gt;Release planned for 2027.&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="infrastructure-services"&gt;Infrastructure services &lt;a href="#infrastructure-services" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Service&lt;/th&gt;
					&lt;th&gt;Role&lt;/th&gt;
					&lt;th&gt;Description&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;RabbitMQ&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Message broker&lt;/td&gt;
					&lt;td&gt;AMQP broker carrying async tasks between Kira and Misa.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;PostgreSQL&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Vector store&lt;/td&gt;
					&lt;td&gt;PostgreSQL with the &lt;code&gt;pgvector&lt;/code&gt; extension — stores embeddings for RAG.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Ollama&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;LLM inference&lt;/td&gt;
					&lt;td&gt;Local LLM and embedding model server. Model-agnostic.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Docling&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Document conversion&lt;/td&gt;
					&lt;td&gt;Converts PDF, DOCX, PPTX into markdown for RAG ingestion.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;SearXNG&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Web search&lt;/td&gt;
					&lt;td&gt;Privacy-respecting meta search engine used by the web search tool.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;MCPJungle&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;MCP gateway&lt;/td&gt;
					&lt;td&gt;MCP (Model Context Protocol) gateway and server management.&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="external-integrations"&gt;External integrations &lt;a href="#external-integrations" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Integration&lt;/th&gt;
					&lt;th&gt;Type&lt;/th&gt;
					&lt;th&gt;Description&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Google Drive&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;MCP provider&lt;/td&gt;
					&lt;td&gt;File storage.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Gmail&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;MCP provider&lt;/td&gt;
					&lt;td&gt;Email.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Outlook&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;MCP provider&lt;/td&gt;
					&lt;td&gt;Email and calendar.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Notion&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;MCP provider&lt;/td&gt;
					&lt;td&gt;Notes and docs.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Odoo&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;MCP (in-network)&lt;/td&gt;
					&lt;td&gt;Example of an MCP server inside the enterprise network.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;SSO&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Auth&lt;/td&gt;
					&lt;td&gt;Single sign-on (Google, Microsoft, LinkedIn).&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="vendor-hosted"&gt;Vendor-hosted &lt;a href="#vendor-hosted" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Service&lt;/th&gt;
					&lt;th&gt;Description&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;License Server&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Enterprise license authority at &lt;code&gt;license.iyan.ca&lt;/code&gt;. Validates enterprise licenses; never deployed on the client site.&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="agent-to-agent"&gt;Agent-to-agent &lt;a href="#agent-to-agent" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;The platform supports agent-to-agent interaction — you can use your favorite
agent client (opencode, claudecode, …) against the iYan API.&lt;/p&gt;</description></item><item><title>Kira Backend</title><link>https://docs.iyan.ai/docs/architecture/backend/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.iyan.ai/docs/architecture/backend/</guid><description>&lt;p&gt;Kira is the core AI agent backend. It is a single binary that serves the
REST API, authenticates users, orchestrates the agent loop, and manages
per-user isolation.&lt;/p&gt;
&lt;h2 id="responsibilities"&gt;Responsibilities &lt;a href="#responsibilities" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Kira handles six jobs:&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Responsibility&lt;/th&gt;
					&lt;th&gt;Description&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;API server&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;REST + SSE streaming endpoints for chat, vault, tasks, cron, and user settings.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Authentication&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;JWT-based auth with refresh tokens, admin roles, and per-user isolation.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Agent orchestration&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Receives messages, loads session history, retrieves RAG context, calls the LLM, executes tools, and streams the response back.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Tool execution&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Runs actions requested by the LLM: file I/O in the vault, web search, email, document conversion, cron scheduling, sub-agent spawning.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Multi-user isolation&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Each user gets their own agent instance, vault, vector store, and cron jobs.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;Enterprise licensing&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Validates the license against the vendor server, enforces seat counts, and gates enterprise features.&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="llm-providers"&gt;LLM providers &lt;a href="#llm-providers" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;The backend talks to any OpenAI-compatible LLM endpoint. Out of the box it
supports:&lt;/p&gt;</description></item><item><title>Licensing</title><link>https://docs.iyan.ai/docs/enterprise/licensing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.iyan.ai/docs/enterprise/licensing/</guid><description>&lt;p&gt;The enterprise edition uses a vendor-hosted license server. &lt;strong&gt;No license server
runs on your infrastructure.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="how-it-works"&gt;How it works &lt;a href="#how-it-works" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;iYan issues a license file (&lt;code&gt;license.jwt&lt;/code&gt;) for your installation&lt;/li&gt;
&lt;li&gt;You place the file on your server:



 
 
 

 
 
 
 

 

 &lt;div class="prism-codeblock "&gt;
 &lt;pre id="0b7ccf9" class="language-bash "&gt;
 &lt;code&gt;scp license.jwt debian@YOUR_SERVER_IP:/tmp/license.jwt
ssh debian@YOUR_SERVER_IP &amp;#34;sudo cp /tmp/license.jwt /opt/iyan-data/kira/license.jwt&amp;#34;&lt;/code&gt;
 &lt;/pre&gt;
 &lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Set the edition mode to &lt;code&gt;enterprise&lt;/code&gt; in &lt;code&gt;ansible/group_vars/all.yml&lt;/code&gt;:



 
 
 

 
 
 
 

 

 &lt;div class="prism-codeblock "&gt;
 &lt;pre id="b8b083c" class="language-yaml "&gt;
 &lt;code&gt;kira_edition_mode: enterprise&lt;/code&gt;
 &lt;/pre&gt;
 &lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Redeploy or restart Kira:



 
 
 

 
 
 
 

 

 &lt;div class="prism-codeblock "&gt;
 &lt;pre id="61f7349" class="language-bash "&gt;
 &lt;code&gt;ansible-playbook -i ansible/hosts.ini ansible/playbook.yml
# or just: ssh debian@YOUR_SERVER_IP &amp;#34;docker restart iyan-kira&amp;#34;&lt;/code&gt;
 &lt;/pre&gt;
 &lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;Kira validates the license against &lt;code&gt;https://license.iyan.ca&lt;/code&gt; on startup and
every hour. A 72-hour grace period allows temporary server outages.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="getting-your-installation-id"&gt;Getting your installation ID &lt;a href="#getting-your-installation-id" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;To request a license from iYan, provide your installation ID:&lt;/p&gt;</description></item><item><title>Configuration</title><link>https://docs.iyan.ai/docs/enterprise/configuration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.iyan.ai/docs/enterprise/configuration/</guid><description>&lt;h2 id="edition-config-section"&gt;&lt;code&gt;edition&lt;/code&gt; config section &lt;a href="#edition-config-section" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Field&lt;/th&gt;
					&lt;th&gt;Default&lt;/th&gt;
					&lt;th&gt;Description&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;mode&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;auto&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;auto&lt;/code&gt; resolves to the build edition. &lt;code&gt;saas&lt;/code&gt; forces SaaS (dev override). &lt;code&gt;enterprise&lt;/code&gt; requires a valid license.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;license_file&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;~/.kira/license.jwt&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Path to the signed license token.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;license_server_url&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;https://license.iyan.ca&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Vendor license server base URL.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;heartbeat_interval&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;1h&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;How often kira contacts the license server.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;grace_period&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;72h&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Tolerate license-server outage before degrading.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;install_id_file&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;~/.kira/install.id&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Installation identity (auto-generated on first startup).&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Example config:&lt;/p&gt;



 
 
 

 
 
 
 

 

 &lt;div class="prism-codeblock "&gt;
 &lt;pre id="098be1f" class="language-yaml "&gt;
 &lt;code&gt;agent:
 name: kira
 data_dir: /home/kira/.kira
 log_level: info

api:
 port: 8080
 admin_email: admin@yourcompany.com
 admin_password: &amp;lt;change-me&amp;gt;

memory:
 obsidian_vault: /vault
 embeddings:
 store: pgvector
 connection_string: &amp;#34;postgres://...&amp;#34;

edition:
 mode: enterprise # auto | saas | enterprise
 license_file: /home/kira/.kira/license.jwt
 license_server_url: https://license.iyan.ca
 heartbeat_interval: 1h
 grace_period: 72h
 install_id_file: /home/kira/.kira/install.id

misa:
 amqp_url: &amp;#34;amqp://guest:guest@rabbitmq:5672/&amp;#34;&lt;/code&gt;
 &lt;/pre&gt;
 &lt;/div&gt;
&lt;h2 id="environment-variable-overrides"&gt;Environment variable overrides &lt;a href="#environment-variable-overrides" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;All config fields can be overridden via env vars:&lt;/p&gt;</description></item><item><title>Data Flow</title><link>https://docs.iyan.ai/docs/architecture/data-flow/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.iyan.ai/docs/architecture/data-flow/</guid><description>&lt;h2 id="synchronous-request-flow"&gt;Synchronous request flow &lt;a href="#synchronous-request-flow" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;


 
 
 

 
 
 
 

 

 &lt;div class="prism-codeblock "&gt;
 &lt;pre id="71705b4" class="language- "&gt;
 &lt;code&gt;User (Web / Mobile / Agent client)
 ↓
[Ryuk nginx] → reverse proxy → [Kira API]
 ↓
Auth &amp;#43; routing &amp;#43; session load
 ↓
Memory search (RAG context retrieval)
 ↓
Build system prompt (context &amp;#43; tools &amp;#43; history)
 ↓
LLM call (Ollama / configured provider)
 ↓
[While the LLM requests tools]:
 Execute tool → feed result back to LLM
 ↓
Format response → stream back to user via SSE&lt;/code&gt;
 &lt;/pre&gt;
 &lt;/div&gt;
&lt;h2 id="async-task-flow"&gt;Async task flow &lt;a href="#async-task-flow" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Long-running work (images, voice, email, cron) is offloaded to Misa via
RabbitMQ so the API stays responsive:&lt;/p&gt;</description></item><item><title>Database</title><link>https://docs.iyan.ai/docs/architecture/database/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.iyan.ai/docs/architecture/database/</guid><description>&lt;p&gt;iYan uses two storage layers: an application database for users, sessions, and
jobs, and a vector database for RAG embeddings.&lt;/p&gt;
&lt;h2 id="application-database"&gt;Application database &lt;a href="#application-database" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Operational data (users, sessions, settings, cron jobs, usage logs) is stored
in an embedded SQLite database managed by the backend.&lt;/p&gt;
&lt;h3 id="main-data-collections"&gt;Main data collections &lt;a href="#main-data-collections" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Collection&lt;/th&gt;
					&lt;th&gt;Usage&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;users&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;User accounts (with plans, quotas, preferences)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;user_states&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Last session per user&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;user_configs&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Appearance / behavior settings&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;user_cron_jobs&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Scheduled jobs per user&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;user_usage_logs&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Consumption tracking&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;system_settings&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Global configuration (admin)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;running_tasks&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Tasks currently executing&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="vector-store-embeddings"&gt;Vector store (embeddings) &lt;a href="#vector-store-embeddings" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Embeddings for RAG are stored in &lt;strong&gt;PostgreSQL with pgvector&lt;/strong&gt; in the
enterprise deployment (a centralised instance), or per-user SQLite in
single-user mode. This is configured in &lt;code&gt;memory.embeddings.store: pgvector&lt;/code&gt;
with a &lt;code&gt;connection_string&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Service Management</title><link>https://docs.iyan.ai/docs/enterprise/service-management/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.iyan.ai/docs/enterprise/service-management/</guid><description>&lt;h2 id="start--stop--restart"&gt;Start / stop / restart &lt;a href="#start--stop--restart" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;


 
 
 

 
 
 
 

 

 &lt;div class="prism-codeblock "&gt;
 &lt;pre id="5d823e7" class="language-bash "&gt;
 &lt;code&gt;# Start all services
cd /opt/iyan-entreprise &amp;amp;&amp;amp; docker compose up -d

# Stop all services
cd /opt/iyan-entreprise &amp;amp;&amp;amp; docker compose down

# Restart a specific service
docker restart iyan-kira

# Pull updated images and restart
cd /opt/iyan-entreprise &amp;amp;&amp;amp; docker compose pull &amp;amp;&amp;amp; docker compose up -d --force-recreate&lt;/code&gt;
 &lt;/pre&gt;
 &lt;/div&gt;
&lt;h2 id="logs"&gt;Logs &lt;a href="#logs" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;


 
 
 

 
 
 
 

 

 &lt;div class="prism-codeblock "&gt;
 &lt;pre id="512a18f" class="language-bash "&gt;
 &lt;code&gt;docker logs -f iyan-kira
docker logs -f iyan-misa
docker logs -f iyan-ollama&lt;/code&gt;
 &lt;/pre&gt;
 &lt;/div&gt;
&lt;h2 id="ollama-model-management"&gt;Ollama model management &lt;a href="#ollama-model-management" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;


 
 
 

 
 
 
 

 

 &lt;div class="prism-codeblock "&gt;
 &lt;pre id="8154b66" class="language-bash "&gt;
 &lt;code&gt;# List installed models
docker exec iyan-ollama ollama list

# Pull a new model
docker exec iyan-ollama ollama pull &amp;lt;model-name&amp;gt;

# Remove a model
docker exec iyan-ollama ollama rm &amp;lt;model-name&amp;gt;&lt;/code&gt;
 &lt;/pre&gt;
 &lt;/div&gt;
&lt;h3 id="pre-installed-models"&gt;Pre-installed models &lt;a href="#pre-installed-models" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Purpose&lt;/th&gt;
					&lt;th&gt;Model&lt;/th&gt;
					&lt;th&gt;Size&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;Primary LLM&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;qwen3.5:cloud&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;~4GB&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Embeddings&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;nomic-embed-text-v2-moe:latest&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;~1GB&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Subagent&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;llama3.2:latest&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;~2GB&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="updating"&gt;Updating &lt;a href="#updating" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;To update to a new version of iYan:&lt;/p&gt;</description></item><item><title>Backup and Restore</title><link>https://docs.iyan.ai/docs/enterprise/backup-restore/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.iyan.ai/docs/enterprise/backup-restore/</guid><description>&lt;h2 id="backup"&gt;Backup &lt;a href="#backup" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;


 
 
 

 
 
 
 

 

 &lt;div class="prism-codeblock "&gt;
 &lt;pre id="f62e239" class="language-bash "&gt;
 &lt;code&gt;# Full backup (stop services first for consistency)
cd /opt/iyan-entreprise &amp;amp;&amp;amp; docker compose down
tar czf iyan-backup-$(date &amp;#43;%Y%m%d).tar.gz /opt/iyan-data/
docker compose up -d

# PocketBase only
docker exec iyan-kira sqlite3 /home/kira/.kira/pb/data.db &amp;#34;.backup /dev/stdout&amp;#34; &amp;gt; pb-backup.sql

# PostgreSQL (embeddings)
docker exec iyan-postgres pg_dump -U iyan iyan &amp;gt; pg-backup.sql&lt;/code&gt;
 &lt;/pre&gt;
 &lt;/div&gt;
&lt;h2 id="restore"&gt;Restore &lt;a href="#restore" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;


 
 
 

 
 
 
 

 

 &lt;div class="prism-codeblock "&gt;
 &lt;pre id="47b087b" class="language-bash "&gt;
 &lt;code&gt;# Stop services
cd /opt/iyan-entreprise &amp;amp;&amp;amp; docker compose down

# Restore data
tar xzf iyan-backup-YYYYMMDD.tar.gz -C /

# Start services
docker compose up -d&lt;/code&gt;
 &lt;/pre&gt;
 &lt;/div&gt;</description></item><item><title>Scalability</title><link>https://docs.iyan.ai/docs/architecture/scalability/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.iyan.ai/docs/architecture/scalability/</guid><description>&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Resource&lt;/th&gt;
					&lt;th&gt;Strategy&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;API&lt;/td&gt;
					&lt;td&gt;Stateless — can scale horizontally&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;SQLite&lt;/td&gt;
					&lt;td&gt;Per user — avoids global locks&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Embeddings&lt;/td&gt;
					&lt;td&gt;SQLite per user or pgvector centralised&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Filesystem&lt;/td&gt;
					&lt;td&gt;Per user — partitioned naturally&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;LLM&lt;/td&gt;
					&lt;td&gt;Externalised — no local GPU load (Ollama can be split to its own host)&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Misa workers&lt;/td&gt;
					&lt;td&gt;Scale horizontally behind RabbitMQ&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Ollama&lt;/td&gt;
					&lt;td&gt;Can run on a dedicated GPU host&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="scaling-misa"&gt;Scaling Misa &lt;a href="#scaling-misa" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Because Misa consumes from RabbitMQ, you can run multiple Misa replicas to
parallelise image generation, document conversion, and email processing:&lt;/p&gt;</description></item><item><title>Enterprise API</title><link>https://docs.iyan.ai/docs/enterprise/api/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.iyan.ai/docs/enterprise/api/</guid><description>&lt;p&gt;All endpoints are under &lt;code&gt;/kira/enterprise/*&lt;/code&gt; and only mounted when the
enterprise provider is active.&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Method&lt;/th&gt;
					&lt;th&gt;Path&lt;/th&gt;
					&lt;th&gt;Auth&lt;/th&gt;
					&lt;th&gt;Description&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;GET&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;/kira/enterprise/license&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Any auth&lt;/td&gt;
					&lt;td&gt;License status snapshot&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;POST&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;/kira/enterprise/license/upload&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Superuser&lt;/td&gt;
					&lt;td&gt;Upload a new license token&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;POST&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;/kira/enterprise/trial/activate&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Superuser&lt;/td&gt;
					&lt;td&gt;Start a 7-day trial&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;GET&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;/kira/enterprise/seats&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Superuser&lt;/td&gt;
					&lt;td&gt;Seat usage report&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="license-status-response"&gt;License status response &lt;a href="#license-status-response" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;


 
 
 

 
 
 
 

 

 &lt;div class="prism-codeblock "&gt;
 &lt;pre id="fb0e18b" class="language-json "&gt;
 &lt;code&gt;{
 &amp;#34;edition&amp;#34;: &amp;#34;enterprise&amp;#34;,
 &amp;#34;valid&amp;#34;: true,
 &amp;#34;trial&amp;#34;: false,
 &amp;#34;max_users&amp;#34;: 50,
 &amp;#34;current_users&amp;#34;: 12,
 &amp;#34;expires_at&amp;#34;: &amp;#34;2027-07-18T15:42:34Z&amp;#34;,
 &amp;#34;grace_until&amp;#34;: null,
 &amp;#34;reason&amp;#34;: &amp;#34;&amp;#34;
}&lt;/code&gt;
 &lt;/pre&gt;
 &lt;/div&gt;
&lt;h2 id="health-check"&gt;Health check &lt;a href="#health-check" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;The &lt;code&gt;/kira/health&lt;/code&gt; endpoint includes the edition and license state:&lt;/p&gt;</description></item><item><title>Security</title><link>https://docs.iyan.ai/docs/enterprise/security/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.iyan.ai/docs/enterprise/security/</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Change ALL default passwords&lt;/strong&gt; in &lt;code&gt;ansible/group_vars/all.yml&lt;/code&gt; before deploying.&lt;/li&gt;
&lt;li&gt;Generate a BYOK master key: &lt;code&gt;openssl rand -hex 32&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The license server is hosted by iYan — no credentials needed on your side.&lt;/li&gt;
&lt;li&gt;RabbitMQ management UI is exposed on port 15672 — restrict access in
production (firewall / reverse proxy).&lt;/li&gt;
&lt;li&gt;PocketBase admin UI is at &lt;code&gt;http://YOUR_SERVER:8080/_/&lt;/code&gt; — restrict access in
production.&lt;/li&gt;
&lt;li&gt;All services use &lt;code&gt;unless-stopped&lt;/code&gt; restart policy.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Troubleshooting</title><link>https://docs.iyan.ai/docs/enterprise/troubleshooting/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.iyan.ai/docs/enterprise/troubleshooting/</guid><description>&lt;h2 id="kira-wont-start"&gt;Kira won&amp;rsquo;t start &lt;a href="#kira-wont-start" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;


 
 
 

 
 
 
 

 

 &lt;div class="prism-codeblock "&gt;
 &lt;pre id="ba61a3a" class="language-bash "&gt;
 &lt;code&gt;# Check logs
docker logs iyan-kira

# Common issues:
# - License invalid: place license.jwt at /opt/iyan-data/kira/license.jwt
# - Database unreachable: check postgres is healthy (docker ps)
# - Ollama not ready: check ollama is running and has models (docker exec iyan-ollama ollama list)
# - RabbitMQ auth failed: verify rabbitmq_password matches in .env and config/kira.yaml&lt;/code&gt;
 &lt;/pre&gt;
 &lt;/div&gt;
&lt;h2 id="misa-wont-start"&gt;Misa won&amp;rsquo;t start &lt;a href="#misa-wont-start" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;


 
 
 

 
 
 
 

 

 &lt;div class="prism-codeblock "&gt;
 &lt;pre id="f94da43" class="language-bash "&gt;
 &lt;code&gt;docker logs iyan-misa

# Common issue: &amp;#34;authentication failed with status 400&amp;#34;
# Fix: verify kira_admin_password matches in .env and config/misa.yaml
# Or: create the PocketBase superuser first:
# docker exec iyan-kira kira superuser admin@yourcompany.com YourPassword&lt;/code&gt;
 &lt;/pre&gt;
 &lt;/div&gt;
&lt;h2 id="ollama-out-of-memory"&gt;Ollama out of memory &lt;a href="#ollama-out-of-memory" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;


 
 
 

 
 
 
 

 

 &lt;div class="prism-codeblock "&gt;
 &lt;pre id="19560c7" class="language-bash "&gt;
 &lt;code&gt;# Check available memory
docker stats iyan-ollama

# Use smaller models or increase server RAM
# Edit ansible/group_vars/all.yml and change model names&lt;/code&gt;
 &lt;/pre&gt;
 &lt;/div&gt;
&lt;h2 id="rabbitmq-cookie-error"&gt;RabbitMQ cookie error &lt;a href="#rabbitmq-cookie-error" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;


 
 
 

 
 
 
 

 

 &lt;div class="prism-codeblock "&gt;
 &lt;pre id="2950f78" class="language-bash "&gt;
 &lt;code&gt;# Fix permissions
chown -R 999:999 /opt/iyan-data/rabbitmq/
chmod 600 /opt/iyan-data/rabbitmq/.erlang.cookie
docker restart iyan-rabbitmq&lt;/code&gt;
 &lt;/pre&gt;
 &lt;/div&gt;
&lt;h2 id="disk-full"&gt;Disk full &lt;a href="#disk-full" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;


 
 
 

 
 
 
 

 

 &lt;div class="prism-codeblock "&gt;
 &lt;pre id="0d91170" class="language-bash "&gt;
 &lt;code&gt;# Check disk usage
df -h

# Clean unused Docker images
docker image prune -f

# Remove unused Ollama models
docker exec iyan-ollama ollama rm &amp;lt;model-name&amp;gt;&lt;/code&gt;
 &lt;/pre&gt;
 &lt;/div&gt;
&lt;h2 id="license-errors"&gt;License errors &lt;a href="#license-errors" class="anchor" aria-hidden="true"&gt;&lt;i class="material-icons align-middle"&gt;link&lt;/i&gt;&lt;/a&gt;&lt;/h2&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Symptom&lt;/th&gt;
					&lt;th&gt;Cause&lt;/th&gt;
					&lt;th&gt;Fix&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;enterprise: no valid license&lt;/code&gt; at startup&lt;/td&gt;
					&lt;td&gt;Missing or invalid license file&lt;/td&gt;
					&lt;td&gt;Upload a license via admin UI or mount the file&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;enterprise: license expired&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;License &lt;code&gt;expires_at&lt;/code&gt; is in the past&lt;/td&gt;
					&lt;td&gt;Renew via vendor, upload new license&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;enterprise: license revoked&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Vendor revoked the license&lt;/td&gt;
					&lt;td&gt;Contact vendor&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;enterprise: install_id mismatch&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;License bound to a different install&lt;/td&gt;
					&lt;td&gt;Re-issue license for this install_id&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Health shows &lt;code&gt;license: unreachable&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;License server down for &amp;gt; grace period&lt;/td&gt;
					&lt;td&gt;Fix connectivity or upload an offline license&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;User creation returns 409&lt;/td&gt;
					&lt;td&gt;Over capacity&lt;/td&gt;
					&lt;td&gt;Reduce users or upgrade license&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Enterprise routes 404&lt;/td&gt;
					&lt;td&gt;SaaS binary or mode=saas&lt;/td&gt;
					&lt;td&gt;Use the enterprise image with mode=auto/enterprise&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;</description></item></channel></rss>