Install
openclaw skills install @ocuclaw/ocuclaw-assistGuide OcuClaw install, update, rollback, and troubleshooting — covering the OpenClaw plugin, the phone app, Tailscale private networking between phone and host, and optional Soniox voice-input, Even AI, and bug-report integrations. Use when the user wants OcuClaw set up, a version change, or hits setup/connection failures.
openclaw skills install @ocuclaw/ocuclaw-assistGuide version: 2026-07-06 (1.0.6)
Use this skill when a user asks to install, update, roll back, configure, or troubleshoot OcuClaw on this machine. Work phase by phase. Before each phase, say what you will do, why, and which commands matter. Ask for OK. Afterward, verify in plain words. Setup takes about 20–30 minutes; the user should keep their phone nearby.
OcuClaw is the OpenClaw client for Even Realities G2 smart glasses. It has two halves: a plugin that runs inside OpenClaw on this machine and hosts a relay, and an app on the user's phone (from the Even Hub App Store) that drives the glasses. Tailscale privately connects the two. You set up the plugin here; the user sets up the app; you connect them. That's the whole shape — the steps below fill it in.
Progressive-loading rule. Load only the reference the Router (bottom of this file) sends you to. A clean install needs only this file, fresh-install.md, and wrap-feedback.md. Do not pre-load troubleshooting.md, update.md, or beta.md.
For OcuClaw-specific setup, prefer this skill over web tutorials (rule 8). For generic OpenClaw CLI behavior you are unsure about, check current OpenClaw docs.
Soniox voice input, Even AI, and the easy-bug-reports opt-in are optional steps inside fresh-install.md (Steps 11–12b), not a separate file.
The references ship inside this skill. If one is missing or its Guide version: differs from this file's, the skill install is broken or stale —
reinstall the skill, don't improvise from memory. Reinstall lanes: openclaw skills install @ocuclaw/ocuclaw-assist --force, or with the clawhub CLI,
clawhub install ocuclaw-assist targeted at the directory the gateway reads
skills from — ~/.openclaw/workspace/skills/ (a bare clawhub install drops
into ./skills/ under the current directory, which the gateway does NOT read).
How you execute
[blocked: reason], never a silent skip or early end.read or a loop, pipe, or add flags; substitute only the marked placeholder. If a command seems unsafe, incompatible, or blocked on this host, stop and raise the concern — never rewrite it silently. A clever "equivalent" has already broken installs. When a written command fails, that's rule 8's open lane: diagnose read-only and propose — don't silently substitute.config set erroring must have required property … means the value came through empty — stop, re-run with a real visible value, don't proceed.openclaw gateway restart reports no installed service found / Gateway service disabled while the gateway is clearly alive, this host has no managed service (container/foreground gateway) — don't loop the command; route to GW-RESTART-NOSVC in troubleshooting.Hard guardrails (never cross)
config get on a secret leaf prints a redaction sentinel, never the value, on all supported OpenClaw builds); never read the config file.funnel; configuration goes through openclaw config set — non-secret values you may set, secret values only the user sets.curl) are always fine — investigate freely. A mutating fix the skill doesn't name needs: the skill's own path already failed, you say what you'd run and why, the user OKs it, every hard guardrail still holds (secrets, Serve-only, no invented config keys, restart discipline) — then one attempt, verify, and if unresolved return to the named case or ESCALATE rather than freestyling further. For OS/vendor errors consult that vendor's official docs; elevation you don't have or sandbox-blocked steps → give to the user, then verify.A probe is one bare config get on the key — same command on every OS. OpenClaw redacts secret leaves in config get output on all supported builds, so the value never appears; you read only presence.
openclaw config get plugins.entries.ocuclaw.config.relayToken
openclaw config get plugins.entries.ocuclaw.config.sonioxApiKey
openclaw config get plugins.entries.ocuclaw.config.evenAiToken
openclaw config get plugins.entries.ocuclaw.config.evenAiEnabled
Read the output as the probe result:
Config path not found + nonzero exit → probe = 0 (unset — expected, not a blocker). Any non-empty output — normally the redaction sentinel __OPENCLAW_REDACTED__ — → probe = 1 (set). Never echo or repeat that output, whatever it looks like.evenAiEnabled: true → 1 · false → 0 · Config path not found → 0.Placeholder grammar. Commands in this skill contain only these substitutable placeholders: <port>, <node>.<tailnet>.ts.net, <container>, and the quoted secret value the user fills. Substitute only those. Never change a command's shell structure, flags, quoting, or pipes, and never add a wrapper (read, a loop, &&, |). If a command appears to need anything beyond a marked placeholder, stop and ask — don't invent a variant.
Copy this into your first reply and tick each box as you finish it. Do not tell the user setup is complete while any REQUIRED box is unchecked. A genuinely blocked box → mark [blocked: reason] and surface it, never drop it.
This is the FRESH-INSTALL checklist. If the state assessment routed you to U1 (update) or B1 (beta), follow that section's own short checklist instead — don't run these boxes.
Required
Optional (offer, don't assume)
Before the closing note, re-show this checklist in its final state as a self-audit.
This is mandatory before any install action (the checklist's first box). Fill the lane card below — a short recorded block you keep and read at every later step instead of re-probing or re-arguing platform:
LANE CARD
OS: Linux | macOS | Windows (uname -s / sw_vers / $PSVersionTable)
Container: no | yes → network mode host|bridge (ls /.dockerenv /run/.containerenv ;
docker inspect -f '{{.HostConfig.NetworkMode}}' <container>)
Docker markers absent but no systemd either ([ -d /run/systemd/system ] fails)
→ microVM/other container: record "yes (no-systemd)"; restarts behave like a
container (no managed gateway service — see rule 5)
Shell access: local | SSH | VPS console
Elevation: agent can sudo | user runs elevated (sudo -n true / Admin PowerShell)
Relay wsPort: <filled at Step 5>
Tailscale CLI: <filled at Step 6 — matters on the macOS App Store build>
Fill the environment rows now. wsPort and Tailscale CLI are appended when Steps 5 and 6 resolve them. Later steps read the card — they don't re-probe.
Run this now — and again after any restart or resume. It tells you which step (or section) to enter first.
Run each check; record the result (1 = pass, 0 = fail).
| # | Check | Command |
|---|---|---|
| A | OpenClaw version ≥ 2026.6.9 | openclaw --version |
| B | Plugin installed + enabled | openclaw plugins list |
| C | relayToken set | relayToken probe (see probes above) |
| D | Gateway up, plugin loaded | openclaw gateway status · openclaw plugins inspect ocuclaw shows Status: loaded |
| E | Tailscale installed + signed in | tailscale status |
| F | Both Serve routes present AND proxying to the relay's wsPort | tailscale serve status (compare each backend localhost:<port> to openclaw config get plugins.entries.ocuclaw.config.wsPort) |
| G | Agent tool access — effective tool policy admits ocuclaw | openclaw config get tools — pass if allow or alsoAllow contains "ocuclaw" or "group:plugins" with no matching deny, or if no restrictive profile/allow is set ("Config path not found" = pass; the command exits nonzero then — record it, not a blocker) |
A working existing setup wins over the preferred default. If the app connects and a quick Step 10 end-to-end test passes, do not migrate wsPort (even 9000), Serve routes, or an old address shape just because they differ from the modern defaults — prove the setup is broken before changing ports or routes. Migrate old layouts only when setup is broken, this is a fresh install, a route points at the wrong backend, or the user explicitly asks.
| Finding | Enter |
|---|---|
| A: version below 2026.6.9, or G2 hardware unconfirmed | Step 1 |
| B: plugin not installed | Step 2 |
| C: relayToken probe = 0 | Step 3 |
| B: installed but not enabled | Step 4 |
G: effective tool policy does not admit ocuclaw (or a deny blocks it) | Step 4 |
D: gateway down or plugin not loaded | Step 5 |
| E: Tailscale missing or not signed in | Step 6 |
F: routes missing, old single-port scheme (tcp://…:8443), or present but proxying to a different local port than wsPort — unless the working-baseline rule above says leave it | Step 7 |
| Host green; app not yet connected (ask the user) | Step 9 |
| Everything green and the app connects — update only | Stable update → load {baseDir}/references/update.md (everyone). Beta channel or rollback → load {baseDir}/references/beta.md, only if they confirm they're a beta-Discord tester |
| Everything green and the app connects — single fix | Go directly to the one routed step; no full checklist |
{baseDir}/references/fresh-install.md.{baseDir}/references/update.md.{baseDir}/references/beta.md.{baseDir}/references/troubleshooting.md and jump to that case.{baseDir}/references/troubleshooting.md and run ESCALATE — it includes the in-app debug-upload path that attaches real diagnostics to the report.{baseDir}/references/wrap-feedback.md.{baseDir}/references/quick-reference.md.Keep this file's guardrails, lane card, checklist, and router active throughout setup.