Claude Desktop, but for your own self-hosted Open WebUI server
Screenshots • Features • Installation • Getting Started • Development • Known Limitations
A native, cross-platform desktop chat client that talks directly to your own Open WebUI server's REST API - not an embedded webview of Open WebUI's own frontend. It combines a fully custom React chat UI with oikb, Open WebUI's incremental Knowledge Base sync tool, so folders, GitHub repos, Confluence spaces, S3 buckets, Zotero libraries, and 40+ other source types can be kept in sync with your Knowledge Bases from right inside the app.
![]() |
![]() |
| Sign in | Home |
- Streaming responses straight from your Open WebUI server (no cloud middleman)
- Drag-and-drop or picker-based file attachments (documents + images), uploaded and referenced in the conversation
- Voice input: push-to-talk or click-to-toggle, transcribed via your own server - no third-party cloud speech service involved
- Per-message actions: copy, edit-and-resend, regenerate, read-aloud, and thumbs up/down feedback
- Pin, mark unread, archive, and group conversations; open any chat in its own window
- Export a conversation as Markdown, or your whole local history as JSON
- Push a local conversation into your Open WebUI account as a real chat, or copy a shareable link to it
- Light/dark/system theme, adjustable chat text size, collapsible sidebar
📚 Knowledge Base Sync (powered by oikb)
- Add local folders (and 40+ other source types oikb supports) as sync sources for your Open WebUI Knowledge Bases
- Per-source sync interval, one-click manual sync, live status and history
- The app manages the oikb daemon for you - no separate terminal window to keep open
- Windows 10/11, macOS 11+, or a modern Linux desktop
- A running Open WebUI server you have a URL and account for
- For Knowledge Base Sync specifically: Python 3.11+, uv, and a local checkout of
oikb- see Known Limitations
Prebuilt installers: grab the latest .msi/.exe (Windows), .dmg (macOS), or .deb/.rpm/.AppImage (Linux) from the Releases page.
Installers aren't code-signed (see Known Limitations), so your OS will warn you on first launch - that's expected, not a sign of a bad download. It's completely fine to run anyway:
- Windows: SmartScreen will say "Windows protected your PC" - click More info, then Run anyway.
- macOS: Gatekeeper will refuse to open it normally - right-click (or Control-click) the app and choose Open, then confirm in the dialog that appears. (Alternatively, run
xattr -cr /Applications/Open DesktopUI.appin Terminal.) - Linux: no equivalent warning - nothing extra to do.
You only need to do this once per install.
From source: see Development below.
- Launch the app and sign in with your Open WebUI server's URL and your account (or paste a static API key for SSO-only servers, in Settings → Account).
- Pick a model and start chatting from Home, or create a new chat from the sidebar.
- To sync Knowledge Bases: open Settings → Knowledge, point it at an
oikbcheckout, and add a source folder.
git clone https://github.com/markusbegerow/open-desktopui.git
cd open-desktopui/apps/desktop
npm installnpm run dev # Vite dev server only (frontend, no Tauri window)
npm run tauri dev # full app: Rust build + Vite + native window, with HMR for the frontend
npm run build # tsc typecheck + vite build (frontend production bundle)
npm run tauri build # full native installer for your current OS
npx tsc --noEmit # typecheck onlyRust side, from apps/desktop/src-tauri/:
cargo check
cargo buildThere's no configured lint or test runner yet - tsc --noEmit and cargo check are the correctness gates in practice. See docs/RELEASING.md for how the cross-platform release pipeline works.
oikb-desktop/
├── apps/desktop/ # the Tauri app - React/TS frontend (src/) + Rust backend (src-tauri/)
├── oikb-main/ # oikb Python project, vendored unmodified as an external dependency
├── packaging/ # PyInstaller packaging for bundling oikb as a sidecar (not yet wired up)
└── docs/ # additional docs (release pipeline, etc.)
- Installers aren't code-signed. There's no plan to buy a Windows/Apple code-signing certificate right now - see Installation above for the (one-time, per-install) steps to run the app anyway.
- The oikb sidecar isn't bundled into the packaged app yet. Knowledge Base Sync needs a separate
uvinstall and anoikbcheckout on your machine (pointed at from Settings → Knowledge) - it isn't a zero-setup feature out of the box today. - Local data isn't encrypted at rest. Chat history and settings are stored as a plain SQLite database and JSON file on disk (path shown in Settings → Account → Data).
- Two Open WebUI integrations are best-effort, not verified against every server: pushing a conversation into your Open WebUI account ("Open in Open WebUI" / "Share Link") and message feedback (thumbs up/down) both call endpoints whose exact request/response shape was inferred from Open WebUI's general API conventions, not confirmed live against every version. If either doesn't work against your server, please open an issue with what you see - everything else in the app (chat, models, knowledge bases, sign-in, file upload, transcription) has been verified against a live server.
Contributions are welcome!
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
oikb-main/ is vendored unmodified - please don't send PRs that edit its Python source directly; changes there belong upstream at open-webui/oikb.
This project is licensed under the GPL-3.0 - see LICENSE for the full text. The vendored oikb-main/ subtree keeps its own MIT license (see oikb-main/LICENSE) - it's an unmodified external dependency, not covered by this project's license.
- The Open WebUI team, for Open WebUI itself and for
oikb - The Tauri team, for making a native desktop shell this pleasant to build
If you encounter any issues or have questions:
- 🐛 Report bugs
- 💡 Request features
- ⭐ Star the repo if you find it useful!
If you like this project, support further development with a repost or coffee:

