Nodes¶
The Nodes tab lists your household's voice nodes (Raspberry Pi Zero 2 W, Pi 4 or Pi 5) and the computers running the desktop agent.
Node List¶
Each card shows:
- a dot that is green when the node is online, and an icon for its kind (a Pi or a computer);
- its name;
- Online, or Offline · Last seen …;
- Mode: … (the node's voice mode), or Jarvis Automation agent for a computer.
Tap a node to view its detail screen with settings, installed commands, and status. Pull down to refresh.
Adding a Node¶
Tap Add Node to set up a fresh Pi. The node must be powered on and showing its setup hotspot (see Provisioning).
- While your phone is on your home Wi-Fi, tap Prepare. The app fetches a provisioning token from your server; it is valid for only a few minutes, so go straight on.
- Join the node's Wi-Fi network (
jarvis-and 8 characters) in your phone's settings; Open Settings takes you there. - Back in the app, tap Connect to Node. The app shows the node's info; tap Continue to Network Selection.
- Select Network: pick the home Wi-Fi the node should join.
- Configure: enter the WiFi Password and the node's Room Location, then tap Provision Node.
- The node joins your Wi-Fi and registers with your server. When the app asks, reconnect your phone to your home Wi-Fi and tap I've Reconnected to WiFi.
The Success! screen offers Set Up Smart Home (connect Home Assistant), Backup Encryption Key and Done.
Adding a computer¶
Tap Add a computer to pair a computer running the desktop agent. The screen gives you the agent's download link, then lists the computers waiting to be paired: check that the code matches the one the computer shows, choose the household and room, and tap Approve (or Deny). See Pairing.
Tip
For development, you can use Import Key (top right) to manually pair a node by pasting its K2 encryption key.
K2 Encryption Key¶
Every node has a K2 key --- an AES-256 key generated during provisioning and stored on your device. K2 encrypts the settings sync channel between the mobile app and the node; the server transports the encrypted blob but cannot read it.
Backing Up K2¶
After a successful provisioning, the Success screen offers a Backup Encryption Key button. Two backup modes are available:
| Mode | Protection |
|---|---|
| Plain | The raw key is encoded as a QR code. Fast, but anyone who scans it gains full access. |
| Password-protected | The key is encrypted with Argon2id + AES-256-GCM before encoding. You must supply the same password on import. |
Warning
Keep a backup of your K2 key. If you lose your device without a backup, you cannot restore your node's settings sync channel.
Importing K2¶
To import a key from a backup QR code, tap Import Key (key icon, top-right of the Nodes list):
- Scan the QR code with the camera.
- For a password-protected backup, enter the password when prompted --- the app decrypts the key locally using Argon2id + AES-256-GCM.
- On success, the node is re-paired to your device.
Software Updates¶
The node's detail screen shows an update control gated by the node's allow_updates consent flag (node-setup >= 0.1.137; see Update Policy):
- Consent granted --- An Update button appears when a new version is available, plus a Remote updates enabled toggle to revoke consent at any time.
- Consent refused --- The Update button is replaced by an Enable updates button. Tapping it shows a confirmation modal explaining that the node will be allowed to download and install releases; confirming flips the gate on.
- Older nodes --- Nodes that predate the consent gate (node-setup < 0.1.137) show the previous Update button with no consent controls.
Consent changes are written end-to-end through the K2-encrypted config-push channel --- the server transports ciphertext only and cannot forge or replay a consent flip.
Node Settings¶
From a node's detail screen you can:
- View installed commands and their settings
- Configure command secrets (API keys, credentials)
- Trigger device discovery
- View node status and connection info
Voice Settings¶
Each node exposes a Voice Settings screen where you can tune wake-word detection and response behaviour. Tap Save Changes to persist settings to the node.
Data Browser¶
Commands that store structured records (e.g. medication lists, shopping lists, reminders) expose a Data Browser accessible from the node's command list. The data browser supports listing, viewing, editing, deleting, and — for commands that opt in — adding records.
Adding a Record¶
When a command supports record creation, the record list shows a + floating action button (FAB). Tapping it opens an Add Record form pre-seeded with type-appropriate defaults.
- Fields marked
create_only(e.g. a medication's Visible to scope) appear editable on the add form but are read-only on the edit form — set them once at creation. - Ownership is always stamped server-side from your authenticated identity; the form never asks for an owner field.
- Validation errors (e.g. "at least one dose time is required") are shown inline and the record is not saved until resolved.
Time Array Fields¶
For fields that hold a list of times (e.g. dose_times on a medication), the add and edit forms render individual time rows with a native time picker. Tap a time chip to adjust it; tap the × to remove a row; tap Add time to append a new one.
Command Authoring¶
To enable the + button for your own command, see Data Browser Protocol — specifically data_browser_supports_create and data_browser_create in the jarvis-command-sdk docs.