Clients¶
Jarvis clients are the end-user software that connects to the backend microservices. They capture voice input, display results, manage nodes, and handle provisioning.
Client Types¶
graph TD
Node["Pi Zero Node<br/>(jarvis-node-setup)"] -->|voice commands| CC["Command Center<br/>:7703"]
Mobile["Mobile App<br/>(jarvis-node-mobile)"] -->|provisioning,<br/>settings, inbox| CC
Mobile -->|auth| Auth["Auth<br/>:7701"]
Mobile -->|push tokens| Notify["Notifications<br/>:7712"]
Node -->|TTS playback| MQTT["MQTT Broker"]
Pi Zero Node (jarvis-node-setup)¶
The primary voice interface. Runs on Raspberry Pi Zero hardware with a microphone and speaker. Handles wake word detection, audio capture, and sends voice commands to the command center. Receives spoken responses via MQTT.
Mobile App (jarvis-node-mobile)¶
iOS and Android app built with React Native/Expo. Used for node provisioning (QR code scanning, WiFi setup), settings management, push notifications, and the deep research inbox.
Provisioning System¶
Headless provisioning for Pi Zero nodes. When a fresh node boots, it creates a WiFi access point (jarvis-XXXX) and waits for the mobile app to configure it with WiFi credentials, encryption keys, and command center registration.
How Clients Authenticate¶
| Client | Auth Method | Header |
|---|---|---|
| Pi Zero Node | Node API key | X-API-Key: {node_id}:{api_key} |
| Mobile App | JWT bearer token | Authorization: Bearer <token> |
| Provisioning | Provisioning token (one-time) | Via registration payload |
Client Dependencies¶
| Client | Required Services | Optional Services |
|---|---|---|
| Pi Zero Node | Command Center (7703) | TTS (7707), Config Service (7700) |
| Mobile App | Auth (7701), Config Service (7700) | Command Center (7703), Notifications (7712) |
| Provisioning | Command Center (7703), Auth (7701) | — |