How I Pack Eleven Tool Domains into One PySide6 Window Without Spaghetti Wiring A developer built Sentience v3, a 100% local desktop AI assistant with 60 tools across 11 domains, using a flat registry pattern to avoid spaghetti wiring. The system uses a strict executor signature and a single dispatcher that knows nothing about individual tools, ensuring maintainability and preventing silent failures. Sentience v3 is a 100% local desktop AI assistant — think "Cursor, but it also handles your email, your browser, your memory, and your voice." It runs on PySide6, talks to Groq / OpenAI / Anthropic / Ollama, and ships ~60 tools across eleven domains: code editor, file browser, integrated terminal, browser automation, memory, RAG, context compression, email, voice, local hosting, and OAuth. The trap with that many tools is wiring. If each tool is a one-off if tool name == "x" branch, the dispatcher becomes a 400-line switch from hell, and a typo in one name silently disables a feature. I spent two evenings on that mistake in v2. v3 fixes it with a pattern I'd describe as: a flat registry, a strict executor signature, and one dispatcher that knows nothing about any individual tool . Every tool lives in a module under src/