synthia

skill
Security Audit
Warn
Health Warn
  • License — License: MIT
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Low visibility — Only 6 GitHub stars
Code Pass
  • Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Pass
  • Permissions — No dangerous permissions requested
Purpose
This tool is an AI-powered, local voice assistant for Linux designed to control your desktop, dictate text, and remotely manage Claude Code sessions. It processes voice commands entirely on your hardware, keeping your data offline.

Security Assessment
The tool executes shell commands to open applications, control volume, and manage local CLI sessions. Network requests appear limited to standard local AI communications (Ollama) and optional integrations like Telegram for remote access and Tavily for web search. The automated code scan checked 12 files and found no dangerous patterns or hardcoded secrets. It does not request dangerous system permissions. Because it processes audio and can execute commands based on voice input locally, the overall risk is rated as Low.

Quality Assessment
The project is licensed under the permissive MIT standard and was actively updated recently (last push was today). However, community visibility and adoption are currently very low, with only 6 GitHub stars. The codebase is small enough to be easily audited manually, which helps compensate for the lack of widespread community testing.

Verdict
Safe to use, but review the shell execution logic manually if you plan to utilize remote access features.
SUMMARY

AI-powered voice assistant that respects your privacy. Control your desktop, dictate text, and remotely manage Claude Code - all running locally on your machine.

README.md

SYNTHIA

Talk to your code. Manage your workflow. From anywhere.

Free open-source Claude Code companion for Linux. Voice control, persistent memory, and a full configuration dashboard — all in one toolkit. Your data stays home.

License: MIT
Python 3.10+
Rust
Linux


Why SYNTHIA?

Your voice never leaves your machine. Your memories stay organized. Your Claude Code config stays in check.

  • 100% Local — Whisper runs on your hardware. No servers. No logs. Pinky promise.
  • Free Forever — MIT licensed. No paywalls. No "premium tier" upsell.
  • Claude Code Companion — Voice control, persistent memory, and a TUI dashboard for agents, commands, hooks, and settings.
  • Memory Layer — Store bugs, patterns, architecture decisions, and gotchas. Never re-learn the same lesson twice.

Three Modes, Infinite Possibilities

Quick Mode — Your Desktop Butler

Hotkey: Right Alt (hold)

Instant responses. No internet required. No excuses.

  • "Open Chrome" "Play Spotify" "Lock screen" — done.
  • Control volume, grab screenshots, launch anything
  • Works offline. Like, actually offline.

Dev Mode — Talk to Your Code

Hotkey: Right Ctrl (hold)

Speak commands. Claude executes. You sip coffee.

  • Full voice control of Claude Code sessions
  • Claude talks back (in a good way)
  • LLM Polish cleans up your transcriptions automatically
  • Perfect for when typing feels like effort

Remote Mode — Code From the Couch

Enable: Say "Remote mode" or type /remote

