The Problem
Windows users have no open-source equivalent to Clicky, the macOS AI desktop companion that sees your screen and acts on it. Existing Windows automation tools require scripting or lack the voice-driven, screen-aware interaction model. Clacky fills that gap with a voice-first companion that can see, point at, and operate a Windows desktop.
What This Does
Clacky is a voice-first desktop companion for Windows. Hold a hotkey, speak, and it answers questions about your screen, points at UI elements with an on-screen buddy, and performs actions like opening apps, clicking, and typing using Claude Computer Use. It maintains cross-session memory and can learn voice-taught routines.
The repo also contains a separate file organizer (clacky organize) that tidies folders via LLM calls with reversible moves (clacky undo). A third project, organizer/, appears to be a standalone version of this functionality.
How It Is Wired
Execution starts at clacky/cli.py (main, _cmd_run, _cmd_organize). The main entry reaches 40 functions; _cmd_run reaches 42. The primary voice companion lives in clacky/shell/, with companion_manager.py as the hub—79 functions, called from 6 files, calling into 40 others. It owns the core loop: _ensure_ollama_running, _build_system_prompt, and session orchestration.
The clacky/agent/ package handles the agentic core: actuation.py (23 functions, 3 classes) provides left_click, double_click, type_text, and other mouse/keyboard actions. permission.py gates actions with 7 importing modules. The providers/ package abstracts LLM backends—base.py is the most-imported module (Ca 10), while factory.py (instability 0.88) is a thin dispatcher.
The shell subproject handles UI (ui/overlay.py, ui/panel.py), audio (audio/ambient_listener.py), and AI providers (ai/ with Claude, Gemini, OpenAI, Ollama, and GitHub Copilot implementations). web_search.py's search function is called from 17 places—the widest blast radius. slog (15 callers) and show_notification (13 callers) are similarly central.
Traced external effects: main → maybe_show_setup_wizard → mark_setup_complete writes a flag file; _worker → device_login makes an HTTP POST and opens a browser. The code touches the filesystem (48 functions), network (24), model inference (6), external commands (4), and databases (1).
How To Use It
Setup (Python 3.10+, Windows 10/11):
git clone https://github.com/moses-y/clacky
cd clacky
pip install -e ".[shell,claude]"
Configuration: Copy .env.example → clacky/shell/.env with ANTHROPIC_API_KEY, DEEPGRAM_API_KEY, CLACKY_ACTIVE_LLM=claude.
Running:
clacky run # voice companion
clacky organize ~/Desktop --dry-run # file organizer, preview
Real-World Use
A user holds Ctrl+Alt+M, says "open Notepad and type hello." The companion captures audio, transcribes via Deepgram, routes to Claude, resolves the target UI element via element_locator.py, and executes type_text from actuation.py. The on-screen buddy points at Notepad during the action.
Code Health & Issues
Static analysis found 69 issues (11 high, 57 medium, 1 low). High-severity findings:
- Import cycle (3 files):
organizer/__init__.py,planner.py,executor.pyare mutually reachable. - Duplicated code: 22 repeated 6-line blocks across 16 files.
- Deep nesting (15 files):
shell/actions.pyreaches indentation depth 13. - Oversized file:
shell/companion_manager.pyhas 1253 lines.
Medium: 35 broad exception handlers, 5 files opened without context managers. No CI/CD, no lockfile, no Dependabot. Tests exist (9 files) but nothing runs them automatically.
The Bottom Line
Clacky is a functional, ambitious prototype that works for its core demo loop. The codebase is rough—deep nesting, duplication, and a monolithic manager file will make changes expensive. Worth using for the voice-desktop-companion pattern on Windows, but expect to refactor before building on it.