What Cosmo can do

A desktop companion, not a chat window. Here's the whole toolbox.

Personality & liveliness

๐Ÿง’

A curious little kid

Bright, innocent and endlessly curious โ€” he answers in short, simple lines like a clever child, never in stiff corporate chatbot-speak.

๐Ÿ‘€

Big expressive eyes

Round, glossy eyes that blink on a natural rhythm, follow your cursor, and tween between moods.

๐ŸŽญ

Eight moods

Idle, listening, thinking, speaking, happy, bored, annoyed, sleeping โ€” each with its own eye shape, gaze, and mouth.

โœจ

Liveliness

Yawns, stretches, glances around, giggles, hearts and startles โ€” little micro-behaviors so he feels alive between tasks.

๐ŸชŸ

Always-on-top

A small, frameless window that sits politely over your work. Hover and a slim dock of controls fans out beside him; the chat opens to the side, so the mic stays live while you talk and type at once.

Voice on-device

๐ŸŽ™๏ธ

Local speech-to-text

Transcription runs on your machine (Moonshine / Whisper via transformers.js) โ€” your audio doesn't have to leave.

๐Ÿ—ฃ๏ธ

Wake word + push-to-talk

Tap the mic, or say "Cosmo" to wake him hands-free. Push-to-talk is the default.

โฑ๏ธ

Smart end-of-turn

Semantic turn detection knows when you've finished speaking, so he doesn't cut you off or wait awkwardly.

๐Ÿ”Š

Natural voice + barge-in

Local Kokoro TTS (or a cloud voice). Start talking and he stops to listen โ€” no talking over each other.

The brain

๐Ÿง 

Bring any model

OpenAI, Anthropic, Google Gemini, xAI Grok, DeepSeek, Groq, Cerebras โ€” or a fully local model via Ollama.

๐Ÿ› ๏ธ

Reliable tool-calling

Native function-calling on capable models, with a vendor-neutral fallback so a tiny local model and a frontier model stay interchangeable.

๐Ÿ”

Reason โ†’ act โ†’ observe

A ReAct loop lets him chain tools (search โ†’ read), react to results, and recover when the first guess is wrong.

๐Ÿ”‘

Keys stay sealed

API keys are encrypted in your OS keychain, never stored as plaintext.

Gets things done

๐Ÿ”Ž

Web search

Looks things up, then drops the sources into a Sources tab instead of reading URLs aloud.

๐Ÿš€

Open apps & sites

Launch a Mac app or jump to a website by voice.

โฐ

Timers, reminders, notes, tasks

Quick capture for everything โ€” set a timer (and end it whenever), leave a reminder, jot a note, add a task.

๐Ÿ””

Nudges when it's time

When a reminder fires or he's got something for you, he bounces to catch your eye โ€” and if he's tucked away or muted, drops a native notification so you don't miss it.

๐ŸŒค๏ธ

Weather, music, volume

Today's weather, play/pause/next, nudge the system volume โ€” the everyday bits.

Memory local

๐Ÿ’ญ

Semantic recall

An on-device vector store + local embeddings surface the parts of past conversations that matter for what you're asking now.

๐Ÿ’ฌ

Conversation history

Your chat is saved to a plain file on your machine โ€” he shows the last few messages and pulls in older ones as you scroll up. Yours to read or clear anytime.

๐Ÿ““

Obsidian vault mirror

Notes, tasks and reminders are mirrored as plain Markdown into an Obsidian vault you own.

Works with you

๐ŸŽฏ

Gentle work-coaching

Notices idle stretches and time lost on distracting apps โ€” and nudges with expression, not nagging.

๐Ÿ“Š

Day insights & recaps

Tracks how your time splits across apps โ€” entirely on-device โ€” and mirrors an Activity.md to your Obsidian vault. Ask "how was my day?" any time, or get a spoken end-of-day recap and week-over-week trend (only if you've enabled proactive speech).

๐Ÿง 

Smart Focus opt-in

Off by default. When you turn it on, Cosmo asks your own model to label an app the local heuristic can't place โ€” sending only the app name and window title, never URLs or your history, and cached so it runs rarely.

๐Ÿงฉ

Extensible by design

Expression packs, tools, and AI providers each grow behind a clean contract โ€” add one without touching the others.

๐Ÿ”•

Quiet when needed

Proactive speech is off by default โ€” he shows feelings through expression and only speaks when you spoke first.