Control Claude Code from your phone via Telegram.

  • Send voice notes. Get code back. Magic.
  • Approve plans before anything runs (you're still the boss)
  • Ship features from the beach. We won't judge.

Quick Start

# Grab the goods
git clone https://github.com/markmiddo/synthia.git
cd synthia

# Let it cook
./install.sh

# Wake her up
./run.sh

Hold Right Alt, say something, and watch the magic happen.


The Tech Stack

Component Technology Why It's Great
Speech Recognition Faster-Whisper OpenAI's Whisper, but 4x faster
AI Brain Ollama + Qwen 2.5 Local LLM, no API keys needed
Voice Output Piper Sounds like a human, not a GPS from 2008
Dashboard TUI Textual Beautiful terminal UI, keyboard-first
Desktop GUI Tauri + Rust Native performance, tiny footprint
Frontend React + TypeScript Modern, type-safe UI
Web Search Tavily AI-optimized search when you need the web

NVIDIA GPU? Whisper goes brrr. No GPU? Still works. Just vibes a little slower.


Desktop GUI

SYNTHIA includes a native desktop application built with Tauri (Rust + React):

  • System tray integration — Lives in your taskbar, always accessible
  • One-click start/stop — No terminal required
  • Remote mode toggle — Enable Telegram control instantly
  • Voice history — Browse, copy, and re-send past transcriptions
  • Clipboard history — Recent clipboard items with one-click restore
  • Usage stats — Claude API usage tracking (today/this week)
  • Hotkey editor — Customize dictation and assistant keys live
  • Notes browser — Markdown editor with preview, folder navigation
  • Worktree manager — Track git worktrees with progress bars and session linking
  • Task kanban — Drag-and-drop task board (To Do, In Progress, Done)
  • Config editor — Manage Synthia settings, agents, commands, hooks, and plugins

Build the GUI:

cd gui
npm install
npm run tauri build

Hotkeys

Key Mode What It Does
Right Alt (hold) Quick Mode Voice assistant — runs commands, launches apps
Right Ctrl (hold) Dev Mode Voice to Claude Code — hands-free coding
Esc Quit SYNTHIA

Hotkeys work on both X11 (pynput) and Wayland (evdev). Customizable in config.yaml or the GUI hotkey editor.


Claude Code Integration

Make Claude Code talk back to you. Add to ~/.claude/settings.json:

{
  "hooks": {
    "Stop": [{
      "hooks": [{
        "type": "command",
        "command": "/path/to/synthia/venv/bin/python /path/to/synthia/src/synthia/hooks/stop-hook.py",
        "timeout": 30
      }]
    }]
  }
}

Now every Claude response is spoken aloud — or sent to your phone in Remote Mode.


Synthia Dashboard

A full TUI for managing your entire Claude Code setup. One command, everything at your fingertips.

synthia-dash

What You Can Manage

# Section What It Does
1 Worktrees View git worktrees, track progress, resume Claude sessions, link to GitHub issues
2 Memory Browse, filter, edit, and delete memory entries by category
3 Agents View and edit your custom agents (model, color, prompt)
4 Commands Manage slash commands with built-in editor
5 Plugins Toggle plugins on/off with spacebar
6 Hooks View configured hooks (UserPromptSubmit, Stop, etc.)
7 Settings Quick access to Claude Code settings

Keyboard Navigation

  • 1-7 — Jump to section
  • w — Worktrees
  • r — Refresh
  • e — Edit selected item
  • n — New item
  • d — Delete (with confirmation)
  • g — Open GitHub issue (worktrees)
  • o — Open terminal at worktree
  • c — Resume Claude session (worktrees)
  • Tab — Cycle memory filters
  • ? — Help overlay
  • q — Quit

Worktrees Management

Track your git worktrees across repos with progress bars, issue linking, and Claude session integration.

Setup

Create ~/.config/synthia/worktrees.yaml:

repos:
  - /home/user/dev/my-project
  - /home/user/dev/another-repo

Features

  • Auto-discovery — Scans configured repos for worktrees
  • Issue linking — Extracts issue numbers from branch names (feature/295-dark-mode, fix/295-auth-bug)
  • Session tracking — Finds matching Claude Code sessions and loads task progress
  • Progress bars — Visual completion percentage per worktree
  • Quick actions — Open terminal, resume Claude session, view on GitHub

Tasks CLI

A lightweight task manager for tracking work across projects.

# List all tasks
synthia tasks list

# Add a new task
synthia tasks add "Fix login bug" --tags "frontend,auth" --due "2026-02-15"

# Filter by status
synthia tasks list --status in_progress

# Mark done
synthia tasks done "Fix login bug"

# Move to a different status
synthia tasks move "Fix login bug" in_progress

# Delete
synthia tasks delete "Fix login bug"

Tasks are stored in ~/.config/synthia/tasks.json and visible in both the TUI dashboard and the GUI kanban board.


Notes Browser

A markdown editor built into the GUI. Browse, create, edit, and preview .md files.

  • Full markdown preview with react-markdown
  • Folder navigation with breadcrumbs
  • Create, rename, and delete notes

Set a custom notes directory:

export SYNTHIA_NOTES_PATH="/path/to/your/notes"

Default: ~/.config/synthia/notes/


Clipboard History

Background clipboard monitoring with secure storage.

  • Wayland — Uses wl-paste --watch for event-based monitoring
  • X11 — Polling-based with xclip
  • Stores up to 5 items (configurable) with deduplication
  • Secure file permissions (0o600) — passwords and tokens are handled safely

Config options:

clipboard_history_enabled: true
clipboard_history_max_items: 5

LLM Polish

Whisper is great but not perfect. LLM Polish uses a local Ollama model to fix speech recognition mistakes — homophones, technical terms, proper nouns — without changing meaning.

  • Runs after every transcription (dev mode and quick mode)
  • Timeout-based fail-safe (defaults to original text if slow)
  • Completely local — no cloud APIs

Config options:

use_llm_polish: true
llm_polish_model: "qwen2.5:7b-instruct-q4_0"
llm_polish_timeout: 3.0

Web Search

Voice-activated web search powered by Tavily. Just say "Search the web for..." and get concise answers read aloud.

tavily_api_key: "tvly-your-key-here"  # Get from tavily.com

Remote Mode

Control SYNTHIA from your phone via Telegram. Send voice notes, approve plans, and monitor your system.

Telegram Bot Commands

Command What It Does
/start Show help and current mode
/dev Switch to Dev Mode (Claude Code)
/quick Switch to Quick Mode (local AI)
/status System status — uptime, load, memory, services
/disk Disk usage
/gpu GPU stats (requires nvidia-smi)
/screenshot Take and send a screenshot
/clip <text> Copy text to your PC clipboard
/getclip Get current PC clipboard content

Inbox System

Files sent via Telegram are saved to the inbox:

  • Voice notes are transcribed and processed
  • Photos saved as .jpg with timestamps
  • Files stored in ~/.local/share/synthia/inbox/files/
  • Metadata tracked in ~/.local/share/synthia/inbox/inbox.json

Setup

telegram_bot_token: "your-bot-token"    # Get from @BotFather
telegram_allowed_users: [123456789]     # Your Telegram user ID

Memory System

SYNTHIA includes a persistent memory system for storing project knowledge, bugs, patterns, and gotchas. Perfect for development workflows where you need quick access to past learnings.

Memory Categories

Category Fields Use Case
bug error, cause, fix Track bug solutions
pattern topic, rule, why Document coding conventions
arch decision, why Record architecture decisions
gotcha area, gotcha Capture project landmines
stack tool, note Tool configuration notes

CLI Access

# Quick recall by tags
synthia memory recall "frontend,react"

# Text search
synthia memory search "MongoDB"

# View statistics
synthia memory stats

# List all tags
synthia memory tags

Voice Commands

  • "What do we know about React bugs?" — Searches memory by tags
  • "Search memory for MongoDB" — Full-text search

Auto-Retrieval (Dev Mode)

Enable in config.yaml:

memory_auto_retrieve: true

When enabled, SYNTHIA automatically injects relevant memories into your queries based on detected keywords.


Configuration

mkdir -p ~/.config/synthia
cp config.example.yaml ~/.config/synthia/config.yaml

Complete Reference

# Hotkeys
dictation_key: "Key.ctrl_r"          # Dev Mode hotkey
assistant_key: "Key.alt_r"           # Quick Mode hotkey

# Speech Recognition
language: "en-US"
sample_rate: 16000

# Text-to-Speech
tts_voice: "en-US-Neural2-J"         # Google Cloud voice name
tts_speed: 1.0                       # Speech rate multiplier

# Assistant
assistant_model: "claude-sonnet-4-20250514"
conversation_memory: 10              # Exchange history length
assistant_personality: "..."         # System prompt for Quick Mode

# Credentials
google_credentials: "~/.config/synthia/google-creds.json"
anthropic_api_key: "~/.config/synthia/anthropic-key.txt"

# UI
show_notifications: true
play_sound_on_record: true

# Local Models
use_local_stt: true                  # Whisper instead of Google Cloud
use_local_llm: true                  # Ollama instead of Anthropic
use_local_tts: true                  # Piper instead of Google Cloud
local_stt_model: "tiny"              # tiny, base, small, medium, large
local_llm_model: "qwen2.5:1.5b-instruct-q4_0"
local_tts_voice: "~/.local/share/piper-voices/en_US-amy-medium.onnx"
ollama_url: "http://localhost:11434"

# Telegram Remote Access
telegram_bot_token: ""               # From @BotFather
telegram_allowed_users: []           # Telegram user IDs

# Web Search
tavily_api_key: ""                   # From tavily.com

# LLM Polish
use_llm_polish: true                 # Fix transcription errors
llm_polish_model: "qwen2.5:7b-instruct-q4_0"
llm_polish_timeout: 3.0             # Seconds before fail-safe

# Clipboard Manager
clipboard_history_enabled: true
clipboard_history_max_items: 5

# Memory System
memory_enabled: true
memory_auto_retrieve: false          # Auto-inject context in dev mode
memory_dir: "~/.claude/memory"

# Word Replacements
word_replacements:
  Cynthia: Synthia                   # Fix Whisper misrecognitions

Voice Options

Open config.yaml and swap in a different Piper voice. Amy's friendly. Ryan's chill. Lessac sounds like your cool coworker. Pick your fighter.

Download from Piper Voices:

Voice Style
en_US-amy-medium Female, clear
en_US-ryan-high Male, natural
en_US-lessac-high Female, expressive
en_GB-alba-medium British female

File Locations

File Purpose
~/.config/synthia/config.yaml Main configuration
~/.config/synthia/worktrees.yaml Repository list for worktree scanning
~/.config/synthia/tasks.json Task manager data
~/.config/synthia/notes/ Notes directory (or SYNTHIA_NOTES_PATH)
~/.claude/memory/*.jsonl Memory system entries
~/.local/share/synthia/inbox/ Telegram file inbox
$XDG_RUNTIME_DIR/synthia-clipboard.json Clipboard history (runtime)
$XDG_RUNTIME_DIR/synthia-remote-mode Remote mode flag (runtime)

Requirements

  • OS: Linux (macOS/Windows coming in v0.3)
  • Python: 3.10+
  • Rust: 1.70+ (for GUI)
  • RAM: 4GB minimum and a pulse. 8GB recommended.
  • GPU: Optional (NVIDIA for that buttery-smooth transcription)
  • Disk: ~2GB for models

Roadmap

We're just getting started:

  • v0.2 — CPU support improvements, enhanced voice commands
  • v0.3 — macOS and Windows support
  • v0.4 — Native GUI (Rust-powered floating bar) Done!
  • v0.5 — Mobile apps (bye-bye Telegram dependency)
  • v1.0 — Plugin system, multi-AI support

See the full ROADMAP.md for details.


Contributing

Bug reports, feature requests, and questionable memes — we've got it all.

Whether you want to:

  • Report bugs
  • Suggest features
  • Write code
  • Improve docs

Check out CONTRIBUTING.md to get started.


FAQ

Is it really free?
Yep. Free as in beer, free as in speech, free as in "wait, what's the catch?" There is no catch.

Does my voice leave my computer?
Absolutely not. Your voice stays on your machine like it's under house arrest.

Does it work without a GPU?
Totally. Like a Honda Civic. Reliable. Gets the job done. Won't win races but never lets you down.


License

MIT — Fork it. Break it. Fix it. Make it weird. It's yours now.


Support the Project

SYNTHIA runs on open source spirit and actual coffee. If it saves you time, consider:


Built for developers who value privacy and hate typing (sometimes).

Reviews (0)

No results found