Source: https://github.com/nicosouv/harbour-sailcat
New versions of SailCat (2.x and up) are built by a human developer with the help of AI (Claude, Mistral Vibe)
If you don't want to use it, feel free not to use it :)
A native Sailfish OS chat client for Mistral AI and every other provider that speaks the same API, with a (beautiful, well, I hope) Silica interface.
Features:
- Real-time streaming responses with Server-Sent Events (SSE)
- Model list fetched live from your provider, with a quick model-switcher next to the input field
- Image support (vision): attach a photo for any vision-capable model
- System prompts and personas: presets (Concise, Translator, Code assistant) or your own, plus a prompt library
- Generation settings: temperature, response length, conversation context limit
- Message actions: regenerate, edit and resend, pin (with a pinned-messages page), copy code blocks separately
- Local conversation history with search, details, categories and per-conversation stats
- Statistics with charts: activity, token usage, cost estimate, question categories, fun badges (Night Owl, Model Hopper, Conversation Ghost...)
- Export conversations as Markdown to Documents, or copy them as text
- Four chat styles, markdown rendering with theme-aware code blocks
- Active cover showing the latest answer and mini stats
- Multilingual interface: English, French, German, Spanish, Finnish, Italian, Norwegian Bokmal
- An API key from the provider you pick (free tiers at console.mistral.ai, console.scaleway.com, console.groq.com). OVHcloud AI Endpoints works without one
- Internet connection, or a local endpoint on your network
- No sync with any provider's web interface. Conversations are stored locally on your device
- The app ships with no built-in API key
- All conversations are stored locally on your device, one file each
- Your API key is never written in clear text and lives in an owner-only settings file, isolated by Sailjail sandboxing
- No telemetry or analytics, no data shared with third parties
- Sailjail permissions: Internet, Pictures (image attachments), Documents (exports)
Support:
Report issues on GitHub: https://github.com/nicosouv/harbour-sailcat/issues
Developed with ❤️ for Sailfish OS
| Attachment | Size | Date |
|---|---|---|
| 182.66 KB | 13/11/2025 - 13:55 | |
| 176.19 KB | 13/11/2025 - 13:55 | |
| 189.15 KB | 13/11/2025 - 13:55 | |
| 235.94 KB | 04/07/2026 - 12:40 | |
| 215.35 KB | 04/07/2026 - 12:40 | |
| 222.84 KB | 04/07/2026 - 12:40 | |
| 278.77 KB | 20/08/2026 - 00:38 | |
| 268.7 KB | 20/08/2026 - 00:38 | |
| 293.02 KB | 20/08/2026 - 00:38 | |
| 309.29 KB | 13/09/2026 - 18:57 | |
| 327.08 KB | 13/09/2026 - 18:57 | |
| 297.53 KB | 13/09/2026 - 18:57 |
New providers
- Not just Mistral any more: Mistral AI, Scaleway, OVHcloud, Groq, or any OpenAI-compatible endpoint (llama.cpp, Ollama). Three have a free tier, OVHcloud even answers without a key.
- Each provider keeps its own key, model and model list; a key is never sent elsewhere. A conversation stays with the provider it started with.
- Answers record who wrote them, and Statistics reports your most used provider and model.
Fixed
- "Too Many Requests" no longer loses your answer: requests are spaced out and retried automatically, with a countdown instead of an error.
- Naming a conversation no longer costs an API request - it is now done on the phone (Settings > Generation > Automatic titles).
Security
- API key is now scrambled at rest instead of stored in clear text; existing keys migrate automatically
- Settings, conversations, images and exports are owner-only (0600)
- TLS 1.2 minimum, peer verification, redirects refused
- Markdown links restricted to http/https/mailto, so a crafted reply cannot open a javascript: URL
- API key field masked by default
New
- Context limit: send only the last N messages, with a notice of what was left out
- Prompt library
- Per-conversation model, system prompt, title and category
- "Suggest a title": the model reads the whole conversation, not just the first message
- 28 conversation categories instead of 7, plus a local classifier and an "Auto-label" action for existing ones
- 4 chat styles (flat, bubbles, compact, cards) and an option to hide timestamps
- Estimated cost per model in the statistics
- Retry button on the error banner
- Unread indicator in the history, pulsing while an answer is still arriving
- Norwegian bokmål translation (thanks @fsilye!!)
- Swipe both ways from a conversation: back for the history, forward for its settings
- Pulley menus split by purpose (4 top, 3 bottom) instead of the same 7 entries twice
- Live answer preview on the cover
Performance
- One file per conversation instead of a single blob rewritten on every change
- Streaming moved to C++: answers keep arriving even when you leave the chat page
- Streaming updates are throttled, which removes the stutter on long answers
- Attached images stay in context on later turns
Fixed
- A message sent just before the app closed is no longer lost
- Token counter no longer resets when reopening a conversation
Removed
- In-app update check (already unreachable, and the store handles updates)
- Image support (vision): attach a photo and let Pixtral or any vision-capable model analyze it
- Dynamic model list: fetched live from the Mistral API, with a quick model-switcher button next to the input field
- System prompt & personas: presets (Concise, Translator, Code assistant) or your own custom instruction
- Generation settings: temperature slider and response length limit
- Message actions: regenerate the last answer, edit and resend a message, pin messages (with a pinned-messages page), copy code blocks separately
- Export conversations as Markdown to Documents, or copy them as text
- Real token tracking: per conversation, per day and per month, straight from the API usage data
- Statistics with charts: activity, token usage, question categories (auto-detected), "who writes more", fun badges (Night Owl, Model Hopper, Conversation Ghost...) and the most frequent words in AI replies
- Improved markdown rendering: protected code blocks with theme-aware colors, strikethrough, safer italics
- UI/UX overhaul: swipe from the chat to reach your conversation history, bottom pulley menu, message timestamps, typing-dots animation, live cover showing the latest answer and mini stats
- Automatic conversation titles and categories generated after the first exchange
- Fully translated: English, French, German, Spanish, Finnish, Italian
- Real-time streaming responses with Server-Sent Events (SSE)
- All current Mistral chat models, refreshed automatically from the API
- Multilingual interface: English, French, German, Spanish, Finnish, Italian
- Local conversation history with search, details and per-conversation stats
- Native Sailfish OS interface with Silica components
- Long-press a message for copy, pin, edit or regenerate
- Active cover showing the latest answer and mini stats
Comments
carmenfdezb
Sun, 2026/09/13 - 23:03
Permalink
Thank you! It seems that Mistral AI doesn't work for me, I will try with other providers
norayr
Tue, 2026/09/08 - 20:58
Permalink
yes it does api error: too many requests last days to me as well.
carmenfdezb
Mon, 2026/09/07 - 13:12
Permalink
Unfortunately it doesn't work for me since today, I get api error: too many requests. I've tried a new api key without success
nicosouv
Sun, 2026/09/13 - 18:58
Permalink
Ok so, I tried a fix that seems to work for me! I also added more llm provider just in case.
Let me know if it works for you! Thanks!
nicosouv
Sun, 2026/09/13 - 00:31
Permalink
Sorry about that. I'll look into that asap (and will probably add other providers with the next update)
norayr
Mon, 2026/07/06 - 02:30
Permalink
this app saves me from the browser, and apparently mistral is possible to use via api key without paying, with limits of course. i think all the rest, chatgpt certainly, only provides paid tokens. so without paying one needs to use web ui which is, again, painful.
also i am amazed by the speed.
norayr
Mon, 2026/07/06 - 02:28
Permalink
btw mistral did not ask me for a phone number.
on duck, i think they don't provide api, one only has to use the models via browser. which is a pain and loads lotn of js and eats all availabre memory.
norayr
Mon, 2026/07/06 - 02:26
Permalink
this is an amazisg app! thank you so much!
unmaintained
Sat, 2025/12/20 - 13:02
Permalink
This app is really pretty quick and very well designed.
Edit: Ah just realized, it's the same dev as SFOS Meetings, so no wonder.
trial
Mon, 2025/11/17 - 18:35
Permalink
Guys, are fine?! Haven't you noticed the "Pls." meaning "please" in plain english?!?
Don't U have nothing else to do but to get offended?! Since when is "please" an act of rudeness and disrespect?
10x in advance.
nicosouv
Tue, 2025/11/18 - 02:16
Permalink
Lol, no worries, I didn’t get offended.
I can’t change or rework a system I don’t own, so there isn’t much I can modify on the app side. Its purpose is simply to use Mistral AI, and that part is okay.
That said, I can try to add an option to use duck.ai as Fingus suggested. I initially focused only on Mistral AI (hence the app name for “Le Chat” by Mistral), but maybe I can change this when I find the time.
Anyway, thanks for the conversation, and have a great day! :)
explit
Mon, 2025/11/17 - 04:28
Permalink
Absolute agree with u @nicosouv. Some ppl. act so, as they bought something what not work. As a FOSS Dev. i would be totaly pissed off reading such comments...
trial
Sun, 2025/11/16 - 15:17
Permalink
No way I'm using a service requiring my phone. Pls. Rework.
nicosouv
Sun, 2025/11/16 - 17:35
Permalink
I double-checked and the app itself only requires the standard “Internet” permission, nothing more.
If your concern is about Mistral AI asking for a phone number to obtain an API key: that part is entirely on their side. My app is just a client for that service, and I clearly mention which API it uses.
If you don’t want to use a service that requires a phone number, that’s totally fine, but in that case this app won’t be a good fit for you.
Regarding the “Pls. Rework” wording: please keep in mind this is a free, open-source project made on personal time. I’m always open to constructive feedback, but I’d appreciate a more respectful tone.
Thanks.
nicosouv
Sun, 2025/11/16 - 16:16
Permalink
I might have messed up with the permission, my bad!
fingus
Sat, 2025/11/15 - 15:54
Permalink
Why not using free www.duck.ai ?
There you dont need an API-Key.
nicosouv
Sun, 2025/11/16 - 04:00
Permalink
Hello! Because I didn't know it was a thing! I'll take a look at it! Thanks
eson
Fri, 2025/11/14 - 11:13
Permalink
To get a free API key, they also require your phone number.
Just saying...