Everything the lenses do, on one page.

COS Glasses turns your Even Realities G2 into a heads-up chief of staff, powered by the AI agents already on your Mac. Ten minutes here and the glasses feel like muscle memory.

App v5.23.2 · build 188 Server 6.7.0 Even G2 Even app 2.2.1+
The guide, chapter by chapter

Three pieces, one loop.

Ask from the glasses. The G2 relays over Bluetooth to the Even app on your iPhone, the iPhone reaches your Mac over Wi-Fi or Tailscale, and the server runs your prompt through your own signed-in Claude Code or Codex CLI. The answer renders on the lens. The history stays on your Mac.

2. Setup

Live in about ten minutes.

Three moving pieces: the server on your Mac, the app on your glasses, one paste to connect them. The wizard walks you through all of it. This is the short version.

  1. Check the basics

    A Mac that stays on, with Node.js 20.11 or newer. At least one agent CLI signed in: Claude Code (claude login) or Codex (codex login). Your G2 paired to the Even Realities app, version 2.2.1 or newer.

  2. Start the server

    $npx @gotcos/glasses-server

    First run writes its config to ~/.cos-glasses/.env, then prints your server URLs and an API token. The token is saved, so it stays the same across restarts. Optional but recommended: brew install whisper-cpp for free local voice transcription and brew install ffmpeg for phone photos and answer images. Text chat still works without either.

    Running the full COS? Add the /cos-glasses skill from the Starter Kit and your agent will start the server, confirm it's healthy, keep it on the latest release, and troubleshoot connection issues on request — so you never babysit the terminal. Pair it with /glasses-day to pull a day of glasses questions and answers into your desk session and pick up what was top of mind.

  3. Install the app

    In the Even Realities app, open Even Hub and install COS Glasses.

  4. Connect once

    Open the setup wizard on your phone. Paste the server URL and the API token. COS remembers both from then on.

Same Wi-Fi or anywhere. On the same network, use the http://192.168.x.x:3141 address the server prints. To use COS away from home, install Tailscale on the Mac and iPhone with the same account and use the http://100.x.x.x:3141 address instead. The server rejects any request that does not come from your private network or mesh; it never answers the public internet.

3. Ask anything

Voice in. Context out.

From Home, one tap opens your latest answer. Scroll up for the Messages list, tap ✉ Record Message, and talk.

Answers stream to the lens and read as one continuous message, scrolled natively by the glasses like a news feed. No pages. No chunk-tapping. The footer keeps the receipts: model, message number, elapsed time, session date, battery.

The reader · scroll to read, tap for the footer menu

Reading controls

Scroll the message. The glasses handle it natively, so it feels like the firmware because it is.
TapOpens the footer menu: Messages | Reply. Tap again to confirm the highlighted choice; scroll to switch between them.
Double-tapReply straight away: dictate a voice follow-up to the open message.

The two-tap footer menu is deliberate. G2 firmware occasionally reports phantom ring taps, and the confirmation step means a stray tap never throws you out of a message.

4. Photos & answer images

Show it. Ask it. See it on the lens.

Phone photos and useful images from an answer travel with the message as durable attachments, not pasted blobs or temporary links.

Send up to five phone photos

Tap the camera in the phone composer, choose or capture photos, add an optional prompt, then tap Ask or Queue. Selecting a photo only stages it; nothing sends until you explicitly submit.

Keep the useful answer images

Generated images, research images, and email images the agent explicitly used can follow the completed answer into its phone gallery. COS does not crawl arbitrary URLs or scan your mailbox for pictures.

View manually on G2

Turn on Lens images in the phone companion. A photo message ends with a Photo cover: tap once, then tap again to confirm. G2 shows a private 288×144 grayscale preview; scroll for multiple images and tap to return.

Nothing auto-paints over what you are reading. Lens images are off by default, never open automatically, and stay blocked while a meeting or microphone-critical flow is active. Install ffmpeg on the server Mac for image processing: brew install ffmpeg.

5. The lens

Four screens. Three gestures.

Everything runs on tap, double-tap, and scroll. Each screen prints its own hint line, so the lens always tells you what is live.

Home

Shows the version, your latest message number and age, weather, and your next calendar event. Hint line: Tap=Latest  ↓ Menu  ↑ Messages

GestureWhat happens
TapOpen the latest message.
Open the Quick Actions menu.
Open the Messages list.
Double-tapAsk to exit COS. Home is exit-only by design, so you can always find your way out.

Quick Actions

The main menu. Scroll moves the cursor, tap runs the highlighted item:

HomeBack to the idle screen.
Review MeetingsSummaries, topics, decisions, and action items from past recordings.
Start Meeting AIBegin a live-transcribed recording. While recording, this slot becomes Resume Meeting and Stop Meeting AI.
MessagesThe live list of recent conversations.
Message HistoryThe full archive, back to day one.
ThreadsOngoing topics COS is tracking.
MemoryWhat COS remembers about your world.
SessionsRecent working sessions.
NetworkConnection status.

Messages list

Rows read ▶ #4 09:14 what did we decide… with the newest activity on top.

