Features
Image Generation
Ask a companion to generate an image directly in the conversation. Image generation runs through OpenRouter, so it uses the same key as chat — but a different model, a different endpoint, and a different price.
How to ask
Just ask naturally — "draw me...", "show me what that looks like", "generate an image of...". Ensoul recognises the request and generates inline, without a special command.
There's also a Generate button next to the message box, which turns whatever you've typed into an image prompt explicitly. The button is the fallback for when automatic detection doesn't fire — say a phrasing that doesn't read as a request for a picture.
Automatic generation is on by default. If you'd rather images only ever appeared when you press Generate, turn off "Generate automatically when a message seems to ask for one" in Settings → Models, keys & APIs → Images.
Reading photos is a different model
Worth separating, because the names are close: the model that reads a photo you attach is the vision model, and the model that creates a picture is the image model. They're configured separately and priced differently.
When you attach an image, that turn is answered by the vision model rather than your chat model — so a cheap text model doesn't stop you showing them a photo. Both are set in Settings → Models, keys & APIs → Images.
Why it looks like the same companion every time
Where a companion has a visual canon, every generation includes it — their specific written physical description — so their look holds consistent from one image to the next instead of drifting into a different-looking person each time. In a group chat, every participant's canon is included, so a scene actually reflects everyone in it.
Two house rules sit underneath every companion's own canon and can't be overridden by it: every companion reads as a clearly adult presence, and the rendering is consistently painterly and illustrated rather than photorealistic. See Your Companion for how a canon is written and how to regenerate one.
Aspect ratio
The aspect ratio is free text in
Settings → Models, keys & APIs → Images, and defaults to
1:1. 16:9 for landscape and 9:16 for portrait are the
usual alternatives; whatever you enter is passed to the model as-is.
The gallery
Every image a companion generates is kept in their gallery — the image icon in the chat header. Open it to browse everything they've made, newest first, and tap any image for a fullscreen view you can pinch or zoom to inspect. (Pinch-to-zoom is the mobile app; the web viewer shows the image full-size with previous/next and a download control.) Group conversations have their own gallery, opened the same way from the group's header.
How long images last
Images generated through a hosted model are served from that provider's temporary storage, and those links expire. Once a link is dead the picture can't be recovered from Ensoul — the entry stays in the conversation, but the image is gone. If an image matters to you, save it.
The Android app also saves each generated image into a folder on the device and records the file path, so the picture outlives the provider's link. The web and desktop apps keep whatever the provider returned in the conversation instead — the image itself when the provider inlines it, and only a link when it doesn't, which is exactly why an older image can stop loading.
An image Ensoul actually holds travels with a companion. Where the picture itself is in the archive — inlined by the provider, or saved to the device as Android does — every export that carries history copies it in as a real file rather than pointing at wherever it happened to sit on the machine that made it, and that is true in both directions between a phone and a desktop. An image the app only ever had as a provider link is the exception, and the two formats differ. A backup keeps the link itself, so it keeps working for as long as the link does. A folder export can only carry files, so it names that image in its notes as a reference it could not read rather than dropping it silently. Either way, an export with a lot of images takes a moment longer to write and is correspondingly bigger. See Transfer & Backup.
What it costs
Image generation is billed per image by the provider, and it is meaningfully more expensive than a text reply — often by orders of magnitude. It uses the same OpenRouter key and the same credit balance as chat, so a run of images is the fastest way to empty a small balance.
Ensoul has no cost panel and can't show you a running total; usage is visible in your OpenRouter account. If you want to control spend, pick a cheaper image model deliberately rather than leaving the default in place, and leave automatic generation off.