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
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
- Enable Bluetooth on your Android phone
- Turn on your G1 glasses
- Open the app → tap Scan for G1
- The app will find
_L_and_R_G1 lenses via BLE and connect both - Enter your elizaOS agent WebSocket URL (e.g.
ws://192.168.1.100:31337/smartglasses-ws) - Tap Connect to Agent
- Agent responses will appear on the G1 HUD display
How the Agent Integration Works
AgentBridgeServiceconnects to the elizaOS WebSocket and sends ahelloframe withdeviceType: "even-realities"- The agent (plugin-facewear) should detect this device type and skip TTS audio (G1 has no speaker)
agent_textframes are forwarded toG1BleService.displayText()→ BLE → both G1 HUD lensestranscriptframes (final=true) show "You: ..." on the HUDclear_display,mic_control,brightness,battery_status,heartbeat, andg1_writeagent frames are forwarded to the BLE service- G1 RX packets are forwarded back to the agent as
g1_raw;0xF1microphone chunks are additionally forwarded asmic_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 |