cenno gives MCP agents a polite way to reach you: a small panel slides over your work — without stealing your keyboard — you tap or type, and the agent gets a structured answer back.
Apple Silicon · macOS 12+ · free & open source · v0.3.1 · release notes
$ claude "interview me — learn my preferences"
⏺ cenno · ask_user
Live demo — answer it yourself, or let it play.
What it looks like
Fare un cenno — Italian: to give a small sign. To nod, to mention briefly, to beckon silently. That's the whole interaction model: agents make a small sign, you answer with one.
How it works
Claude Code, Claude Desktop, OpenClaw, Hermes, or any other agent that speaks MCP calls the ask_user tool — text, choice, scale, or confirm.
A non-activating macOS panel floats above your work. It never grabs your keyboard — you answer when you glance at it, not when it interrupts.
The agent receives {answer, via, elapsed_s} — typed results, not parsed strings. Timeouts are part of the contract.
Sound-out
When you're not looking at the screen, cenno reads the prompt aloud — then waits, the same as always.
A neural voice (Supertonic) runs fully local — nothing is sent anywhere. Or use the fast built-in macOS voice. Ten voices to choose from.
You set the bar: speak only high-urgency asks, or everything. The agent marks each prompt's urgency; a short say line is read instead of the full text.
Pick the voice and the audio output device. Off by default — a single switch in cenno's settings turns it on (and off again) whenever you want an ear on your agents.
Same line, ten styles in the app (F1–F5, M1–M5). Generated fully on your Mac — no cloud, no API key.
iPhone & Apple Watch · in testing
When you step away from the Mac, cenno can hand the question to your phone or Watch. The agent asks once; you answer wherever you are, and the result flows back the same way.
Prompts travel through your private iCloud (CloudKit). The developer never sees them — same local-first promise as the Mac.
Per device: off, fallback (only if you don't answer on the Mac in time), or mirror (live). iPhone fallback by default; Watch off until you turn it on.
Park an old iPhone on your desk as an ambient display — it shows a quiet clock until an agent needs you, then lights up with the question.
The companion app is in TestFlight beta while the iCloud relay is tested. Email me and I'll add you.
Testing happens over Apple TestFlight — email me and I'll send your invite. Beta requests: glebis@gmail.com
Quickstart · 60 seconds
.mcp.json
{
"mcpServers": {
"cenno": {
"command": "/Applications/cenno.app/Contents/MacOS/cenno",
"args": ["--mcp-stdio"]
}
}
} or straight from the shell
/Applications/cenno.app/Contents/MacOS/cenno \
ask "Ship it?" --timeout 30 A panel appears; your answer prints as JSON. cenno auto-launches if it isn't running.
There's also a ready-made agent skill that teaches your agent to ask well — input kinds, etiquette, graceful timeouts.
Getting started · For agents
cenno speaks MCP — any agent that knows the cenno skill can ask you questions through it. Copy a prompt below and hand it to Claude Code, Claude Desktop, or any MCP-capable agent.
Install cenno if it isn't already:
brew install --cask glebis/tap/cenno
npx skills add glebis/claude-skills@cenno -g -y
Add cenno to this project's .mcp.json, then run a UX discovery interview — 6 questions:
1. What's the most important problem you're working on right now? (text)
2. Who are you building for? (choice: myself / a small team / customers / still figuring out)
3. What does success look like in 3 months? (text)
4. Where does your workflow break down most often? (text)
5. How confident do you feel about the current direction? (scale 1–7)
6. If you had to ship something tomorrow, what would you cut? (text)
Use the question flow theme. Return a structured summary with key signals. Install cenno if it isn't already:
brew install --cask glebis/tap/cenno
npx skills add glebis/claude-skills@cenno -g -y
Add cenno to this project's .mcp.json, then run a wellbeing check-in — 5 questions:
1. How are you feeling right now? (choice: good / tired / stressed / anxious / calm)
2. How did you sleep last night? (scale 1–7, 1 = terrible, 7 = great)
3. Any physical tension or discomfort? (text)
4. Is anything weighing on your mind? (text)
5. What would help you most right now? (choice: a break / movement / food / talk to someone / just keep going)
Use the mood flow theme. Finish with a gentle summary — notice patterns, don't diagnose. Install cenno if it isn't already:
brew install --cask glebis/tap/cenno
npx skills add glebis/claude-skills@cenno -g -y
Add cenno to this project's .mcp.json, then run a goals alignment check-in — 5 questions:
1. What's your single most important priority this week? (text)
2. Are you working on it today? (confirm)
3. How aligned does today feel with your longer-term goals? (scale 1–7)
4. What keeps pulling you off track? (text)
5. One thing worth protecting time for tomorrow? (text)
Use the reminder flow theme. Save answers to goals-checkin.md and return a short reflection. Each prompt includes the install step — hand it to a fresh agent and it runs end to end. The cenno skill in the repo teaches agents all input kinds, etiquette, and timeout handling.
Whose data?
Every exchange lands in a local SQLite file with user-only permissions. cenno makes no network connections on its own.
cenno export dumps your whole answer history as JSON or CSV. Your answers become your own dataset.
Pause prompts from the tray — 15 minutes to “until tomorrow”. Fullscreen keeps panels quiet automatically. Agents just see a normal timeout.
For developers
The prompt UI is an A2UI catalog
(cenno:catalog/v1): write a plain React view, register a
thin adapter, and agents can render it. Raw A2UI payloads are
validated at the Rust boundary, so a new control normally needs no
Rust changes. The
catalog guide has the inventory and the recipe.
cenno ask "Ship it?" --timeout 30 from any script —
exit codes for answered / timed out, JSON on stdout, and
cenno export --format csv for the whole answer history.
One ask_user tool covers text, choice, scale, and
confirm — plus flow color, progress dots, timeouts, and full A2UI
layouts when a simple form isn't enough.
The contract is in the README.
Something missing or broken? Create an issue — and see CONTRIBUTING before your first PR.