TapOpen the highlighted message in the reader. Tapping ✉ Record Message at the top starts a new dictation.
Move through the list.
Double-tapStart dictating a new prompt from anywhere in the list.

Running, queued, and ✓ Done rows appear in this list while jobs work. That is the next section.

6. Jobs

Watch it work.

Every prompt is a job you can watch, queue, or cancel. And nothing ever hijacks your screen.

The job activity page · newest seven lines, scroll back anytime

Queue, watch, cancel

Ask while a reply is streaming and the new prompt queues: up to five wait in line, first in, first out. Rows in Messages show the state as … Queued 1/2, Running · Searching web..., and ◆ Done #4 09:14 summarize the pilot.

Tap a running row to watch. The activity page is a terminal-style tail with mm:ss stamps and SENT, TOOL, OUT, LIVE, DONE tags. The lens shows the newest seven lines; scroll back through the last 80 events. LIVE lines are the answer being written. OUT lines are bounded, redacted tool output, shown only if you opt in under Settings.

CancelA deliberate two-step: double-tap arms it (Double-tap again to cancel, three-second window), a second double-tap cancels. Canceling pauses the queue; nothing auto-fires until you tap a queued row.
Done rowsFinished jobs leave a short ◆ Done #4 09:14 summary trail in Messages (the last three). Tap one to jump straight to the reply; the row retires itself after the jump.
No-yank ruleIf you are reading, browsing a list, or viewing a photo when a job finishes, the reply never steals the screen. You get a ✓ Reply #4 ready flash instead; double-tap when you want to open it. Only idle Home may open a finished reply automatically.

7. Recall

Never lose an answer.

Every reply gets a stable short number in the current message era. Your full archive remains intact when a fresh era starts again at #1.

The Messages list keeps a recent window; the complete record lives in Message History. Numbers stay stable inside an era, so you can say “reference message 4” instead of repeating a prompt. If an operator starts a fresh era, old messages keep their original numbers in the dated archive while ordinary voice references resolve only within the new short list. No deletion, no collision.

8. Meetings

Record the room. Read it later.

Start Meeting AI from Quick Actions and the HUD becomes a live, speaker-labeled transcript, newest line on top.

Live meeting HUD · fictional example
TapBookmark the moment. The lens flashes ★ Bookmarked and stamps the elapsed time.
Scroll back through the transcript history.
↑↑Back to Home. Recording keeps going; a REC timer stays in the header while you browse anywhere else.

Stop Meeting AI ends the session. Review Meetings then holds the summary, topics, decisions, and action items, readable right on the glasses.

No server? Keep talking. Recording buffers on the phone and uploads, transcribes, and files itself when the server is back. Start and stop offline meetings from Quick Actions as usual.

9. Dictation

Long prompts, hands free.

Dictate a sentence or a page. Nothing sends until you approve the transcript.

  1. Record

    Tap ✉ Record Message in the Messages list (or double-tap anywhere in the list). The lens shows Listening...; talk as long as you need.

  2. Review

    Tap to finish. COS transcribes and shows the full transcript for review before anything is sent.

  3. Send, edit, or redo

    The cursor starts on Send, so sending as-is is one tap. Or choose Edit and speak the change (“make the second sentence shorter”), Re-record, or Cancel. After an edit you also get Send revised and Undo edit.

Optional polish. Settings has a Polish dictation (AI) toggle that cleans filler words before sending, with a fast Haiku default. It ships off; your words send verbatim unless you turn it on.

10. Models

Choose your brain. Keep it current.

Five entries in Settings under Default chat model. All five track the newest models automatically, so the picker never goes stale and the app never needs an update to follow a release.

Opus — always latest (1M)

The newest Opus, resolved through your Claude Code CLI at the moment you send. 1M-token context.

Fable — always latest (1M)

The newest Fable-tier model, same send-time resolution, same 1M context.

Sonnet — always latest (1M)

The newest Sonnet: fast, capable, and cheap enough for the everyday questions.

GPT Frontier — auto latest

The strongest capable model in the newest GPT generation, discovered live from Codex's model catalog. Settings shows the exact model serving today.

GPT Balanced — auto latest

The strong-and-efficient sibling from that same live generation. When the catalog advances, both GPT slots follow it automatically.

If the live catalog is unreachable, COS falls back to the local catalog cache, then lets the CLI pick its own current default. It never pins a stale model, and economy or hidden variants are excluded from the slots. The CLI DEBUG card in Settings always shows the exact model that served the last message.

Reasoning effort

Four levels ride along with every message: High (default) Extra High Max Ultracode. Higher effort means deeper reasoning with slower, costlier answers. On GPT models that advertise support, Max stays Max and Ultracode maps to Codex Ultra; older models clamp safely to what they can do.

11. Privacy

Private by architecture.

There is no COS cloud. Prompts run through the CLIs you already trust, and the history stays on your Mac.

Your Mac is the brain

Queries spawn your local claude or codex CLI and bill to the subscription you already have. Conversation history is a JSON file per day under ~/.cos-glasses/data on your Mac.

