Odysseus - Mobile
Self-hosted AI, finally native
$4.99
Your own AI server, in a native app. Chats, deep research, memory, notes, calendar, email and voice — all running on the server you choose. No third-party cloud.
Odysseus is your self-hosted AI, as a real native app.
It's a fast, 100% native app (no WebView) for your own Odysseus / Open WebUI server. Bring your models, your data and your privacy — and talk to them from a beautiful iPhone and Mac app.
WHAT YOU GET
• Native chat with live streaming, full Markdown, tables and code — never a wrapped web page.
• Connect any model: OpenRouter, Ollama, local llama.cpp, and other compatible endpoints.
• A real AI workspace, not just a chatbot: notes, calendar, a built-in email client (IMAP/SMTP), personal documents (RAG) and image generation.
• 68 built-in agent tools — code, web search, documents, multi-agent, email and calendar.
• Compare two models side by side, and run Deep Research with a native report view.
MAKE IT YOURS
• 34 languages, including right-to-left (Arabic, Persian, Urdu, Pashto). Auto-detects your device language.
• 16 themes, custom fonts and animated backgrounds.
PRIVACY FIRST
• It's YOUR server. Odysseus only talks to the address you configure — nothing is sent to us.
• On-device voice (speech-to-text and text-to-speech).
• Optional Face ID / Touch ID app lock.
Note: Odysseus is a client for a self-hosted Open WebUI / Odysseus server. You need your own server to sign in.
more • Listen to any message: the speaker button now appears on the messages you send too. When the server's voice isn't available, the app reads with the system voice and says so under the message — before, the button spun and nothing played.
• Paste a key and you're done: the app recognizes keys from the major providers (Gemini, Anthropic, OpenRouter, Groq and others) and fills in the address. You can also pick the provider from a list.
• Models are grouped by kind: chat, image, video, music, voice, transcription, live audio and embeddings. The chat picker only offers chat models, and short lists appear in full — Gemma models are no longer tucked away in a submenu.
• An endpoint registered as Image that also serves chat models now says so, with a button to switch it to chat.
• Scrolling in Settings closes the keyboard.
1.13 14 hrs ago
• Home-screen icon: pick one of seven in Settings › Appearance. Before, there was only one.
• The conversation list has dividers again. Each date band says how many conversations it holds, every row shows the time and the model used, and the open conversation gets a highlight bar.
• The Spaces bar now sits at the bottom of the screen: Brain, Notes, Calendar, Gallery, and "More" for the rest. Before, you had to scroll the list to the end to switch spaces.
• The voice model catalogue opens folded: four sections by size instead of 65 rows in a row. Each section says how many models it holds and how many are already on the device, and filtering by language folds it back up.
• Weekdays and times in the list follow the language you picked in the app. Before, they followed the device's language.
• Six pieces of text still showed up in Portuguese for people using the app in another language. Now translated into all 42 languages.
1.12 21 Sept
• On-device voice: a new engine and models that detect the language on their own. The catalog now has one model tuned per language, in 22 languages, hosted by the app so the links stay alive.
• Loading a model is faster: the Core ML encoder is now found. It used to be silently ignored on compressed models, and loading fell back to the slow path.
• The app no longer quits by itself when you switch to a large model: one engine at a time, the previous model is released first, and memory is checked before loading.
• The recording is saved before it is transcribed. If the app closes midway, it offers to transcribe again or discard when you come back; nothing is lost.
• Numbers come out in words in the transcript: "one cent" instead of "1/100".
• Settings › Diagnostics shows what the app recorded: memory available, the last abnormal exit and the speech engine log. Everything stays on the device.
• Report a bug: opens an email in your mail app with the last hour of records. You see everything before sending; nothing leaves until you tap send.
• The loading screen says the first time can take minutes.
• Models that do not fit in the device's memory show as disabled, with the reason.
1.11 14 Sept
• Signing out now ends the session on the server. Before, the cookie stayed valid for seven days after you signed out.
• Accounts with a verification code (2FA) really sign in. Before, the app said you were in and dropped out on the first request.
• Notes: the Archived tab shows your archived notes. It used to be always empty, and archiving made the note vanish.
• Memory: Unpin works. The server used to ignore it and the memory stayed pinned.
• Calendar: the "meeting tomorrow 2pm" field creates the event; it used to parse the text and drop it. Deleting a repeating event asks whether to remove just this occurrence or the whole series; before, it deleted the series without asking.
• Email: archiving, deleting and account changes show the error when the server refuses. Before, the message left the list but stayed in the mailbox.
• Library: large PDFs are no longer cut off after 30 seconds of upload. A file with no extractable text or over the limit shows as rejected, with the reason, and the list refreshes by itself.
• Cookbook: packages with bracketed extras or a pinned version install; the server used to answer "Invalid pip package name". Serving a model shows the real error instead of "install started".
• MCP servers: when you add one, the sheet shows whether it connected and how many tools it found — or the reason it failed and the authorization link, when one is needed.
• Server errors show their real message in the conversation, instead of "Stream error", "Error 503" or raw JSON.
• Deep research: closing the panel cancels the job on the server; if it fails, the reason is shown.
• Providers by device code: an "unauthorized" from the provider no longer signs you out of the app. And if automatic sign-in fails at launch, the login screen says why instead of coming up blank.
• On iOS 17, the Memory audit button (the wand) is back.
1.10 12 Sept
• The agent's questions now show up. When the assistant needs a decision from you, the question appears as a card with its options: tap one, pick several, or type your own answer. Tool approval requests show the exact action and can be allowed or denied right there — before, the turn simply ended empty.
• Customize the interface: hide what you don't use in the sidebar, the message field and the conversation. On iPad and Mac the chat can become a reading column.
• Tidier sidebar: chats grouped by date in collapsible sections, and search inside message content.
• Fuller settings: API tokens with scopes (create and edit), per-user privileges, email automation, connecting model providers by device code, server logs.
• Reminders and tasks can notify you on the device, optional — on iPhone also while the app is in the background.
• Blur sensitive data in replies, and keyboard shortcuts on Mac.
1.9 11 Sept
Your own speech endpoint: use any service with a compatible audio API, or Fish Audio, for both recognition and the assistant’s voice — with a built-in test on each side, and a voice catalogue when the endpoint is Fish. Speech language is now its own setting, separate from the app’s, so you can dictate in another language without switching the whole app. The first sentence of a reply starts playing while it’s still being generated. And talking over the assistant no longer trips on its own echo.
1.8 29 Aug
Compare's model picker now shows every model your server offers, not just the curated shortlist — look for "More models" when your server has extras. Fully backward compatible: nothing changes on older servers.
1.7 27 July
This one is all fixes.
- The assistant's reasoning no longer disappears when you reopen a conversation. It is kept with the reply.
- Swipe to delete an email now works. It used to fail silently.
- Long emails open in full instead of stopping partway through.
- When the server drops older messages to fit the context window, the chat now says so — instead of the assistant just seeming to forget.
- When an agent run stops early — round limit, tool-call limit, or a repeated-tool loop — the chat now explains why, instead of ending on a blank reply.
- Connected model endpoints got a Refresh button. An endpoint added while its server was offline no longer shows an empty model list forever.
- Photos you attach in a chat are now filed under that conversation in the Gallery.
1.6 16 July
New
- 8 new display languages: Finnish, Swedish, Hebrew, Thai, Luxembourgish, Latvian, Uyghur and Tibetan — 43 in total, with automatic device-language detection.
- Hebrew and Uyghur are right-to-left: the whole interface mirrors.
- Chinese (Hong Kong) added.
Fixes
- Long replies and Deep Research streams no longer cut off after 30 seconds.
- Large photo uploads are more reliable on slow connections.
- Stability and cleanup under the hood.
1.5 15 July
New
- Chinese (Hong Kong) display language — 35 languages in total.
- Long replies and Deep Research streams no longer stop after 30 seconds.
- Large photo uploads are more reliable on slow connections.
Fixes
- Stability and cleanup under the hood.
1.4 10 July
New
- More display languages, with automatic device-language detection.
- Deep Research, rebuilt: live step graph, search modes, a visual report, and history (save and resume).
- Cookbook: browse and install packages and engines.
- Compare: ask two models side by side.
- Tasks: scheduled agents (run, pause, resume), and add models right from the phone.
Fixes
- Sign-in now persists — no more logging in every launch, and authenticated screens load correctly.
- Consistent theming across menus and sheets.
- Stability and polish.
1.3 8 July
Version 1.1
New
- Deep Research, rebuilt: live step-by-step graph, configurable search modes, a visual report that opens side by side, and history of past research (save and resume).
- Cookbook: browse and install packages and engines, with live status.
- Compare: ask the same question to two models side by side, streaming at once.
- Tasks: scheduled agents (cron/event) — view status, run now, pause, and resume.
- Add models from your phone: connect endpoints and enable, disable, or remove models without a computer.
- Languages: Portuguese, English, Japanese, Hindi, and Bengali, with automatic device-language detection.
Improvements and fixes
- Fixed a sign-in issue where the session was not kept — the app no longer asks you to log in on every launch, and authenticated screens (messages, logs, and more) load correctly instead of failing with "session expired."
- Fixed theming across menus and sheets so every theme is applied consistently (no more dark menus on light themes or mismatched selectors).
- Various stability and polish fixes.
1.1 3 July
• Listen to any message: the speaker button now appears on the messages you send too. When the server's voice isn't available, the app reads with the system voice and says so under the message — before, the button spun and nothing played.
• Paste a key and you're done: the app recognizes keys from the major providers (Gemini, Anthropic, OpenRouter, Groq and others) and fills in the address. You can also pick the provider from a list.
• Models are grouped by kind: chat, image, video, music, voice, transcription, live audio and embeddings. The chat picker only offers chat models, and short lists appear in full — Gemma models are no longer tucked away in a submenu.
• An endpoint registered as Image that also serves chat models now says so, with a button to switch it to chat.
• Scrolling in Settings closes the keyboard.
more Version 1.13 14 hrs ago
Data Not Collected The developer does not collect any data from this app.