A sensor-aware AI assistant for Android, inspired by Reachy Mini. Scatty uses your phone's microphone and camera to have natural conversations powered by Google Gemini.
- Voice input with on-device speech recognition
- Streaming AI responses from Gemini
- Text-to-speech output
- Animated avatar with state-driven expressions
- Conversation history
- Session management
- Configurable server URL
- Node.js 18+
- npm 9+
- Android Studio (for Android emulator) or physical Android device
- Expo Go app (for quick testing) or development build
- Google Gemini API key
npm installnpm run build:sharedcd apps/server
cp .env.example .envEdit .env and add your Gemini API key:
GEMINI_API_KEY=your_api_key_here
PORT=3001
Get a free API key at: https://aistudio.google.com/apikey
npm run serverIn a new terminal:
npm run mobileThen press:
a- Open on Android emulatori- Open on iOS simulator (Mac only)- Scan QR code with Expo Go app on physical device
Note: Voice recognition requires a physical device or properly configured emulator with microphone access.
-
Find your computer's local IP:
- Mac/Linux:
ifconfig | grep "inet " - Windows:
ipconfig
- Mac/Linux:
-
Start the server (it binds to all interfaces)
-
In the Scatty app, tap the Settings icon (top-left)
-
Change the server URL to:
http://YOUR_IP:3001 -
Tap Save & Reconnect
EAS builds must be run from the mobile app directory (not the monorepo root):
cd apps/mobile
eas build --platform android --profile previewSee Deployment Guide for full instructions.
- Architecture - System design and component overview
- Deployment - Production deployment guides
- Make sure the server is running
- Check that your device can reach the server IP
- Verify firewall isn't blocking port 3001
- Use a physical device (emulators have limited mic support)
- Check microphone permissions in device settings
- Try the "Type" button as fallback
cd apps/mobile
npx expo start --clearrm -rf node_modules apps/*/node_modules packages/*/node_modules
npm install
npm run build:sharedMIT