by liampetti
Fulloch - The Fully Local Home Voice Assistant
# Add to your Claude Code skills
git clone https://github.com/liampetti/fullochLast scanned: 6/18/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-06-18T08:48:56.471Z",
"npmAuditRan": true,
"pipAuditRan": false,
"promptInjectionRan": true
}See how fulloch compares with popular alternatives.
fulloch is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by liampetti. Fulloch - The Fully Local Home Voice Assistant. It has 150 GitHub stars.
Yes. fulloch passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/liampetti/fulloch" and add it to your Claude Code skills directory (see the Installation section above).
fulloch is primarily written in Python. It is open-source under liampetti on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh fulloch against similar tools.
No comments yet. Be the first to share your thoughts!
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
[![GitHub Release][releases-shield]][releases] ![License][license-shield] [![hacs][hacs-shield]][hacs]
The Fully Local Home Voice Assistant, a private voice layer for your notes, your home, and the web.
Fulloch is your privacy-focused local voice assistant running on your own PC or Mac. Ask questions, capture thoughts, and search your Obsidian vault by voice. Control your home via Home Assistant. Pull live answers from the web with SearXNG. The local stack keeps speech, language processing, notes, facts, and conversation history on your machine; optional web search, Spotify, and remote language models contact their configured services.
Click here to see the satellite companion project for running multiple ESP32-S3 satellites around your home.
Higgs TTS 3: The optional Higgs GPU backend is available only under Boson AI's Research and Non-Commercial License, not Fulloch's MIT license. It requires explicit consent for every voice reference. See Model Sources and Licenses.
Pocket TTS PyTorch: The experimental GPU streaming option uses Kyutai's official gated model. Accept its Hugging Face terms before selecting it. If the download is denied, the wizard prompts for a Hugging Face read token, saves it in
data/credentials.json, and retries. See Model Sources and Licenses.
openWakeWord feature extractors: The optional wakeword gate includes unmodified pre-trained feature extractor models from openWakeWord v0.5.1 under CC BY-NC-SA 4.0, not Fulloch's MIT license. See Model Sources and Licenses.
The default stack runs on CPU (mac/linux/windows). Audio runs through the browser dashboard. The LLM is either regex-only (simple commands) or off-box via an OpenAI-compatible endpoint you configure in the wizard (e.g. Ollama / LM Studio / another machine on your LAN). The dashboard avatar swaps to Parloch, the Partially-local home voice assistant, when the LLM is running off-device.
Install Docker Desktop (or Docker Engine) first. The first run downloads the selected speech models, so it needs an internet connection, several GB of free disk, and enough Docker memory for the wizard's displayed estimate. For the GPU image, install a current NVIDIA driver and NVIDIA Container Toolkit, then confirm docker run --rm --gpus all nvidia/cuda:12.8.0-base-ubuntu22.04 nvidia-smi works before launching Fulloch.
docker run -d \
--name fulloch-ai \
--restart unless-stopped \
--log-opt max-size=10m \
--log-opt max-file=5 \
-p 8765:8765 \
-p 8766:8766 \
-e DASHBOARD_HOST=0.0.0.0 \
-v fulloch-data:/app/data:rw \
ghcr.io/liampetti/fulloch:cpu
The named volume is repaired automatically on first boot and receives the bundled starter voice references. If you prefer a bind mount, use an existing writable directory such as -v "$PWD/data:/app/data:rw"; see data-directory permissions if startup reports a permission error. Open the HTTPS URL shown in docker logs fulloch-ai in a browser to continue the setup wizard. A self-signed certificate warning is expected on first visit; accept it to enable browser microphone access. The dashboard is LAN-visible with this command, so set a dashboard password in the wizard before using it beyond a trusted network.
Add -v /path/to/your/ObsidianVault:/vault:rw before the image name to expose an Obsidian vault.
Swap :cpu for :latest (the CUDA image with Qwen3-TTS voice cloning and the on-GPU 9B SLM) and add --gpus all:
docker run -d \
--name fulloch-ai \
--restart unless-stopped \
--log-opt max-size=10m \
--log-opt max-file=5 \
--gpus all \
-p 8765:8765 \
-p 8766:8766 \
-e DASHBOARD_HOST=0.0.0.0 \
-v fulloch-data:/app/data:rw \
ghcr.io/liampetti/fulloch:latest
The moment you point the language model at an OpenAI-compatible endpoint, the avatar and favicon swap to a travelling version of the character (Let's call him Parloch: The Partially local home voice assistant), and the tagline reads "language model is off-device." Pick a local model again (None or the GPU 9B) and Fulloch comes home. It triggers as soon as a remote endpoint is configured, even if it is on your home network.
Use Settings for normal changes: voices, model backends, language-model mode, Home Assistant, Search, and dashboard preferences. Model changes need a restart; if their weights are missing, the restart returns to the wizard to download them. The Re-run setup wizard action makes a backup under data/backups/; use it to choose a different stack, not to edit a custom model path or advanced remote-LLM settings. To repair a failed download, re-run setup and select the same stack; incomplete model caches are detected and downloaded again.
Advanced options not shown in Settings are documented in data/config.example.yml: Spotify OAuth, native satellite tokens, and external-LLM timeouts. Keep those files under the persistent data volume.
Connect your Obsidian vault so Fulloch reads, writes, appends, and searches your notes by voice.
Just add your vault's directory as a volume when launching Docker container -v /Users/you/Documents/MyVault:/vault:rw
The Obsidian wizard's "Auto-detect" scans the container filesystem for a vault, so it'll find /vault (or wherever you mounted it) without further config.
The plugin is optional: the folder link alone supports reading, writing, appending, and searching notes. Install the separate plugin for live active-note and selection context, editor actions, and automatic note navigation; Docker installations with different host and container paths cannot yet navigate back to a written note automatically. See the Obsidian setup details.
When Fulloch runs in Docker, enter Home Assistant's LAN address, for example http://192.168.1.50:8123. localhost refers to the Fulloch container, not Home Assistant.
A HACS-installable integration for status sensors, mic control, proactive speech, and automation triggers.
| Entity | Description |
|---|---|
sensor.fulloch_status |
idle / thinking / speaking |
sensor.fulloch_last_utterance |
Last thing the user said |
sensor.fulloch_last_response |
Last thing Fulloch said (full_text attribute has the full string) |
sensor.fulloch_thinking_task |
Active deliberate-thinking task and status |
switch.fulloch_mic |
Mute / unmute the microphone |
text.fulloch_speak |
Submit text → Fulloch speaks it |
text.fulloch_chat |
Submit a query → full agent loop |
| Action | Field | Description |
|---|---|---|
fulloch.speak |
text |
Speak a message |
fulloch.chat |
text |
Run a full agent query and speak the result |
fulloch.mic |
enabled |
Turn the mic on or off |
fulloch.run_thinking_task |
task |
Queue a deeper background investigation |
fulloch.cancel_thinking_task |
job_id |
Cancel a queued or active investigation |
fulloch.get_thinking_task_status |
job_id |
Retrieve an investigation's current status |
| Event | When |
|---|---|
fulloch_wakeword_detected |
Voice turn starts |
fulloch_turn_ended |
Fulloch finishes speaking |
Common commands take a regex fast-path that skips the language model entirely, for an instant response. Compound requests ("… and …"), vague references ("turn it off"), or conve