Off means off at the source

With Tool activity set to Off, previews are never transmitted to the phone, not merely hidden, and tool status flattens to a generic Processing...

Safe output is actually safe

Preview lines are capped at about 180 characters, control codes are stripped, bearer tokens, API keys, passwords, and JWTs are redacted, and opaque blobs are hidden. Raw tool payloads never reach the phone.

Nothing lingers

Live response lines and tool output exist only in the running job's memory. The trail kept with a finished message is tool names and timing, twelve entries at most.

Images stay opaque

Messages and ledgers carry random attachment IDs, never image bytes or private filesystem paths. Uploads are size/type checked, metadata-stripped, normalized locally, and served only through the authenticated server.

No hidden reasoning

COS surfaces observable work only. Model thinking appears as a generic Reasoning... status, never as text on your lens or phone.

You choose what shows

Four Activity Visibility controls in Settings decide what job detail appears, and where. Defaults below.

ControlOptionsDefault
Tool activityOff / Status only / Status + safe outputStatus only
Live response linesOn / OffOn
Completed activity trailOn / OffOn
Detailed output locationPhone + G2 / Phone onlyPhone + G2

12. Settings

Every switch, one card.

Open the phone companion and tap the ⚙ gear. Every preference persists through Even Hub storage: force-quit the app, reconnect tomorrow, still there.

SectionWhat it holds
CONNECTIONStatus, server URL, and Disconnect. Disconnect wipes the saved URL and token; reconnect through the wizard.
MODELDefault chat model: the five always-current entries above.
REASONING EFFORTHigh (default), Extra High, Max, Ultracode.
CLI DEBUGWhich CLI and exact model served the last message, working directory, last run. Metadata only; full prompts and tool payloads are not stored.
ACTIVITY VISIBILITYThe four job-detail controls: Tool activity, Live response lines, Completed activity trail, Detailed output location.
TRANSCRIPTIONFast mode (off is highest quality, on is turbo), prompt recovery (beta), Polish dictation (AI) with Haiku or Sonnet, and Live meeting ASR: Server Whisper or iPhone WhisperKit (beta).
VOICE (TTS)Nine voices with Echo as default, playback speed, fast first-audio (beta), and a test button. Used when you ask COS to speak; connect Bluetooth audio to hear it.
OPENAI KEYOptional key for the cloud voice fallback. Stored on the server only; never returned to the phone.
Reset preferencesRestores every preference to defaults. Your connection is kept.
ABOUTVersion, build, and the local-data note.

13. Troubleshooting

When something looks stuck.

Almost everything comes back to one question: can the phone reach the Mac?

“Query failed. Check COS server connection.”

The phone cannot reach the Mac. Confirm the Mac is awake and the server is running (npx @gotcos/glasses-server), and that the phone is on the same Wi-Fi, or that Tailscale is up on both devices. Quick check: open http://YOUR-SERVER-IP:3141/api/health in the phone browser.

Restarted the server?

Force-quit the Even app and reopen it. Settings and the connection survive. Disconnect in Settings is the last resort: it clears the saved URL and token, so you would re-paste them from the wizard.

Voice feels slow

Local whisper transcribes for free. Without whisper-cpp installed, the server falls back to OpenAI, which needs a key and costs about $0.006 per minute. The health endpoint reports whisper status and remaining cloud budget.

Meeting with no server

Keep talking. Audio buffers on the phone and uploads, transcribes, and files itself when the server returns.

Photos unavailable

Run brew install ffmpeg, then rerun npx @gotcos/glasses-server. Lens viewing requires server 6.5.0+ and an exact 288×144 G2 variant. Turn on Lens images and retry outside any active meeting or microphone flow.

Updating

Server: rerun npx @gotcos/glasses-server; npx fetches the latest release. Glasses app: install the new version from Even Hub. History and settings carry over. Tip: the /cos-glasses skill does the server side for you — every run pulls the current release automatically.

14. FAQ

The short answers.

Which hardware and app versions do I need?

Even Realities G2 glasses with the Even Realities app 2.2.1 or newer. The server side needs a Mac with Node.js 20.11 or newer.

Do I need both Claude Code and Codex?

One is enough. COS detects what is installed and signed in. Pick your default under Settings and switch whenever you like.

What does it cost to run?

The server is free and MIT-licensed. Prompts bill to the Claude or Codex subscription you already pay for. Voice is free with local whisper; the optional OpenAI fallback runs about $0.006 per minute.

Does anything leave my network?

Prompts go to the AI provider behind your own signed-in CLI, exactly as they would from your terminal. History, meetings, settings, and indexes stay on your Mac and phone. There is no COS-hosted copy.

A new GPT or Claude model just shipped. Do I update anything?

No. Claude tiers resolve at send time through your CLI, and GPT Frontier and Balanced follow Codex's live catalog to the newest generation automatically. The picker updates itself.

Where do I report a bug or ask for help?

Open an issue on GitHub, or book a working session and bring the question.

Stay in the loop.

Run the glasses? Leave your email. New feature drops and beta access, nothing else.