Self-Hosting an AI Assistant on CasaOS: A Step-by-Step OpenMuse Install Guide (Pitfalls Included) A developer published a step-by-step guide for self-hosting OpenMuse, an AI chat assistant that can also manage a CasaOS home server, using SSH and Docker Compose. The guide deploys the casaos-manager-v3 branch across three containers (api, web, and a loopback-only browser-worker) and documents pitfalls including CasaOS's xterm.js web terminal mangling keystrokes, stale processes holding port 8787, and CasaOS's Custom Install button passing multi-flag commands as a single argument. How to deploy OpenMuse https://github.com/CopilotKit/openmuse — a self-hosted AI chat assistant that can also manage your CasaOS server — using SSH and Docker Compose. Every step below exists because we did it the wrong way first. A home server running CasaOS https://www.casaos.io/ this guide was tested on v0.4.9 gets a conversational AI assistant living on the same box — one that doesn't just chat, but can list your apps, read logs, and start/stop containers with your approval. Three containers do the work: | Container | What it is | Port | |---|---| | api | The Node API server + agent brain | 8787 | | web | The chat UI static site on nginx | 8081 | | browser-worker | Sandboxed browser for web tasks | 8790 loopback only | OpenMuse ships no official Dockerfiles and no CasaOS guide, so this post provides both. We'll deploy the casaos-manager-v3 https://github.com/Magrebi/openmuse branch, which adds a CasaOS control layer, a document library, and OCR on top of upstream OpenMuse. npx copilotkit@latest login , then npx copilotkit@latest project select The CasaOS dashboard has a built-in terminal, and it will betray you: its xterm.js input silently mangles keystrokes mid-session typed text arrives as - characters, commands never execute, and retrying doesn't fix it . Do all of the following over SSH from your own machine. If you must use the web terminal, paste whole command blocks — never type long commands by hand. ssh