-
Notifications
You must be signed in to change notification settings - Fork 4
AI chat
The AI tool runs one-shot actions against the text in a field. Chat is the other half: a normal back-and-forth conversation with the same model, kept on your device, in the settings app rather than on the keyboard.
The keyboard itself never chats. It has no room for a transcript and no reason to hold one, so the whole feature lives in the app, where a conversation gets a proper screen.
Tools / AI writing tools / Chat with the model
It sits in a group headed Chat on the AI tool's settings screen, under the reasoning and panel options. There's a faster way in too: long-press the app icon on your launcher and pick AI chat, which lands you on the conversation list without going through Home.
The list is your saved conversations, most recently updated first. Each row is the chat's title and how long ago you touched it, with a delete button on the right that asks first and names the chat it's about to remove. New chat is both a button at the top of the list and a plus in the top bar.
Nothing saved yet? You skip the empty list entirely and land in a new chat, because an empty list with one button on it isn't worth a screen. A chat is only written down on your first send, so opening one and backing straight out leaves no row behind.
Titles aren't something you type. The first line of your first message becomes the title, cut to 48 characters on a word boundary.
A scrolling row of chips above the transcript lists everything you can talk to right now: models you've downloaded on-device first, then every provider you've configured. "Configured" means the thing it needs is filled in. That's an API key for the cloud services, an address for Ollama or LM Studio, and both an address and a model name for Other service. With fewer than two to choose from, the row doesn't appear at all.
Two things worth knowing about that row:
- It doesn't touch the keyboard's own setting. Chatting to Gemini while the AI tool is set to Claude leaves the tool on Claude. The chip is the chat's choice and nothing else reads it.
- It's frozen while an answer is coming in. The chips grey out until the answer lands or you stop it, since swapping models halfway through a reply has no sensible meaning.
Your pick is remembered for next time, and each conversation also remembers the last model that answered in it.
Type in the box and hit send. While the answer streams, the send button becomes Stop.
- Stop keeps what arrived. The partial answer stays in the transcript, labelled "Stopped", rather than vanishing as if you'd never asked. An on-device generation is a native call that can't truly be interrupted. It finishes quietly in the background instead, and the model's own memory of the conversation is kept in step with what you can see.
- A failed turn shows the error in its own bubble with a Retry button. Only the newest failed message gets one, because retrying something from the middle of a transcript would answer out of order. Retry re-sends the message the failure was answering, so nothing is duplicated.
- Leaving doesn't cancel anything. Navigate away mid-answer and the generation carries on. Come back and it's either still streaming or already in the transcript.
A Play Store build adds a Report button along the bottom edge of every finished answer. It follows the same route the panel offers under Reporting a result: a draft opens in your own mail app holding the provider, the model, the message the answer replied to, and the answer itself, with a blank line at the top for what went wrong. Nothing is uploaded when you tap it, so a report only exists once you send the mail. Your own messages carry no button, and neither does a failed turn, because neither one is a generated answer. With no mail app installed, a message says so instead. GitHub and F-Droid builds show no Report button here at all, since Play's AI-generated-content policy is the only reason for it. The keyboard panel's own Report button has no such restriction.
Reasoning models follow the same Show model reasoning setting the keyboard panel uses. With it on, the raw stream renders with the thinking part dimmed. With it off, you get a "Reasoning…" line until real answer text starts arriving.
An on-device model gets a live session per conversation, seeded with the saved transcript, so it keeps the context of what you've already said. Switching conversation, model, compute backend or context size closes that session and opens a fresh one, seeded the same way.
With no downloaded model and no configured provider, the chat screen says Nothing to chat with yet and offers one button back to the AI tool settings. That's the same setup you'd do for the keyboard panel: see Choosing where it runs.
On-device models are , so on a Lite build chat only works once you've configured a cloud or self-hosted provider. See Full vs Lite if you're not sure which one you have.
Conversations live in one file in the app's private storage, in the same folder as the AI history. It shows up as AI chats on the storage screen under About / Storage, so you can at least see what it costs you. Your data covers what else is in there.
Two rows decide whether that file exists at all. Both sit on the History screen, under Tools / AI writing tools / History, in a group headed Chats:
- Keep your conversations is on by default. Turn it off and chats live only until you close the app, and whatever is already saved is deleted with it. That's the same contract the AI history switch has.
- Delete all chats clears every saved conversation after a confirmation, without turning the feature off.
Three caps keep the file from growing without limit:
| What | Cap | What happens past it |
|---|---|---|
| Conversations | 50 | The one you touched longest ago drops off |
| Messages per conversation | 200 | The oldest messages drop off the front |
| Characters per message | 20,000 | The rest is cut |
Deleting a conversation from the list removes it for good. There's no undo, which is why the dialog names the chat first.
Exactly what the AI tool sends, and only when you hit send:
- An on-device model sends nothing. The whole conversation stays on the phone.
- Any other provider gets the conversation so far, because that's what makes a reply follow on from the last one. A fixed instruction rides along with it: answer in plain text, and keep it as short as the question allows. Your API keys stay on the device.
- The transcript itself goes nowhere. It's deliberately left out of settings backups, the same as the AI history and for the same reason: your own conversations shouldn't ride along in a file you export and mail to yourself. See Your data.
- Max response length applies here too. For a cloud or self-hosted model, the AI tool's ceiling bounds a chat reply the same way it bounds a panel result, reasoning-model multiplier included. See About "Provider maximum". On-device, the Context size row is what bounds it, exactly as on the panel.
- The chat prompt isn't one of your actions. The panel's action prompts are for transforming text in a field, which is a different job. Chat has its own fixed prompt and nothing on this screen edits it.
- Nothing here is written to the AI history. That log records panel runs. A conversation is only in the chat file.
-
The launcher shortcut is one of four. Long-pressing the app icon offers Tools, Languages, AI chat and Themes, and nothing else. The
wmkeyboard://settings/scheme behind those four reaches three more screens (Typing, Appearance and Search) that no shortcut points at. See Deep links & launcher shortcuts. - Deleting a chat mid-answer is handled. If a generation finishes for a conversation you've already deleted, the answer is dropped rather than resurrecting the row.
- Reasoning is stripped from what's saved. Only the answer lands in the transcript, the same way the keyboard panel only commits the answer.
Related: AI tools covers the providers, the on-device model catalog, the panel's actions, and the history.
- Home
- Getting started
- Typing
- Languages
- Suggestions & correction
- Emoji & expression
-
Tools
- Clipboard manager
- Voice typing
- Offline voice (Whisper)
- Handwriting
- Scanner (OCR, QR, documents)
- Camera tool
- Translate
- Search, Wikipedia & dictionary
- Media controls
- AI chat
- AI tools
- Utility tools
- Snippets & text expansion
- Text editing & cursor tools
- Instruments
- Trackpad
- Calendar
- App launcher
- Learn from text
- Vocabulary
- Resize the keyboard
- The toolbar
- Themes & appearance
- Addons
- Plugins
- Privacy & security
- Accessibility
-
Reference
- Gesture cheat sheet
- Typing
- Hardware shortcuts
- Deep links & launcher shortcuts
- Key press
- File formats
- Dictionaries & words
- Importing from other keyboards
- Languages
- Importing from Espanso
- Appearance
- Keyboard themes
- Troubleshooting
- Glossary
- Keyboard font
- Easter eggs
- Icons
- Layout & size
- Key layouts
- Rows & bars
- Keyboard modes
- Emoji
- Phone number formats
- Tools
- Addons & plugins
- Reference - Accessibility
- Fingerprint lock
- Reference - Data saver
- Reference - Permissions
- Privacy
- Reference - Selection actions
- Servers
- Reference - Backup & restore
- About & diagnostics
- Statistics
- Settings A–Z
- Development