{
  "added_at": "2026-10-18",
  "additional_evidence_urls": [
    "https://github.com/macedonga/visor/blob/8caaa12df919c014c249efb71fdfa32b263f6c3e/CLAUDE.md",
    "https://github.com/macedonga/visor/blob/8caaa12df919c014c249efb71fdfa32b263f6c3e/CONTRIBUTING.md",
    "https://github.com/macedonga/visor/blob/8caaa12df919c014c249efb71fdfa32b263f6c3e/SECURITY.md",
    "https://github.com/macedonga/visor/blob/8caaa12df919c014c249efb71fdfa32b263f6c3e/LICENSE",
    "https://github.com/macedonga/visor/blob/8caaa12df919c014c249efb71fdfa32b263f6c3e/app/build.gradle.kts",
    "https://github.com/macedonga/visor/blob/8caaa12df919c014c249efb71fdfa32b263f6c3e/.github/workflows/build.yml",
    "https://github.com/macedonga/visor/blob/8caaa12df919c014c249efb71fdfa32b263f6c3e/.github/workflows/release.yml",
    "https://github.com/macedonga/visor/blob/8caaa12df919c014c249efb71fdfa32b263f6c3e/core/protocol/src/main/kotlin/com/macedonga/visor/core/protocol/Framing.kt",
    "https://github.com/macedonga/visor/blob/8caaa12df919c014c249efb71fdfa32b263f6c3e/core/protocol/src/main/kotlin/com/macedonga/visor/core/protocol/Cipher.kt",
    "https://github.com/macedonga/visor/blob/8caaa12df919c014c249efb71fdfa32b263f6c3e/core/assistant/src/main/kotlin/com/macedonga/visor/core/assistant/Brain.kt",
    "https://github.com/macedonga/visor/wiki/Home/7358c5a1c39a6354d2170f89133b184f7f2b82e7",
    "https://github.com/macedonga/visor/wiki/Protocol-overview/7358c5a1c39a6354d2170f89133b184f7f2b82e7",
    "https://github.com/macedonga/visor/wiki/Meta-login-and-ownership/7358c5a1c39a6354d2170f89133b184f7f2b82e7",
    "https://github.com/macedonga/visor/wiki/Open-questions/7358c5a1c39a6354d2170f89133b184f7f2b82e7"
  ],
  "category": "reconstruction-cases",
  "description_en": "Implements an Android replacement for the Meta AI companion app that speaks the Ray-Ban Meta glasses’ own Bluetooth and Wi-Fi Direct protocol, imports media, exposes settings and answers “Hey Meta” with a model the user chooses. The project wiki documents the link layers, encryption, services and Meta-side ownership steps, and lists 153 open questions. Testing is on real glasses rather than test suites, so behavior beyond the stated model and firmware remains unverified.",
  "description_zh": "实现可替代 Meta AI 配套应用的 Android 客户端：直接使用 Ray-Ban Meta 眼镜自有的蓝牙与 Wi-Fi Direct 协议，导入媒体、提供设置，并用用户选择的模型回应“Hey Meta”。项目 wiki 记录了链路分层、加密、服务及 Meta 端的所有权流程，并列出 153 个未解问题。项目以实机试用代替测试套件，因此所述型号和固件之外的行为仍未经验证。",
  "entry_url": "https://awesomerea.org/resources/visor-ray-ban-meta-client-case/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/visor-ray-ban-meta-client-case/",
  "evidence_url": "https://github.com/macedonga/visor/blob/8caaa12df919c014c249efb71fdfa32b263f6c3e/README.md",
  "group": "cases",
  "id": "visor-ray-ban-meta-client-case",
  "json_url": "https://awesomerea.org/resources/visor-ray-ban-meta-client-case/record.json",
  "kind": "case-study",
  "markdown_url": "https://awesomerea.org/resources/visor-ray-ban-meta-client-case/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/visor-ray-ban-meta-client-case/index.md",
  "name": "Visor: an independent Ray-Ban Meta glasses client",
  "name_zh": "Visor：独立的 Ray-Ban Meta 眼镜客户端",
  "record_type": "resource",
  "relationship": "independent-reconstruction",
  "requirement_facets": [
    "prerequisites",
    "prerequisites",
    "prerequisites",
    "testing",
    "license"
  ],
  "requirements": [
    "Reviewed just after release v1.3.1 (2026-10-18). README targets Ray-Ban Meta (Gen 2) tested on firmware 72387580077200100; other Meta glasses are untested. It needs an Android 10+ phone, a Meta account using password or email-code login (passkeys do not work) and, for the assistant, an Anthropic or OpenAI-compatible API key. The glasses accept one session at a time, so Visor and the Meta AI app displace each other.",
    "Setup makes Visor the glasses’ owner app through Meta’s login and ownership-receipt services, so it still depends on a Meta account and Meta servers for setup, frame style and language packs. Source builds need three client tokens from the official Meta AI app, which the repository does not include; without them the app builds but login and ownership fail. Release builds read them from CI secrets.",
    "Building needs JDK 21 and the Android SDK with platform 37. CI builds a debug APK with Gradle, and tagged releases publish a signed APK with a SHA-256 file; README lists the release certificate fingerprint. Modules separate wire format and ciphers, transport, session, identity, media, settings and the assistant, which stands in for Meta’s server with Claude or an OpenAI-compatible model.",
    "There are no test suites: CONTRIBUTING asks for hardware trials and wire.log excerpts for protocol changes, and CLAUDE.md says the app works on real glasses as of 2026-10-05. The wiki marks unconfirmed facts and lists open questions, including unread payloads and model-specific values; CLAUDE.md also refers to a desktop Python client snapshot that the repository does not contain.",
    "Visor is AGPL-3.0 and states it is unaffiliated with Meta or EssilorLuxottica; Meta’s services, app tokens, firmware and trademarks keep their own terms. CONTRIBUTING forbids getting unsigned software past the glasses’ signature checks. Claude is one selectable assistant backend, and the repository’s CLAUDE.md is a contributor guide."
  ],
  "requirements_zh": [
    "审阅时间紧随 v1.3.1 发布（2026-10-18）。README 面向 Ray-Ban Meta（第二代），测试固件为 72387580077200100；其他 Meta 眼镜未经测试。需要 Android 10+ 手机、使用密码或邮箱验证码登录的 Meta 账号（不支持通行密钥），使用助手功能还需 Anthropic 或兼容 OpenAI 接口的 API 密钥。眼镜一次只接受一个会话，因此 Visor 与 Meta AI 应用会互相顶替连接。",
    "设置流程通过 Meta 的登录与所有权凭据服务，使 Visor 成为眼镜的所有者应用，因此设置、镜框样式和语言包仍依赖 Meta 账号及 Meta 服务器。从源码构建需要来自官方 Meta AI 应用的三个客户端令牌，仓库并未包含；缺少令牌时应用可以构建，但登录和所有权步骤会失败。发布构建从 CI 密钥中读取这些令牌。",
    "构建需要 JDK 21 和带 platform 37 的 Android SDK。CI 使用 Gradle 构建调试 APK，打标签的版本会发布签名 APK 及 SHA-256 文件；README 列出了发布证书指纹。模块分为线路格式与加密、传输、会话、身份、媒体、设置和助手；助手模块代替 Meta 服务器，改用 Claude 或兼容 OpenAI 接口的模型。",
    "项目没有测试套件：CONTRIBUTING 要求协议改动附上实机试用说明和 wire.log 片段，CLAUDE.md 称截至 2026-10-05 应用可在实机上运行。wiki 标出未确认的事实并列出未解问题，包括尚未解读的负载和与型号相关的取值；CLAUDE.md 还提到一个桌面 Python 客户端快照，但仓库中并未包含。",
    "Visor 采用 AGPL-3.0，并声明与 Meta 或 EssilorLuxottica 无关；Meta 的服务、应用令牌、固件和商标保留各自条款。CONTRIBUTING 禁止让未经 Meta 签名的软件绕过眼镜的签名检查。Claude 只是可选的助手后端之一，仓库中的 CLAUDE.md 是贡献者指南。"
  ],
  "targets": [
    "app",
    "protocol"
  ],
  "url": "https://github.com/macedonga/visor",
  "verification": "source-reviewed",
  "verified_at": "2026-10-18"
}
