Jetson install

Install Synra on Jetson

This installs Synra Standalone, the local API service, private model configuration, and the dedicated Electron kiosk shell verified for the Jetson display path.

curl -fsSL https://raw.githubusercontent.com/synryzen/NodeSpark-Synra/main/scripts/install-jetson.sh | bash

What Gets Installed

Synra Standalone

Installed at ~/synra-standalone and served on port 5191.

Electron Kiosk

Installed at ~/synra-jetson-station with production launch scripts and diagnostics.

User Service

Creates synra-standalone.service for the local Python API server.

Private Config

Creates ~/.config/synra-standalone.env and keeps existing values on update.

Requirements

Configure AI

Edit Synra's private config:

nano ~/.config/synra-standalone.env

Remote OpenAI-compatible endpoint example:

SYNRA_MODEL_ENDPOINT=https://lm.example.com/v1/chat/completions
SYNRA_MODEL_NAME=zai-org/glm-4.6v-flash
SYNRA_MODEL_LABEL=GLM 4.6V Flash
SYNRA_MODEL_API_KEY=
SYNRA_MODEL_TIMEOUT_SECONDS=45

Local Ollama-compatible endpoint example:

SYNRA_MODEL_ENDPOINT=http://127.0.0.1:11434/v1/chat/completions
SYNRA_MODEL_NAME=qwen2.5:1.5b
SYNRA_MODEL_LABEL=qwen2.5:1.5b
SYNRA_MODEL_API_KEY=
systemctl --user restart synra-standalone.service
systemctl --user restart synra-electron-kiosk.service
curl http://127.0.0.1:5191/api/health

Configure Voice and ElevenLabs

Open Synra at http://JETSON_IP:5191/, then use Settings > Voice.

  1. Choose ElevenLabs.
  2. Paste your ElevenLabs API key.
  3. Click Load ElevenLabs Voices.
  4. Choose a voice by name.
  5. Click Test Voice.
  6. Use Voice Diagnostics if sound does not play.

If fullscreen kiosk mode makes copy/paste awkward, open Settings > Display and click Switch to Windowed Setup, or launch directly into a setup window:

SYNRA_KIOSK_WINDOW_MODE=windowed ~/synra-jetson-station/scripts/start-electron-kiosk.sh

After the voice is saved, use Settings > Display > Return to Full Screen.

Use Settings > Companion for owner name, local wake word, memory suggestions, and the screen timeout. Use Settings > Users to enroll known users with opt-in local face samples.

Optional server-side defaults can be placed in ~/.config/synra-standalone.env:

SYNRA_ELEVENLABS_API_KEY=
SYNRA_ELEVENLABS_VOICE_ID=
SYNRA_ELEVENLABS_MODEL_ID=eleven_multilingual_v2
SYNRA_ELEVENLABS_OUTPUT_FORMAT=mp3_44100_128

Mic and Camera

The dedicated Electron kiosk shell defaults to local mic/camera permission auto-grant for the Jetson station. Browser users still control permissions through their browser.

curl http://127.0.0.1:5191/api/vision/public

Inside Synra, use Voice Diagnostics, Vision On, and Analyze View to test the live path.

To disable auto-grant for manual permission testing:

SYNRA_KIOSK_AUTO_GRANT_MEDIA=false ~/synra-jetson-station/scripts/start-electron-kiosk.sh

Configure Home Assistant

Home Assistant is optional and remains user-confirmed for state-changing actions.

SYNRA_SMART_HOME_ENABLED=true
SYNRA_HOME_ASSISTANT_URL=http://homeassistant.local:8123
SYNRA_HOME_ASSISTANT_TOKEN=your_home_assistant_long_lived_access_token
SYNRA_HOME_ASSISTANT_DEFAULT_LIGHT=light.living_room

Launch Kiosk

The recommended production kiosk is Electron:

~/synra-jetson-station/scripts/start-electron-kiosk.sh

For first-time setup, copy/paste, and API-key entry, use:

SYNRA_KIOSK_WINDOW_MODE=windowed ~/synra-jetson-station/scripts/start-electron-kiosk.sh

The installer creates a user-level Electron kiosk service. After an update, restart the running kiosk:

systemctl --user restart synra-electron-kiosk.service

It launches this runtime URL:

http://127.0.0.1:5191/?profile=jetson&mode=kiosk&fps=30&live=1&quality=sharp&scale=1&maxw=2560&maxh=1600&avatar=classic&telemetry=1

Snap Chromium is kept only as a manual fallback:

~/synra-standalone/scripts/start-jetson-kiosk.sh

Keep only one kiosk shell enabled. The installer disables older Chromium autostart launchers because running Chromium behind Electron can make Synra extremely slow after reboot.

Verify Performance

~/synra-jetson-station/scripts/electron-gpu-check.sh

A healthy result should show Synra telemetry reachable, kiosk mode active, WebGL available, FPS near target, and GR3D_FREQ activity while Synra is visible.

The verified production path on the current Jetson is Electron kiosk, fps=30, quality=sharp, scale=1, maxw=2560, maxh=1600, ANGLE backend vulkan, and remote debugging off by default.

Update

Run the installer again:

curl -fsSL https://raw.githubusercontent.com/synryzen/NodeSpark-Synra/main/scripts/install-jetson.sh | bash

The installer keeps an existing ~/.config/synra-standalone.env.