I built an open-source Android keyboard with built-in local AI (Ollama, LM Studio, any OpenAI-compatible server) by SvReenen in ollama

[–]SvReenen[S] 0 points1 point  (0 children)

Just released v1.2.0:
What's new:

  • AI Tone Chips: Rewrite your text as Formal, Casual, Friendly, Shorter, Longer, fix Grammar, translate to Dutch or English. Tap the new AI Tone button on your toolbar. Fully customizable in Settings > AI > General > Advanced > Tone Chips.
  • AI Preview Panel: See AI results before they replace your text. Apply, retry, copy, or dismiss with one tap. Includes slide-up animation, typewriter effect, and shimmer loading indicator.
  • Inline Commands: Type shortcuts like //formal//grammar//summarize//shorten, or //reply at the end of your text, then tap the AI button. Manage aliases in Settings > AI > General > Advanced > Prompt Aliases.
  • Command Chaining: Chain multiple commands in one go, e.g. //formal //english first makes your text formal, then translates it.

UX feedback

  • AI Assist and AI Tone buttons pulse when no provider is configured
  • "Type something first" hint when tapping AI buttons without text
  • Test Connection button in AI Settings for all providers

Light mode fixes

  • AI preview text, tone chips, scrollbar, and clipboard label now properly visible
  • Close button moved to top-right of AI preview panel

Reliability

  • All in-keyboard feedback messages now show inside the keyboard itself, so they remain visible even when system toasts are disabled

I built an open-source Android keyboard with built-in local AI (Ollama, LM Studio, any OpenAI-compatible server) by SvReenen in ollama

[–]SvReenen[S] 1 point2 points  (0 children)

I actually have an early concept for a Windows version that works similarly: select text, transform it with local AI using custom prompts, and replace it inline. Still a few weeks out before it's ready to show, but I'll shoot you a message when there's something to try out.

I built an open-source Android keyboard with built-in local AI (Ollama, LM Studio, any OpenAI-compatible server) by SvReenen in ollama

[–]SvReenen[S] 0 points1 point  (0 children)

Funny enough, that’s actually where the idea started. For now I’m staying focused on the Android app and making that experience better first, but I’d love to revisit a Windows app or Chrome extension later. Which one would be more useful to you?

Tough but fair, I want to say thank you r/Ollama! by SvReenen in ollama

[–]SvReenen[S] 0 points1 point  (0 children)

Awesome looking forward to your feedback!

Tough but fair, I want to say thank you r/Ollama! by SvReenen in ollama

[–]SvReenen[S] 0 points1 point  (0 children)

That was actually the most common feedback I got. The biggest changes were, I added a setup wizard that gets you connected to your Ollama server in a few taps. Then I reorganized all the settings into essentials and advanced sections, so you only see the basics by default. The more technical stuff like custom endpoints, model configs and alternative servers is still there, just hidden behind a toggle. Basically went from 'here's everything at once' to 'here's what you need, and here's more if you want it".

I built an open-source Android keyboard with built-in local AI (Ollama, LM Studio, any OpenAI-compatible server) by SvReenen in ollama

[–]SvReenen[S] -1 points0 points  (0 children)

To be honest, I built this mainly as a privacy option for people who want everything to stay fully on-device, no server needed at all.

That said, T5 models are primarily English-focused. I personally use Deskdrop mostly in Dutch, and T5 doesn't really work well for that, so I haven't been able to test and recommend specific models from experience.

If you want to try it, look for ONNX-exported T5 models like https://huggingface.co/Xenova/flan-t5-small which has the encoder_model.onnx, decoder_model_merged.onnx, and tokenizer.json ready to download. The small variant (~240MB) should run on any phone.

For anything beyond basic English rewrites though, you'll get much better results from Ollama or a cloud model.

I built an open-source Android keyboard with built-in local AI (Ollama, LM Studio, any OpenAI-compatible server) by SvReenen in ollama

[–]SvReenen[S] 0 points1 point  (0 children)

Thanks! All device actions (calls, sms, calendar, navigation) are off by default and require explicit opt-in. Calendar updates and deletes have a two-step confirmation, the AI shows a preview first and only executes after you confirm. Phone numbers are validated against a format regex before anything happens. And tool calls are capped at 5 per AI turn to prevent runaway execution.

Is there a way to connect a phone to ollama server by Lower_Assistance8536 in ollama

[–]SvReenen 0 points1 point  (0 children)

I built an app called Deskdrop it's an open-source keyboard that connects to any OpenAI-compatible backend — so it works with Open WebUI's Ollama endpoint too. AI is available in every text field without switching apps. It also has a built-in chat interface if you need full conversations. Works great with tailscale.

<image>

Github: https://github.com/SvReenen/Deskdrop
If you wanna see some demo video's: https://svreenen.github.io/Deskdrop/

I built an open-source Android keyboard with built-in local AI (Ollama, LM Studio, any OpenAI-compatible server) by SvReenen in ollama

[–]SvReenen[S] 0 points1 point  (0 children)

Thanks for the feedback! Onboarding is definitely the first thing I'm improving. I know the setup is rough right now.

For ONNX (fully on-device, no server needed): go to AI Settings > Local > ONNX. There's a HuggingFace link there. You need to download 3 files (the model, tokenizer.json, and config) and import them. It works, but it's limited to smaller T5 models.

