Coucou icon # Coucou for Windows **Mochi doesn't get a notch on a PC — so it lives at the top of your screen instead.** Approve Claude Code permissions, watch your session work, drop a file, chat with Claude, keep an eye on your services — without leaving what you're doing. ![Windows 10/11](https://img.shields.io/badge/Windows-10%2F11-0078D4?logo=windows) ![Tauri 2](https://img.shields.io/badge/Tauri-2-FFC131?logo=tauri&logoColor=black) ![Rust](https://img.shields.io/badge/Rust-backend-000?logo=rust) ![License: MIT](https://img.shields.io/badge/license-MIT-green)
Mochi waving hello at launch --- ## Install The downloadable installer is **temporarily unavailable**. Microsoft Defender wrongly flags the unsigned installer as malware (`Trojan:Win32/Wacatac.H!ml`, a machine-learning false positive). A report is under review at Microsoft, and the installer will be published again once it is cleared and code-signed. Until then, [build it yourself](#build-it-yourself): it takes a few minutes and installs for the current user only — no admin prompt. ## Using it The compact island, with the integration pills as mini Mochis The overview: the focused integration on the left, the other pills on the right A Claude Code permission request, with Deny and Allow Chatting with Claude from the island Mochi turned into a box, waiting for a file | What you do | What happens | |---|---| | Move the mouse to the very top-centre of the screen | Mochi peeks out | | Click the small island | It opens | | Click Mochi | It gets annoyed. Three times in a row and it goes dizzy | | Rest the pointer on Mochi for two seconds | Hearts | | Drag a file onto the island | Mochi turns into a box, swallows it, then offers to answer questions about it | | `Esc` | Closes the island | | Tray icon | Open, Settings…, Pause, Quit | Everything else happens on its own: a Claude Code permission request opens the island with **Deny / Allow**, a finished session shows what it did, and your integrations sit in the coloured pills next to Mochi. ## Claude Code The settings window Open **Settings… → Claude Code → Install hooks…**. You get the exact diff of what will change in `%USERPROFILE%\.claude\settings.json`, the path of the dated backup that will be taken, and nothing is written until you click. Your own hooks are never touched, and uninstalling removes only Coucou's entries. The relay is a tiny executable, `coucou-hook.exe`, copied to `%LOCALAPPDATA%\Coucou\bin\` at launch. It is given 300 ms to reach Coucou and exits cleanly if the app is closed, slow or crashed — **a Claude Code session is never blocked or slowed down by Coucou.** If nobody answers a permission request in time, Coucou stays quiet and Claude Code asks in the terminal as usual. It works from any terminal — Windows Terminal, PowerShell, VS Code, Git Bash. ## Chat and keys **Settings… → Claude** takes your Anthropic API key. Keys live in the **Windows Credential Manager**, never on disk and never in the interface — the island can only ask whether a key exists. Same for every integration key. No telemetry. The only network requests Coucou makes are to the services you configure yourself. ## Build it yourself You need [Rust](https://rustup.rs), [Node 20+](https://nodejs.org), and the **MSVC build tools** (Visual Studio Build Tools with "Desktop development with C++"). WebView2 ships with Windows 10/11. ```powershell cd windows npm install npm run tauri dev # live-reloading development build npm run pack # builds the installer and drops it in windows/release/ ``` `npm run dev` alone serves the front end in an ordinary browser, which is enough to work on the island's looks. It also serves `dev/upload-preview.html`, which replays the whole file-drop choreography on a loop — the one part of the UI that otherwise needs a real drag from Explorer to see. Neither page ships in the app. `npm run pack` leaves two files in `windows/release/`, the same names the release workflow publishes: ``` Coucou-Windows-X.Y.Z-setup.exe the versioned installer Coucou-Windows-setup.exe the same file under the rolling name ``` Installing is optional — `target/release/coucou.exe` runs on its own. There is no window in the taskbar and no console: the island at the top of the screen and the Mochi in the notification area are the whole app, and Quit lives in its menu. The 28 sounds are the macOS app's own files; they are never duplicated in this folder. The path is declared once, in `SOUNDS_DIR` at the top of `vite.config.ts` — when they move to `shared/sounds/`, change that one line. The app icon and the tray icon are drawn in code, like Mochi itself: ```powershell npm run icons # regenerates src-tauri/icons from scripts/gen-icons.mjs ``` ### Layout ``` windows/ src/ island front end (TypeScript, no framework) mochi/ Mochi and the launch greeting, in Canvas 2D island/ state machine, hooks, integrations views/ every island view settings/ the settings window src-tauri/ Rust backend: window, named pipe, Claude API, pollers hook/ coucou-hook.exe, the Claude Code relay scripts/ icon generator ``` ### Log `%LOCALAPPDATA%\Coucou\coucou.log` — hook events, permission decisions, poller problems. It stays on your machine. ## What's different from the Mac version - No notch, so the island lives at the top centre of the screen and retracts into the top edge instead of hiding in a notch. - Permission approval works from **any** terminal; the Mac build only listens to VS Code sessions. - Not in this version: sending a file by email, dragging Mochi onto a window to attach it as context, and jumping to a specific terminal window — "Open terminal" opens the working folder in VS Code when `code` is on your `PATH`. - Cal.com shows the next bookings as a list rather than the Mac's calendar.