Alphy is an Android assistant with cloud chat, local voice processing, generated tools, and automations. It is an early development project. The current interface is primarily in Russian.
- Chat with DeepSeek using your own API key. You give consent one time, at key entry. «Настройки» show the consent text again.
- Create interactive tools with native controls and isolated JavaScript execution.
- Use widgets and approved device capabilities, including notifications and calendar access.
- Configure local automations for schedules, location, charging, and selected notifications.
- Use T-one for local speech recognition. Continuous voice sessions show replies in the chat and then resume recognition.
Alphy stores conversations and tool data on the device. It stores the provider key with Android Keystore. Cloud requests send the content that the consent text names to DeepSeek and can incur provider charges. «Удалить ключ» stops all cloud requests. Device actions and permissions require user approval.
- Android 10 or later on an ARM64 device.
- Git LFS, JDK 17, Android SDK platform 37, Android NDK 27.0.12077973, and CMake 3.22.1.
- A DeepSeek API key for cloud chat and tool generation.
Clone the repository with its native dependency:
git clone --recurse-submodules https://github.com/egavrin/Alphy.git
cd Alphy
git lfs pullSet ANDROID_HOME to the Android SDK directory, or set sdk.dir in local.properties. Then build the debug APK:
./gradlew :app:assembleDebug
adb install -r app/build/outputs/apk/debug/app-debug.apkThe app uses the application ID com.alpha.assistant and the device label Alphy.
Alphy checks public GitHub releases, including prereleases, once per day when the app enters the foreground. Alphy releases Open «Настройки» → «Обновления Alphy» to check at any time, read release notes, and download an update. Android continues the download when you leave Alphy and retries interrupted transfers using the saved bytes. If you explicitly stop Alphy in Android settings or Task Manager, reopen Alphy and select Download to resume. After the download, select «Установить обновление» to open the Android installer. If Android requires permission for Alphy to install apps, grant it and return to Alphy to select «Установить обновление». If you use Alpha 2, install the first updater build (Alpha 3) over your current app through Android.
For each release, publish one APK named Alphy-v<version>.apk under the public tag v<version>.
Use a semantic version that matches the APK's versionName and a versionCode greater than the previous release.
Use the application ID com.alpha.assistant and the same signing certificate as the previous release.
GitHub provides the asset size and SHA-256 digest that Alphy uses to verify the download.
The APK includes the T-one recognition model from Git LFS. The app verifies each file's size and SHA-256 before use. Asset manifest · Voice integration and licenses
Run the Android instrumentation tests on an owned ARM64 emulator. The following example selects emulator-5556.
python3 tools/compose_acceptance/run.py suite --serial emulator-5556 --label LABELThe command builds both APKs, installs them with adb install -r on the selected emulator, and verifies the installed SHA-256 hashes. It records the emulator API level, build fingerprint, and WebView version. The build uses JAVA_HOME=/opt/homebrew/opt/openjdk@17 and ANDROID_HOME=/opt/homebrew/share/android-commandlinetools. Use the --adb option for a different adb path. LABEL names a new evidence directory in evidence/alphy-ui/. Add test classes or methods after the label to run only those tests. Use the suite runner to retain app data and credentials between runs.
Some workflows require device permissions, Google Play services, or the local voice models. See the documents in docs/ for feature details and test limits.
Use a disposable ARM64 emulator with the Alpha 4 debug APK and its instrumentation APK.
Use a compatible Alpha 5 fixture with application ID com.alpha.assistant, version name 0.1.0-alpha.5, and version code 5.
Sign the fixture with the same key as the installed Alpha 4 APK.
Replace the example emulator serial and fixture path with your values.
serial=emulator-5570
fixture=/path/to/Alphy-v0.1.0-alpha.5.apk
test=com.alpha.assistant.ui.AppUpdateWorkflowTest
runner=com.alpha.assistant.test/androidx.test.runner.AndroidJUnitRunner
adb -s "$serial" shell run-as com.alpha.assistant mkdir -p files/update-test
adb -s "$serial" exec-in 'run-as com.alpha.assistant sh -c "cat > files/update-test/Alphy-v0.1.0-alpha.5.apk"' < "$fixture"
adb -s "$serial" shell appops set com.alpha.assistant REQUEST_INSTALL_PACKAGES default
adb -s "$serial" shell am instrument -w -r -e class "$test#returnsFromInstallPermissionWithVerifiedUpdate" "$runner"
adb -s "$serial" shell appops set com.alpha.assistant REQUEST_INSTALL_PACKAGES allow
adb -s "$serial" shell am instrument -w -r -e class "$test#opensAndroidInstallerWithVerifiedUpdate" "$runner"
adb -s "$serial" shell appops set com.alpha.assistant REQUEST_INSTALL_PACKAGES default
adb -s "$serial" shell run-as com.alpha.assistant rm files/update-test/Alphy-v0.1.0-alpha.5.apkFor an actual replacement, add -e holdInstaller true before "$runner" in the installer test command.
Confirm installation within 90 seconds after the test reports that the installer is open.
Android ends the test process when it replaces the app.
Verify the installed version and retained data after replacement.
Alphy's own source code is available under the MIT License. Third-party components and models retain their own licenses. See app/src/main/assets/licenses/VOICE-NOTICE.txt for voice component notices.