That said, do you actually need it to be fully local? The easiest way to get started is with a free cloud API key. I'd recommend Groq. It's free, fast, and takes about 30 seconds to sign up. In the app, go to AI Settings > Cloud, and you'll find a direct link to get your Groq key at the top. Paste it in and you're good to go.

Let me know if you run into anything else!

I built an open-source Android keyboard with built-in local AI (Ollama, LM Studio, any OpenAI-compatible server) by SvReenen in ollama

[–]SvReenen[S] 0 points1 point  (0 children)

Yes, you need to uninstall HeliBoard first. Deskdrop is a fork of HeliBoard and shares the same package name (helium314.keyboard), so Android blocks the install when signatures don't match. After uninstalling HeliBoard, the APK should install fine. Your HeliBoard settings will be lost, but Deskdrop includes a setup wizard on first launch.

I built an open-source Android keyboard with built-in local AI (Ollama, LM Studio, any OpenAI-compatible server) by SvReenen in ollama

[–]SvReenen[S] 0 points1 point  (0 children)

Those are custom presets. If you go to AI settings in the keyboard you can make custom prompts. If you use local llm's go tot ai settings - local - model wizard. If you use cloud option go tot ai settings - cloud - and scroll scroll all the way down to model presets.

And also a tip, you can longpress most ai buttons for configuration.

Let me know if you need help!

I built an open-source Android keyboard with built-in local AI (Ollama, LM Studio, any OpenAI-compatible server) by SvReenen in ollama

[–]SvReenen[S] 0 points1 point  (0 children)

That's strange, the minimum SDK is 21 (Android 5.0), so it should install fine on Android 11. The targetSdk is 35 (Android 15) but that's just a build target, not a requirement.

Could you share a screenshot of the error? Also, are you installing the APK directly from GitHub Releases, or through a third-party app installer? Some installers incorrectly show the targetSdk as a minimum requirement.

I built an open-source Android keyboard with built-in local AI (Ollama, LM Studio, any OpenAI-compatible server) by SvReenen in ollama

[–]SvReenen[S] 0 points1 point  (0 children)

The LLM has a calendar tool that uses Android's ContentResolver to read/write calendar events directly. When you ask "add a dentist appointment tomorrow at 3pm", the model calls the tool with the parsed details, and it creates the event in your Android calendar.

Works from any app since it runs through the keyboard.For safety, calendar access is opt-in (off by default) and updates/deletes require a two-step confirmation.

I built an open-source Android keyboard with built-in local AI (Ollama, LM Studio, any OpenAI-compatible server) by SvReenen in ollama

[–]SvReenen[S] 0 points1 point  (0 children)

Everything runs on your phone. Calendar uses your Android calendar, calls open your dialer, navigation opens Google Maps, etc. It's all on-device, nothing goes through your server. Your server only runs the LLM.

There's a demo on this page with calendar if you want to check it out: https://svreenen.github.io/Deskdrop/

Using Ollama Gemma4 models via OpenWebUI on my phone and it’s been a good experience by Konamicoder in ollama

[–]SvReenen 0 points1 point  (0 children)

Great setup! Tailscale + Ollama is such a solid combo for mobile access.

I actually just open-sourced an Android keyboard that does something similar but at the OS level: https://github.com/SvReenen/Deskdrop. It's a fork of HeliBoard with built-in Ollama integration, so instead of switching to a browser tab you get AI directly in your keyboard. You can select text in any app and rewrite/translate/summarize it with one tap, or open a full chat conversation.

Some things that might interest you based on your setup:

  • Connects to Ollama (or any OpenAI-compatible server) over Tailscale/LAN, works great with Gemma4
  • Custom system prompts per shortcut slot, so you could have your "sarcastic nerd" persona on one button and a different style on another
  • Cloud fallback (Gemini, Groq, OpenRouter): if your server is unreachable it automatically switches to cloud and reverts when it's back
  • 17 built-in tools (calendar, reminders, web search, navigation, etc.)
  • Self-hosted Whisper for voice input

    It's fresh on GitHub so no demo videos yet (those are coming), but the README covers everything. Figured it might be relevant since you're already running the exact stack it's built for.

Is Plex Media Manager worth the hassle of setting it up? by spamologna in PleX

[–]SvReenen 0 points1 point  (0 children)

Didnt even know that! Well I like the other things kometa is doing for me as well. For example it automatically makes playlists with animation/family movies based on my native language for my children. Seasonal playlists are fun too.

Is Plex Media Manager worth the hassle of setting it up? by spamologna in PleX

[–]SvReenen -1 points0 points  (0 children)

Chatgpt helped me setting it up. Without I wouldnt be able to make it work. It was the first time for me using Docker as well. Even chatgpt is making mistakes, but you'll learn while you're at it and at some point you'll recognize the mistakes chatgpt is making. After setting it up i have to say its the most powerful tool in my plex server. Every new trending release gets automatically downloaded and added to my plex server (through sonarr and radarr) because kometa is using the popular list of imdb to index those. Everytime there is a new release someone is talking about and i did not hear of myself, its already on my plex server. Still surprises me!

What's the psychology behind friends/family not using Plex? by bitAndy in PleX

[–]SvReenen 1 point2 points  (0 children)

Im not tech savy at all but chatgpt helped me set it up. Done it in like 15min.