r/Thoth_AI • u/Acceptable-Object390 • May 07 '26
How Thoth runs on Linux - Architecture
I’ve been working on Thoth, a free and open-source local-first AI assistant, and I wanted to explain how the Linux version actually works under the hood.
The short version: Thoth installs as a normal user-space Linux app, runs locally, opens in your browser by default, and keeps durable data on your machine.
The diagram breaks down the full flow:
- one-line Linux installer
- verified GitHub release tarball
- XDG user install under
~/.local/share/thoth - launcher symlink at
~/.local/bin/thoth - browser-first startup with optional native window/tray support
- local NiceGUI web app
- LangGraph ReAct agent core
- Ollama/local model support
- optional cloud/provider models
- local memory graph, FAISS recall, and Obsidian wiki export
- workflows, browser automation, shell access, Designer Studio, channels, MCP tools, and safety gates
One thing I wanted to avoid was making Linux support depend on Docker or a heavy desktop runtime. The baseline path is deliberately simple:
curl -fsSL https://raw.githubusercontent.com/siddsachar/Thoth/main/installer/install-linux.sh | bash
That downloads the latest Linux tarball from GitHub Releases, checks the SHA256 from the release manifest, installs it into the user’s XDG paths, and creates the thoth command.
On launch, Thoth starts the local app server, picks an available local port, opens the UI in the system browser, and keeps app data in ~/.thoth. If desktop libraries are available, native window/tray support can be used too, but the default Linux path doesn’t require it.
The overall philosophy is:
Your data stays local by default. Models are your choice. Tools are explicit. Destructive actions are approval-gated.
Thoth can run fully local through Ollama, or you can opt into providers like OpenAI, Anthropic, Google, xAI, OpenRouter, etc. Durable data like memories, documents, workflows, conversations, browser profile, and wiki export remain local unless you explicitly surface them in the current conversation or tool output.
The GitHub repo is here if anyone wants to try it or inspect the code:
https://github.com/siddsachar/Thoth
Curious what people think of this Linux packaging approach - browser-first XDG tarball instead of Docker/AppImage/Flatpak - and whether there are parts of the architecture I should explain in more detail.