Your personal voice assistant for Android — 100% Python, built by you.
ApolloDroid is a Python-based voice assistant that listens for "Hey Apollo", processes your voice commands, and responds intelligently — packaged as a real Android APK using Kivy + Briefcase. No Android Studio required.
- 🎙️ Wake word detection — Always listening for "Hey Apollo" (offline, low battery)
- 🗣️ Speech-to-text — Converts your voice to commands in real time
- 🧠 AI-powered NLP — Understands natural language via Claude API
- 🔊 Text-to-speech — Apollo talks back to you
- ⏰ Built-in skills — Alarms, timers, weather, web search, and more
- 🔄 Always-on background service — Runs persistently on your device
- 💬 Presence window — See Apollo listening and responding in a live chat UI
| Requirement | Version | Notes |
|---|---|---|
| Python | 3.11+ | python.org |
| Java JDK | 17+ | Required by Briefcase to build the Android APK |
| Android SDK | API 26+ | Auto-installed by Briefcase on first build |
| Git | Any | For version control |
| pip | Latest | Comes with Python — run pip install --upgrade pip |
Java JDK install: Adoptium JDK 17 is free and works on Windows/Mac/Linux. Briefcase will handle the Android SDK automatically — you do NOT need Android Studio.
| Requirement | Notes |
|---|---|
| Android 8.0+ (API 26) | Minimum supported version |
| USB Debugging enabled | Settings → Developer Options → USB Debugging |
| ~200MB free storage | For the app + Python runtime |
| Service | Purpose | Get it at |
|---|---|---|
| Picovoice | Wake word "Hey Apollo" | console.picovoice.ai |
| Anthropic | NLP brain (Claude API) | console.anthropic.com |
git clone https://github.com/fworks-tech/ApolloDroid.git
cd ApolloDroidpython -m venv .venv
# Activate it:
# Windows:
.venv\Scripts\activate
# Mac/Linux:
source .venv/bin/activatepip install -r requirements-dev.txtcp .env.example .env
# Edit .env and fill in your keyspython -m apollobriefcase create android # First time only — downloads Android SDK (~5 min)
briefcase build android
briefcase run android # Phone must be connected via USB with debugging onApolloDroid/
├── apollo/ # Core Python application package
│ ├── core/ # Engine: wake word, STT, TTS, NLP
│ │ ├── wakeword/ # Porcupine wake word detection
│ │ ├── stt/ # Speech-to-text pipeline
│ │ ├── tts/ # Text-to-speech output
│ │ └── nlp/ # Claude API integration (the "brain")
│ ├── server/ # Local HTTP bridge (port 5000) for UI ↔ service
│ ├── features/ # Apollo skills (what Apollo can DO)
│ │ ├── alarm/ # Set and manage alarms
│ │ ├── timer/ # Countdown timers
│ │ ├── search/ # Web search
│ │ └── weather/ # Weather lookups
│ ├── background/ # Persistent background service
│ └── utils/ # Shared helpers and config
├── ui/ # Kivy UI layer
│ ├── screens/ # App screens (main, settings, presence window)
│ ├── widgets/ # Reusable UI components
│ └── assets/ # Icons, fonts, images
├── tests/ # Test suite
│ ├── unit/ # Unit tests (no device needed)
│ └── integration/ # Integration tests
├── docs/ # Architecture diagrams and guides
├── scripts/ # Dev helper scripts
├── pyproject.toml # Briefcase config — defines the Android APK
├── requirements.txt # Python dependencies
├── requirements-dev.txt # Dev-only dependencies (testing, linting)
└── .env.example # Template for API keys
| Component | Library | Why |
|---|---|---|
| UI framework | Kivy | Cross-platform, runs on Android natively |
| Android packaging | Briefcase | Converts Python app → real Android APK |
| Wake word | pvporcupine | Offline, tiny, accurate |
| Speech-to-text | SpeechRecognition | Easy Google STT integration |
| NLP / Brain | anthropic | Claude API Python SDK |
| Text-to-speech | pyttsx3 / plyer | pyttsx3 on desktop, plyer on Android |
| Async | Python asyncio + threading |
Background audio loop |
| Config | python-dotenv | Loads .env API keys |
- Project structure, CI,
.gitignore,.env.example -
pyproject.toml— Briefcase/Android config with all permissions -
requirements.txt+requirements-dev.txt -
scripts/setup.sh— one-command dev environment setup -
.github/workflows/ci.yml— GitHub Actions CI (lint, type check, test) -
docs/ARCHITECTURE.md+docs/ROADMAP.md— full system diagram -
apollo/app.py— Kivy App entry point -
apollo/core/wakeword/detector.py— Porcupine wake word loop -
apollo/core/stt/listener.py— Speech-to-text pipeline -
apollo/core/tts/speaker.py— Text-to-speech output -
apollo/core/nlp/brain.py+prompts.py— Claude API brain -
apollo/background/service.py— always-on background thread -
apollo/server/— local HTTP bridge on port 5000 -
apollo/utils/config.py+logger.py— config and logging -
ui/screens/— main screen + settings screen (Kivy)
Tracked as GitHub issues in Milestone v0.2.0
- Wire background service pipeline loop (detect → listen → think → speak)
- Add
python -m apolloWindows desktop entry point - Add Porcupine wake word model file (
hey_apollo_windows.ppn) - Build Apollo presence window (chat UI with listening/thinking/response states)
- Desktop smoke test for full pipeline
Tracked as GitHub Issues #6–#10
- [#6] Smart home control via Home Assistant API
- [#7] WhatsApp / SMS dictation
- [#8] Calendar & reminders via Google Calendar API
- [#9] Spotify / YouTube music control
- [#10] On-the-fly spoken translation
Tracked as GitHub Issues #11–#14
- [#11] Privacy mode: local wake-word + offline fallback
- [#12] Configurable assistant persona and voice
- [#13] Session memory: Claude remembers past conversations
- [#14] Brazilian Portuguese as a first-class language
| Milestone | Goal |
|---|---|
| v0.2.0 — Talk to Apollo | Full voice pipeline running on Windows desktop |
| Milestone 1: Core Pipeline | Android packaging and on-device testing |
| Milestone 2: Skills & Commands | Smart home, messaging, calendar, music, translation |
| Milestone 3: Differentiators | Privacy mode, personas, session memory, Portuguese |
| Milestone 4: Technical Quality | Streaming responses, offline cache, test coverage |
📌 See all open issues at github.com/fworks-tech/ApolloDroid/issues
Proprietary / All Rights Reserved — see LICENSE for details.
Copyright (c) 2026 Fabio Ritzel Borges.