Pocketmind docs
v2.0.0
Live previewConsole demo Get help
● Start

Installation.
Make it your app.

Change the identity, sign it, and build for the stores.

01App id, name and icon

  1. Android application id. In app/android/app/build.gradle.kts change applicationId = "com.example.pocketmind", and namespace plus the Kotlin package folder app/android/app/src/main/kotlin/com/example/pocketmind/ to match.
  2. iOS bundle id and team. Open app/ios/Runner.xcworkspace in Xcode, select Runner > Signing & Capabilities, set your Team and bundle identifier. The source ships with an empty team.
  3. Display name. android:label in AndroidManifest.xml and CFBundleDisplayName in ios/Runner/Info.plist. The name inside the app comes from the config (Configuration).
  4. Icon. Replace app/assets/brand/logo-1024.png (1024×1024, no transparency) and run bash tool/gen_icons.sh from app/.

02Android signing

Windows

The commands below are for a macOS or Linux terminal. On Windows use PowerShell or Git Bash (WSL also works); flutter, npm and keytool work the same. iOS builds need a Mac.

Create a keystore outside the project and a key.properties file that points to it (never commit either). Put key.properties in app/android/, or anywhere and set the environment variable ANDROID_KEY_PROPERTIES to its path (handy on a build server):

keytool -genkeypair -v -keystore release.jks -alias release -keyalg RSA -keysize 2048 -validity 10000
storeFile=<full path to release.jks>
storePassword=…
keyAlias=release
keyPassword=…

Without a key.properties a release build is signed with the debug key, which the Play Store refuses.

03The AI engine build

llama.cpp and whisper.cpp ship as source in app/packages/pocket_llm/third_party/. Android compiles them through Gradle and CMake automatically. iOS compiles them into packages/pocket_llm/ios/Frameworks/pocket_llm_native.xcframework with packages/pocket_llm/tool/build_ios.sh, which the Podfile runs before pod install when the framework is missing. To rebuild it after changing the C++ code: FORCE=1 packages/pocket_llm/tool/build_ios.sh.

04Checks before a release

cd app
flutter analyze
flutter test
bash tool/check_ad_ids.sh --release   # fails until your own AdMob app id replaces Google's test id (only if you use ads)
bash tool/check_network.sh            # only the allowlisted client talks to the network