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.
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.
-
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. -
Start the server
$npx @gotcos/glasses-serverFirst 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-cppfor free local voice transcription andbrew install ffmpegfor phone photos and answer images. Text chat still works without either.Running the full COS? Add the
/cos-glassesskill 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-dayto pull a day of glasses questions and answers into your desk session and pick up what was top of mind. -
Install the app
In the Even Realities app, open Even Hub and install COS Glasses.
-
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.
Reading controls
| ↑ ↓ | Scroll the message. The glasses handle it natively, so it feels like the firmware because it is. |
| Tap | Opens the footer menu: Messages | Reply. Tap again to confirm the highlighted choice; scroll to switch between them. |
| Double-tap | Reply 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
| Gesture | What happens |
|---|---|
| Tap | Open the latest message. |
| ↓ | Open the Quick Actions menu. |
| ↑ | Open the Messages list. |
| Double-tap | Ask 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:
| Home | Back to the idle screen. |
| Review Meetings | Summaries, topics, decisions, and action items from past recordings. |
| Start Meeting AI | Begin a live-transcribed recording. While recording, this slot becomes Resume Meeting and Stop Meeting AI. |
| Messages | The live list of recent conversations. |
| Message History | The full archive, back to day one. |
| Threads | Ongoing topics COS is tracking. |
| Memory | What COS remembers about your world. |
| Sessions | Recent working sessions. |
| Network | Connection status. |
Messages list
Rows read ▶ #4 09:14 what did we decide… with the newest activity on top.
| Tap | Open the highlighted message in the reader. Tapping ✉ Record Message at the top starts a new dictation. |
| ↑ ↓ | Move through the list. |
| Double-tap | Start 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.
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.
| Cancel | A 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 rows | Finished 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 rule | If 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.
| Tap | Bookmark 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.
-
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.
-
Review
Tap to finish. COS transcribes and shows the full transcript for review before anything is sent.
-
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.
The newest Opus, resolved through your Claude Code CLI at the moment you send. 1M-token context.
The newest Fable-tier model, same send-time resolution, same 1M context.
The newest Sonnet: fast, capable, and cheap enough for the everyday questions.
The strongest capable model in the newest GPT generation, discovered live from Codex's model catalog. Settings shows the exact model serving today.
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.
| Control | Options | Default |
|---|---|---|
| Tool activity | Off / Status only / Status + safe output | Status only |
| Live response lines | On / Off | On |
| Completed activity trail | On / Off | On |
| Detailed output location | Phone + G2 / Phone only | Phone + 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.
| Section | What it holds |
|---|---|
| CONNECTION | Status, server URL, and Disconnect. Disconnect wipes the saved URL and token; reconnect through the wizard. |
| MODEL | Default chat model: the five always-current entries above. |
| REASONING EFFORT | High (default), Extra High, Max, Ultracode. |
| CLI DEBUG | Which CLI and exact model served the last message, working directory, last run. Metadata only; full prompts and tool payloads are not stored. |
| ACTIVITY VISIBILITY | The four job-detail controls: Tool activity, Live response lines, Completed activity trail, Detailed output location. |
| TRANSCRIPTION | Fast 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 KEY | Optional key for the cloud voice fallback. Stored on the server only; never returned to the phone. |
| Reset preferences | Restores every preference to defaults. Your connection is kept. |
| ABOUT | Version, 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.