Platforms
Platforms
Ensoul runs on web, desktop (macOS and Windows), and Android. All three are built from one shared core, so a companion, their memory and their conversations behave the same everywhere — but the platforms are not interchangeable, and this page is the honest version of what works where.
What works where
| Capability | Web | Desktop | Android |
|---|---|---|---|
| Chat, memory, moods, groups, images | Yes | Yes | Yes |
Bring in a file (.json / .zip) | Yes | Yes | Yes |
| Bring in from a folder | Chromium only | Untested | No |
Bring in a card from another app (.json) | Yes | Yes | Paste the card's text instead |
Back up companion (.json) | Yes | Yes | Yes |
Export the soul document (.md) | Yes | Yes | Yes |
| Build a companion from questions | Yes | Yes | Yes |
| Export as a folder for an agent | Yes | Yes | Yes |
| Full backup of everything | Yes | Yes | Yes |
| Images the app holds survive an export | Yes | Yes | Yes |
| Local models (Ollama) | Needs origin setup | Yes | No |
| Reading replies aloud | ElevenLabs only | ElevenLabs only | ElevenLabs only |
| Dictation | Chromium / Safari | Depends on engine | Device engine |
| Web access setting | Yes | Yes | Yes |
| Theme switch (system / light / dark) | Yes | Yes | Follows device |
| Keys stored in OS secure storage | No | Yes | Yes |
| Automatic updates | n/a | Manual on macOS, automatic on Windows | Manual reinstall |
| Installable as an app | Add to Home Screen | Native app | Native app |
Two rows surprise people. Local models work in the desktop app without setup but need Ollama to be told to accept requests from a web page's origin — see Local models, under Settings → Models, keys & APIs. And OpenAI voice can't be used on any platform yet: the app doesn't accept an OpenAI key, and separately OpenAI refuses cross-origin requests from a browser tab — so even once the key is enabled, that path will be desktop-only. ElevenLabs is the one that works today.
One pair of rows is worth reading together. Import by browsing to a folder is
Chromium-only, because it needs a browser API that only Chromium has — but that is about
pointing at a directory, not about the folder format. A folder export is one
.zip, and every row that mentions exporting or importing a file is a plain
Yes on all three platforms. If you are moving a companion, use the zip and
ignore the directory row entirely.
One thing applies to all three: there is no offline mode — Ensoul doesn't work without a connection. Replies come from a model provider, so offline there is nothing to talk to. Your companions, memories and history are all still there — they just can't answer until you're back.
Web
Runs at app.ensoul.so in any modern browser — nothing to install, and it can be installed to your home screen or dock as a PWA. Data is stored in the browser's own local storage, so clearing site data, or using a different browser or a private window, means starting fresh unless you've backed up first. See Transfer & Backup.
Folder import needs the File System Access API, which today means Chrome, Edge or another Chromium browser. On Safari and Firefox the option simply isn't offered.
Desktop — macOS & Windows
The desktop app is the same client in a native shell, which buys four things: your API keys go into the operating system's secure storage rather than browser storage, files are saved and opened through real system dialogs, local models are reachable without any origin setup, and it updates itself. It's also the only place the OpenAI paths — chat, reading aloud, and dictation's hosted fallback — could run, because a browser refuses those cross-origin requests; they're still waiting on the app accepting an OpenAI key.
Builds are currently distributed outside the app stores and are not notarized, so first launch needs one manual approval step. It's a one-time thing:
Right-click the app → Open → Open in the dialog, or System Settings → Privacy & Security → Open Anyway. Apple Silicon, macOS 11 or newer.
Windows SmartScreen shows a warning — click More info → Run anyway. Requires Windows 10 or later, 64-bit.
Because the builds aren't yet signed by a recognised developer, macOS and Windows will keep warning you until that's done. The warnings are expected, not a sign that something is wrong with your download.
Android
A full native app, and the only mobile build today. It isn't distributed through the Play Store, so installing means sideloading: open the APK, allow installs from that source when prompted, then install. You can turn that permission back off afterwards — it only affects future installs, not the app itself. The build takes Flutter's default minimum Android version rather than pinning one, so there's no official floor to quote yet — anything reasonably recent will run it.
The mobile app has no theme switch — it follows your device — and no local-model support. It
has no browse-to-a-folder button either (see the note above the table: the folder
.zip still imports fine, from either the bring-in screen or Settings → Data). Its
settings are laid out as a list rather than the web app's tabbed screen, which is documented on
Settings & Tools.
iOS
Not built yet. There is no iOS app to install and no TestFlight build — treat any iOS download link you see elsewhere as incorrect.