A Ghost in the Terminal: Code Assassin A developer built Code Assassin, a voice-driven coding assistant that runs entirely in the terminal on local open-weight models, pairing Qwen 2.5 Coder 3B via Ollama with Piper neural text-to-speech. The tool adds a custom streaming fence protocol for tool calls after native Ollama function calling proved unreliable with the small model, auto-approves only pytest, ruff and lint commands, and confines edits with backups and path restrictions. The developer notes the 3B model edits reliably only when given file contents and otherwise hallucinates existing lines. This is a submission for the Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine https://dev.to/challenges/hacktoberfest-week4-2026-10-26 This submission is technically a day late, but in the true spirit of Halloween, nothing stays dead forever. Better late than never. Code Assassin is a speaking, voice-driven coding assistant that runs entirely in your terminal. It started as a workaround: I was building something else and needed text-to-speech, so I piped model output through a local TTS voice. Then I realized the same setup could be useful if the assistant had real access to my environment. Because it runs locally next to my files, I can give it permission to review, rewrite, and test code and get work done without leaving the terminal or installing an extension. My workspace shrinks to a file directory and one open terminal. It also has a personality. The system prompt gives the agent a blunt voice, so its commentary and feedback on my code is actually easy to listen to. Before, Code Assassin was a "chat wrapper": user input → context builder injects @file, --file, --diff context that the user selects manually → Ollama /api/chat streaming → parser splits