Files
wehub-resource-sync 426e9eeabd
Voice Workbench / headless workbench (mocked backends) (push) Has been cancelled
Voice Workbench / real acoustic lane (nightly, provisioned only) (push) Has been cancelled
ci / test (push) Has been cancelled
ci / lint-and-format (push) Has been cancelled
ci / build (push) Has been cancelled
ci / dev-startup (push) Has been cancelled
gitleaks / gitleaks (push) Has been cancelled
Markdown Links / Relative Markdown Links (push) Has been cancelled
Quality (Extended) / Homepage Build (PR smoke) (push) Has been cancelled
Quality (Extended) / Comment-only diff guard (push) Has been cancelled
Quality (Extended) / Format + Type Safety Ratchet (push) Has been cancelled
Quality (Extended) / Develop Gate (secret scan + UI determinism) (push) Has been cancelled
Quality (Extended) / Develop Gate (lint) (push) Has been cancelled
Chat shell gestures / Chat shell gesture + parity e2e (push) Has been cancelled
Cloud Gateway Discord / Test (push) Has been cancelled
Benchmark Bridge Tests / benchmark (bunx @biomejs/biome check packages/lifeops-bench/src, benchmark-lint) (push) Has been cancelled
Benchmark Bridge Tests / benchmark (bunx vitest run --config packages/lifeops-bench/vitest.config.ts --root packages/lifeops-bench --passWithNoTests, benchmark-tests) (push) Has been cancelled
Build Agent Image / build-and-push (push) Has been cancelled
Dev Smoke / bun run dev onboarding chat (push) Has been cancelled
Dev Smoke / Vite HMR dependency-level smoke (push) Has been cancelled
Electrobun Submodule Guard / electrobun gitlink is fetchable (push) Has been cancelled
Publish @elizaos/example-code / check_npm (push) Has been cancelled
Publish @elizaos/example-code / publish_npm (push) Has been cancelled
Publish @elizaos/plugin-elizacloud / verify_version (push) Has been cancelled
Publish @elizaos/plugin-elizacloud / publish_npm (push) Has been cancelled
Sandbox Live Smoke / Sandbox live smoke (push) Has been cancelled
Snap Build & Test / Build Snap (amd64) (push) Has been cancelled
Snap Build & Test / Build Snap (arm64) (push) Has been cancelled
Test Packaging / elizaos CLI global-install smoke (node + bun) (push) Has been cancelled
Cloud Gateway Webhook / Test (push) Has been cancelled
Cloud Tests / lint-and-types (push) Has been cancelled
Cloud Tests / unit-tests (push) Has been cancelled
Cloud Tests / integration-tests (push) Has been cancelled
Cloud Tests / e2e-tests (push) Has been cancelled
CodeQL Advanced / Analyze (javascript-typescript) (push) Has been cancelled
Deploy Apps Worker (Product 2) / Determine environment (push) Has been cancelled
Deploy Apps Worker (Product 2) / Deploy apps worker to apps-control host (${{ needs.determine-env.outputs.environment }}) (push) Has been cancelled
Deploy Eliza Provisioning Worker / Determine environment (push) Has been cancelled
Deploy Eliza Provisioning Worker / Deploy worker to Hetzner host (${{ needs.determine-env.outputs.environment }} @ ${{ needs.determine-env.outputs.deployment_sha }}) (push) Has been cancelled
Dev Smoke / Classify changed paths (push) Has been cancelled
supply-chain / sbom (push) Has been cancelled
supply-chain / vulnerability-scan (push) Has been cancelled
Build, Push & Deploy to Phala Cloud / build-and-push (push) Has been cancelled
Test Packaging / Validate Packaging Configs (push) Has been cancelled
Test Packaging / Build & Test PyPI Package (push) Has been cancelled
Test Packaging / PyPI on Python ${{ matrix.python }} (push) Has been cancelled
Test Packaging / Pack & Test JS Tarballs (push) Has been cancelled
UI Fixture E2E / ui-fixture-e2e (push) Has been cancelled
UI Fixture E2E / fixture-e2e (push) Has been cancelled
UI Story Gate / story-gate (push) Has been cancelled
vault-ci / test (macos-latest) (push) Has been cancelled
vault-ci / test (ubuntu-latest) (push) Has been cancelled
vault-ci / test (windows-latest) (push) Has been cancelled
vault-ci / app-core wiring tests (push) Has been cancelled
verify-patches / verify patches/CHECKSUMS.sha256 (push) Has been cancelled
Voice Benchmark Smoke / voice-emotion fixture smoke (push) Has been cancelled
Voice Benchmark Smoke / voiceagentbench fixture smoke (push) Has been cancelled
Voice Benchmark Smoke / voicebench-quality unit smoke (push) Has been cancelled
Voice Benchmark Smoke / voicebench TypeScript unit (no audio) (push) Has been cancelled
Voice Benchmark Smoke / voice bench smoke summary (push) Has been cancelled
Windows CI / windows ([bun run --cwd packages/app-core test bun run --cwd packages/elizaos test bun run --cwd packages/cloud/shared test], app-and-cli) (push) Has been cancelled
Windows CI / windows ([bun run --cwd packages/scenario-runner test bun run --cwd packages/vault test bun run --cwd packages/security test bun run --cwd plugins/plugin-coding-tools test], framework-packages) (push) Has been cancelled
Windows CI / windows ([bun run --cwd plugins/plugin-elizacloud test bun run --cwd plugins/plugin-discord test bun run --cwd plugins/plugin-anthropic test bun run --cwd plugins/plugin-openai test bun run --cwd plugins/plugin-app-control test bun run --cwd plugins/pl… (push) Has been cancelled
Windows CI / windows ([node packages/scripts/run-turbo.mjs run build --filter=@elizaos/core --filter=@elizaos/shared --filter=@elizaos/agent --concurrency=4 node packages/scripts/run-bash-linux-only.mjs scripts/verify-riscv64-buildpaths.sh node packages/scripts/run… (push) Has been cancelled
Windows CI / windows ([node packages/scripts/run-turbo.mjs run typecheck --filter=@elizaos/core --filter=@elizaos/shared --filter=@elizaos/cloud-shared --concurrency=4 bun run --cwd packages/core test bun run --cwd packages/shared test], core-runtime, 75) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:43:05 +08:00
..

Eliza Facewear — Even Realities G1/G2 Companion App

Android companion app that bridges the Even Realities G1 (and G2) glasses to an elizaOS agent via BLE.

Architecture

elizaOS Agent (WebSocket)
        ↕  WebSocket (OkHttp)
AgentBridgeService (Android)
        ↕  Android Binder IPC
G1BleService (Android)
        ↕  BLE GATT / Nordic UART Service
Even Realities G1 glasses

The G1 runs its own ARM firmware and communicates over BLE. This app uses the Nordic UART Service (NUS) BLE profile (UUID 6e400001-b5a3-f393-e0a9-e50e24dcca9e) exposed by both lenses and does not consider pairing ready until the left and right lens are connected.

BLE Protocol

The G1 implements the same core command framing used by plugin-facewear:

Command byte Payload Action
0x4E display sequence/chunk header + UTF-8 text Display text on both lenses
0xF5 0x18 stop subcommand Clear display
0x01 level + auto flag Set display brightness
0x0E 0x01 / 0x00 Enable / disable the right-lens mic
0x25 heartbeat sequence Keep connection alive
0x2C 0x01 none Request battery status
0x4D 0x01 / 0xF4 0x01 none Left/right connection-ready init

Incoming 0xF1 mic frames are forwarded to the agent as mic_lc3 JSON events with sampleRate: 16000, encoding: "lc3", byte-array payloads, and base64 payloads. Other RX packets are forwarded as g1_raw events so the agent can parse taps, serial responses, battery status, and display acknowledgements.

Prerequisites

Tool Version
Android Studio Hedgehog 2023.1+
JDK 17
Android SDK API 35
Android device API 29+ with Bluetooth LE

Building

./gradlew assembleDebug
# Output: app/build/outputs/apk/debug/app-debug.apk

Installing

adb install -r app/build/outputs/apk/debug/app-debug.apk

Usage

  1. Enable Bluetooth on your Android phone
  2. Turn on your G1 glasses
  3. Open the app → tap Scan for G1
  4. The app will find _L_ and _R_ G1 lenses via BLE and connect both
  5. Enter your elizaOS agent WebSocket URL (e.g. ws://192.168.1.100:31337/smartglasses-ws)
  6. Tap Connect to Agent
  7. Agent responses will appear on the G1 HUD display

How the Agent Integration Works

  • AgentBridgeService connects to the elizaOS WebSocket and sends a hello frame with deviceType: "even-realities"
  • The agent (plugin-facewear) should detect this device type and skip TTS audio (G1 has no speaker)
  • agent_text frames are forwarded to G1BleService.displayText() → BLE → both G1 HUD lenses
  • transcript frames (final=true) show "You: ..." on the HUD
  • clear_display, mic_control, brightness, battery_status, heartbeat, and g1_write agent frames are forwarded to the BLE service
  • G1 RX packets are forwarded back to the agent as g1_raw; 0xF1 microphone chunks are additionally forwarded as mic_lc3

Troubleshooting

Problem Fix
Scan finds nothing G1 not powered on, or pairing mode not active
GATT_ERROR 133 Common on first connect — retry once or power-cycle G1
NUS service not found Wrong device or firmware too old
Text not showing on G1 Confirm both lenses report ready and the agent is sending agent_text frames
WebSocket refused Check agent is running; use LAN IP, not localhost
Permission denied on BLE scan Grant Location + Bluetooth permissions in Settings