About
Your phone is the right place for small, persistent agents.
It is the device that is always with you, always on, and already authenticated into every app that matters in your day. That makes it a strange place to leave un-automated — and a strange place to outsource to a cloud chatbot you only talk to when you remember.
The thing we are building
Ukkin is an open-source Flutter app for Android. You describe a workflow in natural language; Ukkin compiles that description into a small agent class that lives in the same SDK as our built-in ones (Instagram mentions, email triage, price watching). The agent runs in the background, on a schedule that respects what your phone is doing, and uses the Android Accessibility Service to read screens and interact with installed apps the way you would.
It is currently Android-first. iOS is on the Phase 4 roadmap — we don't have a working Accessibility-equivalent there yet, and we'd rather say so than wave at it.
Why a different shape from chat assistants
Chat assistants are conversational interfaces with broad knowledge and a cloud LLM behind them. They're great for thinking with, terrible at being patient. They don't watch things. They don't run in the background while you're asleep. They don't notice when a price drops.
Phone agents are the opposite: narrow, slow, and persistent. They each do one boring thing well, on a schedule, with side-effects local to your device — a notification, a draft, a saved tracking entry. The right interface for them is not a continuous chat session; it's a short conversation that produces an agent, and then the agent disappears into the background until it has something to tell you.
Why Android first (and not just yet on iOS)
Android exposes an Accessibility Service that can — with your explicit permission — read UI trees from other apps and dispatch synthetic interactions. That single API is what makes cross-app phone automation work today. iOS doesn't have a direct equivalent; what does exist (Shortcuts, App Intents, automation) is gated by what each app chooses to expose. We're tracking that surface and we'll add iOS automation when there's a clean path. Lying about iOS support would just create a worse product on both platforms.
What "local-first" means here
The design intent is that your data stays on your device. The repository includes an on-device visual-language model path (lib/vlm/), local speech (lib/voice/), and local SQLite storage for tracking history. The Phase 2 roadmap commits to an on-device LLM for natural-language understanding. We don't claim every code path is purely local today — some builds still call out for the conversational agent builder. We'd rather you check than be misled.
What Ukkin deliberately is not
Ukkin is not an enterprise RPA platform. It is not a SaaS. It is not an agent marketplace (yet). It is not a chat assistant that happens to run on your phone — it's a tool for building small agents that run on your phone whether or not you're paying attention.
It's also not finished. The README is honest about what works and what doesn't. We'd rather ship a real thing that does one shape of work well than a polished demo that does everything badly.
Who is building it
Ukkin is a project of Neullabs. We work on small, opinionated mobile and developer tools, mostly things we wanted ourselves and could not find a credible version of. The codebase is MIT-licensed and the issue tracker is on GitHub. If you want to add an agent, fix the iOS gap, or extend the AppPluginSystem to a new app, the door is open.
How to engage
Clone the repo, run it on an Android device, and grant the Accessibility permission. Tell it about one small recurring thing you do — checking a price, looking at mentions, reading the same five emails — and see whether the agent it builds is close to what you wanted. Most useful feedback we get is at that level. Open an issue if it isn't.