Your glasses remember. This is where you read it.

COS Control is the Mac companion to your glasses. Every question you asked, every voice it learned, every call it saved, and the threads running through all of it, in one window. It also runs the server: one owner, one durable configuration, no terminal after setup. The runtime is still the same open-source npm server.

Six views into the work it already holds.

The companion is the part you actually open.

Every turn your glasses took, with what it was looking at.

Ask a question mid-meeting and the answer is waiting on your Mac afterwards, alongside the photo you were looking at when you asked. An Archive switch lists every older day it has stored and searches the whole store by text. Copy a text handoff into any chat, or bring the images along explicitly.

TODAY · 30 TURNS · MONTHS IN ARCHIVE

Messages#312 · 2:14 PM

What did we decide about the Rain POS migration timeline?

Three calls reference it. The June 4 review moved cutover to Q4, pending the parity list Priya owns. Nothing since has changed that date.

whiteboard-0604.jpg

Meetings to review, then the voices it has learned.

Start with the recordings that still need names. New ones are tagged. Finished ones can be hidden. Unnamed voices sit at the top of a meeting, and Next to name jumps to the next unfinished call. Enrolled voices stay a second tab. A voice it does not recognise is never folded into someone else.

UNNAMED FIRST · NEVER GUESSED

Meetings to review14 recent
Parity walkthrough, Rain POS3 to name
Pipeline reviewnew
Northwind renewalreviewed

Your calls, by the day they happened.

A month calendar, then the day. Open a call for the transcript, the summary, and who spoke. Search everything stored by keyword, or by meaning when you cannot remember the title.

TRANSCRIPT · SUMMARY · COPY

MeetingsAugust

Thursday, August 14

09:00Pipeline review42m · 4 speakers
11:30Parity walkthrough, Rain POS58m · 3 speakers
15:00Northwind renewal27m · 2 speakers

The decisions, not the transcript.

What was settled, what was corrected, and the context worth keeping. Markdown you drop into the folder becomes browsable alongside it. No vector database required to start.

READ ONLY · COPY AS CONTEXT

Memories5,529 stored
decisionCutover moves to Q4Jun 4
contextPriya owns the parity listJun 4
correctionNever quote list price on a renewalMay 22

Work that develops across meetings.

A thread is one piece of work seen across every call that touched it, so you can tell what is compounding from what has quietly stopped. The shape beside each one is its activity over the last seven weeks.

64 TRACKED · 11 ACTIVE

Threads64 tracked
Rain POS parityactive
Q4 pipeline modelslowing
Northwind renewalstalled

Claude, Codex, and Cursor, in one list.

Every agent chat on this Mac, whichever tool started it. Pinned threads stay listed at any age. Open one to read the transcript, or copy a redacted brief to pick the work up somewhere else.

A composer sits under every session. Type a message and it lands in the real thread on your Mac, with the reply back in the pane. Long turns keep running after you close the window. A busy thread offers Retry, or a Fork with this message button that runs your message in a copy while the original stays untouched.

TEXT IN, REPLY BACK · PINNED KEEPS ITS OWN CLOCK

Sessions63 on disk
claudeParity build, Rain POSrunning2m
codexMigration script reviewidle1h
cursorSession search reworkrecentyesterday

Type into the composer and it posts into the real thread. The reply comes back here.

Advanced session orchestration

The pet is not decoration. It is the live map.

When two, three, or four agents are working at once, remembering which window owns which task becomes work of its own. COS turns that sprawl into one visible ledger.

COS session deck4 agents · live
Running 4All systems
CodexRelease checksmu-chief-staff · building
ClaudeControl motioncos-control · refining
CursorAgent routingcos-glasses · wiring
ClaudeDocs launchgotcos-site · verifying
One surface. The real threads.

See the work. Open the work. Write back into it.

The ledger combines the agent sessions on this Mac, shows what is running, finished, or waiting on you, and keeps the workspace visible. Click a row to use the strongest destination that platform exposes. Or open Activity, read the transcript, and send a follow-up into the actual thread without hunting for its window.

