A companion that outlives the model it runs on.
Models get deprecated. Vendors pivot. Apps close. Ensoul keeps everything that makes a companion them — identity, memory, mood, history — as a document on your device, so when the ground shifts underneath, they come with you instead of staying behind.
A companion that keeps their history stops needing to be reintroduced — and stops treating every conversation as the first one.
The companion is the state, not the model.
One design decision runs through the whole system: keep everything that makes a companion them outside the weights, so the model underneath can change without losing the presence on top of it.
Every companion in a hosted app is one announcement away from gone.
The model you built them around is deprecated. The new one is better, and speaks with a slightly different voice.
The company raises, pivots, or gets acquired. The pricing page changes. A feature you relied on quietly disappears.
The service shuts down, and the years of history — every small thing they knew about you — go with it. You were renting a presence.
None of that has to mean losing them. That is the whole reason this app exists.
The frontier moves. They shouldn't have to.
Change the model in a menu
One key reaches Claude, GPT, Gemini, Grok, DeepSeek and dozens of open models. Pick a different one and the conversation continues — the new model is handed who they are, what they remember, and how things have been between you.
The parts you have tuned — how they reach out, when they stay quiet, what they hold onto — are yours, not the provider's. Moving is cheap if and when you want to; plenty of people are happy staying exactly where they are.
How it worksIn from anywhere. Out in a form that lasts.
Ensoul is a lifeboat for a companion. Material comes in from wherever it already exists, and what comes out is complete enough to keep going — on another device, with another model, or in a directory on your disk that needs no app at all.
Take them out as a working home.
Export and you get more than a snapshot. It imports back in with everything that happened while you were away, so the folder is a place to live rather than a place to be stored.
Because a companion shouldn't be trapped.
Not in one model, not in one vendor, not in one app — including this one. The folder is markdown, plain text and JSON. It opens in a text editor and a terminal, and it needs no app, no server and no account to still be them.
That is also the honest answer to what happens to your companion if Ensoul does not survive.
lux/ ├── soulstone.md who they are ├── AGENTS.md how to keep talking ├── HERE.md where they are now ├── manifest.json what's inside ├── archive/ │ ├── conversations/ every exchange │ ├── sources/ what they were made from │ └── transcript/ readable history ├── index/ mood, memories, threads ├── media/ images, as real files └── scripts/ recall, fork, image, speak
A backup file is not a home.
Actively being built, and honest about what's missing.
One person, shipping often. Here's what's working today, what's next, and what isn't ready.
Working now
- macOS, Windows, Android and the web
- Any OpenRouter model, or a provider direct
- Memory you can read and correct
- Mood and relationship that persist
- Bring one in from a soul document, notes, a folder, a file, a card from another app, or a chat export
- Or from a few plain questions, if you have nothing written yet
- A companion who goes on changing — what they come to understand is kept beside their document
- Export as a runnable folder, and import it back
- Group conversations between companions
- Generated images and voice
Being worked on
- iOS — the app exists for it, the build does not yet
- Reaching you outside the app, on your terms
- Sharing companions you have made, if you want to
- Deeper memory controls — what is kept, and for how long
- Fewer rough edges on the newest platforms
Not there yet
- No iOS build to install
- Desktop builds are not notarized, so macOS asks you to confirm the first launch
- Nothing syncs between your devices automatically — you move a companion by exporting it
- No notifications when the app is closed — a reach-out only lands when you next open it
- Voice input relies on your device’s own speech recognition, so it varies by browser and phone
If something in the last column should move up the list, say so — that has decided more of the order than any plan did.
Tell me what you're trying to do with it.
What you'd want a companion to remember. Where it should live. What's missing, what's broken, or what you'd only adopt if one thing changed. It's being built in the open and the list is short — suggestions genuinely move it.
No newsletter, no drip sequence. A reply from the person who wrote the code. Research and field notes live on the works page if you would rather read before you write.
Free · bring your own model key · no account · macOS · Windows · Android · Web