Docs

What each part of Chitti does, the permissions it asks for and why, and how to build it yourself. Everything here runs on the phone unless the Privacy page says otherwise.

What each part does

Today

Commitments pulled out of your notifications, urgent ones first, with one-tap reply, calendar and reminder actions, and a log of what Chitti did for you.

Ask

Type or talk. Answers questions about you from facts you've saved ("what is my branch?"), sets reminders ("remind me to call mom in 30 minutes"), reports what's pending, controls the flashlight, opens apps, and answers general questions with the on-device model.

Voice

Tap the mic and speak; Chitti shows the transcript live and answers aloud.

Library & Settings

Library holds everything Chitti found in notifications plus the facts you've taught it. From Settings you can clear any kind of stored data (or all of it) and require your fingerprint to unlock the app.

Permissions, and why

Chitti asks only for what a given feature needs. Plain-language reasons below; the exact manifest lives in the repo.

PermissionWhy Chitti asks for it
Record audioPowers Voice and the mic button in Ask.
Post notificationsLets the app notify you.
Notification listenerReads incoming notifications to build the Today list — the core mechanism the app runs on.
Accessibility servicePerforms the small set of whitelisted actions (opening an app, toggling the flashlight).
Read / write calendarTurns a detected commitment into a calendar event with one tap.
AlarmsSo a reminder fires at the exact time you asked for.
Send SMSOnly used if you ask Chitti to send a text as an automation action.
Foreground serviceKeeps notification capture and voice alive reliably.
Receive boot completedRestarts background listening after the phone reboots.
Ignore battery optimizationsKeeps the background service from being killed by the OS.
InternetOnly for the three network cases described on the Privacy page (sign-in, optional backup, Safe Browsing).

Building it yourself

You'll need JDK 17 or newer, the Android SDK (compile SDK 37), and a phone on Android 8.0 (API 26) or later — plus Android Gradle Plugin 9.4, Kotlin 2.4 and Jetpack Compose. Clone the repo, create a local.properties with your SDK path and Firebase config (Firebase keys are optional in debug — a "skip" sign-in option appears without them), optionally push the Gemma model to the device, then run ./gradlew :app:installDebug. The Gemma model (gemma-1.1-2b-it-cpu-int4.bin, available from Kaggle) is optional; without it, Chitti falls back to a rule-based extraction engine.