CodexOpens the task thread and accepts follow-up messages.Thread route
ClaudeOpens the matching session, or its terminal when Claude Code is running there.Session route
CursorRaises the Agents window, then selects the matching session row.Agents route
LocalOllama appears as a private model family when its local daemon is running.Model route
“I love that I can click on it and it just opens up my running tasks for me. Saves me time.”Early Control user
Optional session pet · five live states

Your session state, at a glance.

Miles switches animations as your workload changes: idle, one, two, three, or four-plus running sessions. When work finishes or needs you, the centered ledger beneath the pet changes to Done or Waiting—so you can read the state without reopening every agent. Choose a bundled character, use a gallery pet, or bring your own sprites and build a custom state pack.

IdleShown with no sessions running8F
Ready
1 sessionShown with one session running16F
Running 1
2 sessionsShown with two sessions running17F
Running 2
3 sessionsShown with three sessions running13F
Running 3
4+ sessionsShown with four or more running26F
Running 4+
Four advanced JediMiles Windu, Nia Solari, Elara Vale, and Rowan Vale ship with authored idle, walking, and workload-specific stories.
300 variety petsChoose from the OpenPets gallery. They stay still, but the live ledger, routing, and session controls remain fully available.
Bring your own spritesUpload a single PNG, or install a custom state pack with separate strips and timing for idle, one, two, three, and four-plus sessions. The live Running, Done, and Waiting ledger stays underneath, keeping completion status glanceable with any art.Build a custom pet pack
Build a custom animated pet pack
  1. Draw each animation as one horizontal PNG strip. Every frame in a strip must have the same width and height.
  2. Add session-pet-states.json to the same folder. Name each file explicitly and declare its frame count.
  3. Use interval for seconds per frame. Use renderScale only when one pose needs visual normalization.
  4. In Control, open Session pet, Character, Install sprite pack and choose the folder.
{
  "poses": {
    "idle":    { "file": "idle.png",    "frames": 8,  "interval": 0.20 },
    "working": { "file": "one.png",     "frames": 12, "interval": 0.12 },
    "duel":    { "file": "two.png",     "frames": 16, "interval": 0.14 },
    "trio":    { "file": "three.png",   "frames": 16, "interval": 0.16 },
    "swarm":   { "file": "fourplus.png","frames": 24, "interval": 0.18 }
  }
}

Complete state vocabulary

A full pack may also define waiting, done, error, attention, and patrol. A strip can contain 1–32 frames. Per-pose renderScale is clamped from 0.5 to 3.0. Missing states fall back safely instead of turning a one-cell image into sliced confetti.

Character size and animation speed remain user settings. The pack's interval establishes authored timing at 100%; macOS Reduced Motion freezes animated strips.

300

Choose a companion that feels like yours.

These are ten of the community figures available inside Control. Every one keeps the same Running, Done, and Waiting ledger beneath it.

Visit the OpenPets gallery
Cloud Puff community petCloud Puff
Raccoon community petRaccoon
Fox community petFox
Penguin community petPenguin
Robot community petRobot
Budgie Berry community petBudgie Berry
Rabbit community petRabbit
Astro Bot community petAstro Bot
Planet community petPlanet
Brew community petBrew

The server appliance COS was missing.

Same server. A native controller around it.

COS Control wraps @gotcos/glasses-server in a small Mac app that adds durable startup, background work, local transcription controls, meeting recovery, safe updates, rollback, and diagnostics that report the system you are actually running.

Verified ownership, scheduled recovery

A managed LaunchAgent owns one verified server process. COS Control will not race a terminal process or seize a port it does not recognize. Scheduled recovery brings the service back without creating a second owner.

Safe updates with proof

Restart is blocked while a recording or job is live. Updates stage an immutable generation, verify the server and agent paths, then switch. If proof fails, the prior verified generation is restored.

Replies that survive the phone

Accepted replies can keep running on your Mac while you browse, lock the phone, or close COS. One machine-wide Background jobs switch controls every connected device. Applying a change drains active work, restarts safely, verifies the capability, and rolls back if proof fails.

Live meetings without the six-second wait

