cc-g2 Turns `tmux` Into a Remote Control Surface for Claude Code

A bridge between Even G2 smart glasses and a terminal agent, with voice input, approval routing, and privacy-aware state handling built from surprisingly simple pieces.

9 min read • View on GitHub • More from wmoto-ai

A wide editorial illustration showing a developer wearing smart glasses while a terminal-based control room sits beside them, with approvals, voice notes, and command responses moving through a narrow pipeline into a tmux pane. The image explains that the glasses are not running the agent, they are acting as a remote decision surface for a terminal workflow.
cc-g2 treats the terminal session like a controllable endpoint, then uses the glasses as a lightweight approval and input layer.
Key Takeaways

`tmux` Is the API

Most agent tools try to become the center of the workflow. cc-g2 does the opposite. It leaves Claude Code alone and treats the terminal boundary as the place where control should happen.

That is why the project feels odd in a useful way. Instead of asking Claude Code to expose a special integration surface, it uses tmux send-keys and session metadata to inject replies into the exact pane that is waiting for them.

The result is less elegant on paper and more practical in reality. A familiar terminal primitive becomes the narrow waist of the system, which means the rest of the stack can stay small.

The Bridge Has Three Jobs

The architecture is built around a simple split: the glasses collect intent, the hub manages state, and the terminal session receives the answer. That division matters because it keeps the wearable UI from becoming a logic pile.

The hub is the center of gravity. It mediates live approvals, stores them for recovery, and hands responses back to the right terminal pane.

The interesting part is that these are not just messages. They are routed events with enough context to land in the right place later. That is what makes the system feel like a control plane instead of a chat bridge.

Why `reply-relay.sh` Is the Cleverest File Here

If the architecture is the thesis, reply-relay.sh is the proof. It is the piece that turns a UI tap into terminal input without needing a formal Claude Code plugin API.

A close-up editorial illustration of a tmux pane rendered like a mechanical switchboard. Three inputs, approval, denial, and voice comment, feed into the pane while a relay script hand pushes a wire into the correct slot. The image explains how metadata such as project name, current directory, and process hints are used to find the right terminal session.
The relay script is the hidden muscle. It resolves the target pane, then injects the response back where Claude Code is waiting.

The script’s job is not just to find a pane. It has to find the right pane. That means matching metadata, current working directory, and other process clues so a reply goes back to the Claude session that asked for it, not whichever session happens to be nearby.

That detail changes the story. A toy bridge can forward a message once. A durable bridge can survive multiple concurrent sessions and still hit the correct target.

The Glasses UI Solves a Brutal Constraint

The Even G2 screen is small, and that forces a different kind of product thinking. You do not get room for sprawling context, so the interface has to compress the agent’s state into a few sharp choices.

That is where summaries, approvals, and voice comments matter. The glasses are not a mini IDE. They are a decision surface for the moments when a human needs to answer quickly without sitting down.

This is also why the voice path matters. It turns a tiny display from a dead end into an input channel, which keeps the workflow moving even when the response is more than a tap.

Privacy and State Are Not Afterthoughts

The project does more than shuttle prompts around. It redacts sensitive values, persists events in JSONL, and keeps in-memory session maps so the hub can recover after a restart.

That combination is important. AI glue code often fails in boring ways: leaked fields, lost sessions, and state that disappears when the process restarts. cc-g2 tries to avoid that by treating privacy and recovery as part of the design, not cleanup work.

The redaction logic is especially telling. It suggests the system expects real developer data, not sanitized demos, and it strips risky fields before they reach the wearable UI.

How It Compares

The right comparison is not whether glasses are cooler than a phone. It is whether cc-g2 builds a lighter, safer approval loop than the usual ways people try to remote-control an agent.

ApproachInput surfaceApproval handlingHardware assumptionsMain downside
Plain Claude Code in a terminalKeyboard in the same sessionNative terminal promptsDesktop requiredYou have to stay at the desk
Browser-based agent dashboardWeb UIButtons in a browser tabBrowser and network requiredAdds another control surface and another context switch
Phone-first remote dev toolTouchscreen appMobile approvals and chatPhone app plus backendGood for reach, weaker for glanceability and hands-free flow
Agent integration inside the model or CLICustom API or modified agentTightly coupled to the toolDepends on agent supportHarder to retrofit onto existing workflows
cc-g2Even G2 glasses plus voiceRouted back into the waiting tmux paneTerminal, hub, and wearable UIStill depends on careful session matching and hardware setup

That narrowness is the point. The project is not trying to be a universal developer workspace. It is trying to make one workflow, approval-heavy terminal coding, work when you are not sitting in front of it.

What This Suggests About AFK Coding

cc-g2 points toward a different category of developer interface. Not bigger dashboards. Not more tabs. Smaller control surfaces wrapped around tools that already exist.

That sounds modest, but it is actually a strong product idea. If the agent already lives in a terminal, then the job is not to rebuild it. The job is to make the terminal reachable from wherever the human happens to be.

In that sense, cc-g2 is less about smart glasses than about interface restraint. It shows how far you can get by putting a careful relay layer on top of old primitives and refusing to overbuild the middle.