codai docs
Apps

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, labelled Android · <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.

PermissionWhy codai asksRequired?
Accessibility serviceThe only Android mechanism that lets an app read and tap other apps' screens. Used only while a task runs.For phone control — yes
NotificationsTell you when a task needs an answer or finished.Optional
MicrophoneTalk instead of type; runs as a foreground service while listening.Optional
Display over other appsThe floating bubble and mini-chat you can tap from anywhere.Optional
Notification accessRead and reply to notifications ("what did Ana just send?").Optional
Battery: unrestrictedStops Android from killing a long task. Samsung/Pixel: Settings → Apps → codai → Battery → Unrestricted.Recommended
Contacts, Calendar, SMS, Call log, PhoneOnly when a task first needs one of them — search contacts, read the calendar, read recent SMS, start a call.On demand
All files accessThe file tools (file_list, file_read, …) over your storage. APK build only.Optional
Location, Wi-Fi stateDevice-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
ShizukuUnlocks 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 stay off.
  • 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 todo checklist 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:

LevelAsks before
strictevery action
assisted (default)anything that sends or pays, and anything inside a sensitive app
autopilotsending 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 (terminal tool 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:

BuildBilling screen
APKPlans 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 PlayRead-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.

On this page