Meeting Turbo preview renders provisional text from the still-open phrase, then gives way to the canonical speaker-attributed Large-v3 transcript. The machine-wide switch is default-off, persists through managed updates, and can be disabled immediately without touching saved audio, recovery, or polish.

Fast preview, authoritative transcript

Choose Balanced or Max and see the effective model for every lane. A low-latency preview shows what COS hears while you dictate. The authoritative live commit replaces it, and saved meetings receive full local polish. Canonical work always gets priority over provisional preview.

Meeting safety you can see

Control reports active recordings, HQ polish, retained batches, and unsaved captures instead of hiding them behind a generic healthy light. Restarts stay locked while durable work is active, and recoverable captures remain visible before retention expires.

Cleaner review audio, raw always preserved

An optional, default-off Adaptive replay switch cleans retained audio only after you press Play. The immutable raw WAV stays authoritative and remains an exact bypass. Live recording and transcription preempt cleanup, and failed cleanup immediately falls back to raw playback.

One Activity workspace

Messages, Speakers, Meetings, Memories, Threads, and Sessions open together in a resizable window. Messages keeps a Recent and an Archive view, so older stored days stay browsable and searchable. Speakers starts on Meetings to review: unnamed first, hide reviewed, and Next to name. Meetings has a day calendar, transcript, summary, and copy, plus keyword and meaning search across stored calls. Lookup on Meetings, Sessions, Memories, and Threads can sort Newest, Oldest, or Best match next to Domain. Peer tabs, Home, Back, and scoped breadcrumbs keep your place clear. Closing Activity stops voice playback, and a late server response cannot replace the newer record you selected.

Sessions from Claude, Codex, and Cursor

Sessions lists chats from this Mac. Updated and Opened look back 7 days. Pinned is its own clock: ChatGPT/Codex pins, Claude Desktop stars, and Cursor sidebar pins stay listed at any age, including Desktop-only Claude chats. Keep-warm ready rows stay out. Search matches sidebar titles and recent transcript bodies. Click a row for the transcript and a composer: a message you type lands in the real thread, and the reply comes back in the pane. Long turns keep running after the window closes. Busy threads offer Retry or Fork with this message. Copy session puts a redacted kickstart brief on the clipboard.

GOT COS, once the panel is open

The menu bar still uses eyeglasses for a running or offline glance. Open Control or Activity and the GOT COS lockup is the brand. Headings use Fraunces, UI copy uses DM Sans, and chrome numbers use JetBrains Mono — the same trio as this site.

A Voice Directory with evidence

Browse every enrolled voice with training-sample provenance, attributed and review segments, meeting count, last seen, and a segment-weighted observed match. Open a person to see recent meeting appearances. Unidentified voices stay grouped by meeting and are never combined into a false global identity.

No lock-in

The runtime is the same @gotcos/glasses-server. Already run your own? COS Control can manage it in place, with no reinstall and no re-pairing. Quit any time and go back to the plain npx command.

Work Folder

Under Tools, Work Folder is your COS project root: the workspace Claude, Codex, and Cursor search and edit. It does not move the managed server package. Each person’s COS can live anywhere; pick the folder that matches yours. Managed servers reload safely; older adopted servers show the selection as pending until a safe restart is available.

Your existing meeting library

