Android
Install codai on Android, grant the permissions it needs, pair it with your account, let it use your phone for you, drive your desktop from it, and understand billing and privacy.
codai for Android uses your phone the way you would: it sees the screen as a list of buttons and texts (through an Accessibility service), taps, types, scrolls and swipes — and stops for an ask card before anything risky. Android 11 or newer. Apache-2.0, source at github.com/codai-ro/codai-phone.
Install
The Play listing (ro.codai.phone) is in closed testing — it is not yet open to the public. If you have been added as a tester, install it from the invitation link like any other app.
The Play build is a "reader app": it shows your plan and balance but has no in-app purchases (Google Play payments policy). It also omits SMS, call-log, all-files and package-install permissions, so the SMS and file tools are unavailable there. Everything else is identical.
Pair it with your account
The first screen after the legal consent asks how codai should think:
- Sign in with your codai account — email + password, or Sign in with Google, natively in the app (no browser). This mints a
codai_key for this phone, labelledAndroid · <model>in the hub; signing out revokes it. - Use your own AI key instead — skip sign-in, then Settings → Providers: OpenAI, Anthropic, Google Gemini, OpenRouter, GitHub Copilot or any OpenAI-compatible endpoint. Keys stay in Android's encrypted preferences and go only to that provider.
Your phone appears in hub.codai.ro → Security → Devices; revoke it there if it is lost.
Permissions
The onboarding wizard walks through these in order. Only Accessibility is required for phone control; everything else is optional and can be switched on later from Settings → Permissions.
| Permission | Why codai asks | Required? |
|---|---|---|
| Accessibility service | The only Android mechanism that lets an app read and tap other apps' screens. Used only while a task runs. | For phone control — yes |
| Notifications | Tell you when a task needs an answer or finished. | Optional |
| Microphone | Talk instead of type; runs as a foreground service while listening. | Optional |
| Display over other apps | The floating bubble and mini-chat you can tap from anywhere. | Optional |
| Notification access | Read and reply to notifications ("what did Ana just send?"). | Optional |
| Battery: unrestricted | Stops Android from killing a long task. Samsung/Pixel: Settings → Apps → codai → Battery → Unrestricted. | Recommended |
| Contacts, Calendar, SMS, Call log, Phone | Only when a task first needs one of them — search contacts, read the calendar, read recent SMS, start a call. | On demand |
| All files access | The file tools (file_list, file_read, …) over your storage. APK build only. | Optional |
| Location, Wi-Fi state | Device-fact answers ("which Wi-Fi am I on?"). | Optional |
Terminal companion (codai.term) | A second small app that gives codai a Termux-compatible shell. Developers only. | Optional |
| Shizuku | Unlocks a few shell-level tools if you already run Shizuku. | Optional |
Android shows a warning that the accessibility service can "view and control the screen". That is accurate. Password fields are masked by Android, but other on-screen text — a bank balance, a 2FA code — is visible while a task runs; that is why banking, wallet, payment, authenticator, password-manager and system Settings apps are treated as sensitive and require approval in the default autonomy level.
Reinstalling the app can silently switch the service off (Samsung especially). If codai says it cannot see the screen: Settings → Accessibility → Installed apps → codai → off → on.
What the agent can do on the phone
- Use other apps — open, read, tap, type, scroll, swipe. "Open WhatsApp and tell me the last message from Ana."
- Answer questions about the phone — notifications, alarms, contacts, calendar, recent SMS, foreground app, Bluetooth, battery, storage.
- Small chores — set alarms and timers, add calendar events, open a link, share text, copy to the clipboard, reply to a notification, start a call.
- Files — list, search, read, edit and move files in your storage (APK build).
- Terminal — a real Linux-style shell through the companion app or Termux, optionally jailed to a scratch home (Sandbox switch in the agent-mode sheet).
- Work offline for small things — optional on-device model (Gemma 4 E2B, ~2.6 GB, or the fine-tuned codai-nano) under Settings → Models. Modes:
off(default),fast-lane(mechanical follow-up taps run locally),local-first(every step starts on the phone and hands over to the cloud when stuck). Best on recent flagships; 4 GB phones should stayoff. - Ask before risky actions. Sending a message, paying, or acting inside a sensitive app pops an ask card. Messaging apps have their own switch: ask (default), block, allow.
- Several tasks at once — one session per window (split-screen / pop-up on One UI); tasks that need the screen queue politely.
- Keep a plan and notes — a live
todochecklist under the chat header and a local Memory browser (/memories/<file>survives sessions; nothing leaves the phone).
Autonomy
Settings → Agent → Autonomy, also in the shield chip next to the composer:
| Level | Asks before |
|---|---|
| strict | every action |
| assisted (default) | anything that sends or pays, and anything inside a sensitive app |
| autopilot | sending or paying only |
Stop in the chat or on the bubble ends a task at once; every turn also has a time budget (4 minutes by default, Settings → Agent).
Drive your desktop from the phone
With codai desktop open on a computer signed in with the same account and Serve as a remote host for my phone switched on, the phone can:
- run terminal commands and read/write files on that computer (
terminaltool with the relay backend, inside the desktop's approved folders); - dispatch a whole task to the desktop — it is picked up within about 30 seconds and executed there while your phone shows the live transcript with a REMOTE badge;
- take the reverse hand-off: Continue on phone from the desktop sends the conversation here and wakes the app by push (builds with Firebase configured).
Turn Session sync on (Settings → Advanced) to see the same conversation on every device. The device doing the work is the executor; the others are viewer (watch) or editor (send, answer, cancel). Protocol details: Shared sessions.
Billing
The app is free. What costs money is the model that does the thinking:
- codai account — usage is billed by your plan (tasks per month, then wallet or overage). Inside the app, Cost · Receipt shows the server's receipt for a session, and Settings lets you set a per-session budget so a task cannot run away.
- Your own provider key — that provider bills you directly; codai takes nothing.
- On-device steps cost nothing.
Where you buy depends on the build:
| Build | Billing screen |
|---|---|
| APK | Plans and wallet top-ups (5 €, 10 €, … presets from the catalog). Every purchase opens pay.codai.ro in a Chrome Custom Tab — you sign in via auth.codai.ro SSO, pay with Stripe Checkout, and land back in the app. Manage subscription opens the Stripe portal the same way. |
| Google Play | Read-only: current plan and balance, plus a link to hub.codai.ro/billing. No prices, no checkout in the app. |
Plans, prices and what a "task" is are on the limits & pricing page.
Privacy
Stays on the phone: your keys and sign-in (encrypted preferences), the screen contents codai reads unless a step needs the cloud model, everything the on-device model handles, chat history (local database), memory notes, and per-turn trace files if you enabled them for debugging (Download/codai-nano/, never uploaded).
Leaves the phone: your prompt, the screen summary and tool results — to the AI backend you configured (codai gateway by default, or your own provider). With Session sync on, the step-by-step transcript is mirrored to the gateway so your other devices can follow. Builds with Firebase send the push token used to wake the phone for dispatch.
Never: no analytics SDK, no ad SDK, no crash reporter. No message sent, payment made or setting changed in a sensitive app without an ask card you tapped.
Training on your conversations is opt-in (default off) — Settings → About → Training consent, or PATCH /v1/account.
Web (app.codai.ro)
The desktop interface in a browser tab — sign in with your codai account, chat anywhere, and run agents on a desktop that is signed in with the same account.
Verify downloads
What is signed and hashed for each platform — minisign signatures on the Windows installer and Linux AppImage, SHA256SUMS on every release — and what is not (Authenticode, notarization, Android).