Choose the folder you already use for meetings. The recommended path directly contains YYYY-MM/*.md. If you already maintain several libraries, choose their parent; every folder name is customizable and only needs meetings/YYYY-MM/*.md inside. Direct libraries stay read-only, while existing operations pipelines keep enrichment and writes.

Memory and Threads, proved locally

No vector database required. Create Folders makes memory/ and threads/ where COS already looks, and any markdown you drop in becomes browsable. The Activity workspace opens the same read-only Memory and Thread records your glasses show, with Copy as Context and Reveal in Finder for file-backed notes. COS Data still points at a full Python workspace when you have one, and Control verifies the bridge, protocol, and authenticated route before saving. The panel names the resolved folder, and a store that exists but is empty reads as healthy rather than broken.

Today's glasses turns, with their photo context

Recent Glasses lists the last 30 turns from today, restores validated photo thumbnails, and opens a full local preview. Copy a text-only handoff, or explicitly choose Copy + images to bring up to five local images into another chat. Images remain on your Mac, and old privacy eras fail closed.

Local models through Ollama

COS can run replies on a local model through Ollama. When a local daemon is live with a pulled model, About shows an Ollama row naming the model and Doctor confirms it. A Mac without Ollama shows nothing, because nothing is missing.

Live sessions on the desktop

Running, Done, and Waiting sessions from Codex, Claude, Cursor, and local models stay visible when Activity is closed. The ledger shows what is active, finished, or waiting on you at a glance. Click a session to open the right thread or app, or send a follow-up directly from Activity. Choose one of four animated Jedi, any of 300 community pets, or install your own sprite pack. Pet size, scale, and speed are adjustable, while every character keeps the same session controls underneath.

Real agent readiness

Control checks Claude, Codex, and Cursor separately, shows their actual local versions, and distinguishes connected, available but untested, and failed states. That gives support something concrete to debug instead of a generic server health result.

Two ways to run COS.

Same server underneath. Pick the front door.

The glasses talk to @gotcos/glasses-server either way. Run it as a managed Mac app, or keep it in the terminal. Nothing about your data or setup changes.

Public npm server

Best for developers and existing setups. The foreground workflow stays fully supported and unchanged.

$npx --yes @gotcos/glasses-server@latest --setup-transcription --transcription-tier balanced

Install in five moves.

Download, approve once, guided setup, point your folders, and let the pet jump.

  1. 1

    Download and unzip.

    Move COS Control into your Applications folder.

  2. 2

    Approve the first launch.

    COS Control is open source but not notarized yet, so macOS flags it as an unidentified developer. Clear the download flag once in Terminal, then open it normally: xattr -dr com.apple.quarantine "/Applications/COS Control.app" Prefer clicks? Open the app, then in System Settings under Privacy & Security click Open Anyway.

  3. 3

    Run Guided Setup.

    Choose Balanced (recommended) or Max. COS Control checks whisper.cpp, verifies free disk space, and provisions the selected local models without interrupting the running server. When it finishes, Install or Update Server if offered, then Apply the tier for a verified restart. Then use the setup wizard profile step to add names and specialist terms; factory placeholders are ignored.

  4. 4

    Point COS at your folders.

    Set Work Folder to your agent workspace. For Meetings Library, choose the folder that already contains your YYYY-MM/*.md meeting folders. That is the recommended setup. If you keep several custom-named libraries, select their parent instead. Control detects both layouts and lets you skip if you only want new standalone recordings.

  5. 5

    Only if you want the pet: allow Accessibility.

    The desktop pet can jump you straight into the session you clicked, in Claude, Codex, or Cursor. macOS treats moving another app's window as automation, so that one feature needs Accessibility. Turn the pet on in Settings and COS Control asks for it and opens the right pane for you; approve it there and you are done. If a jump ever reports it could not select the session, the grant was dropped: toggle COS Control off and on under System Settings, Privacy & Security, Accessibility, then reopen COS Control.

    Skipping this costs you nothing else. Accessibility gates the pet's jump and nothing more. Meetings, transcription, the server, Activity, and search all work without it, so leave it off if you do not use the pet.

“Apple could not verify” on first open? Expected, and safe. COS Control is not notarized yet, so macOS treats it as an unidentified developer. The step 2 command (or System Settings, Privacy & Security, Open Anyway) clears it in one move. Notarization is on the way.
Open System Settings, go to Privacy & Security, scroll to Security, and click Open Anyway.
What you need. macOS 14 or later on Apple Silicon, Node.js 20.11 or later, whisper.cpp plus about 6 GB free for adaptive local transcription, and at least one harness: Claude Code, Codex CLI, or Cursor Agent (agent). One harness is enough. Doctor checks all three and tells you which are ready.
Already running COS in Terminal? Stop the foreground server with Control-C before installing the managed service. COS Control refuses to take over a process it does not own, so your jobs and recordings stay safe.

Take the terminal out of the loop.

Install once and the server just runs. Update, diagnose, and recover from the menu bar, with the same open-source runtime underneath.