Documentation
Getting Started
Prerequisites
- macOS 13+ (Ventura or later)
- Apple Silicon (M1/M2/M3/M4) recommended
- 8GB RAM minimum, 16GB recommended
- ~5GB disk space for models
- Rust toolchain (installed automatically)
- Node.js 18+
Installation
1. Clone the repository
git clone https://github.com/daemonfyi/daemon.git cd daemon
2. Install dependencies
npm install
3. Download models
The daemon needs two models: Gemma 4 E2B (brain) and Whisper (ears).
mkdir -p ~/Library/Application\ Support/com.persist.app/models/ # Gemma 4 E2B — the daemon's brain (~3.5GB) curl -L -o ~/Library/Application\ Support/com.persist.app/models/gemma-4-e2b-it.gguf \ "https://huggingface.co/bartowski/google_gemma-4-E2B-it-GGUF/resolve/main/google_gemma-4-E2B-it-Q5_K_M.gguf" # Whisper base.en — speech recognition (~141MB) curl -L -o ~/Library/Application\ Support/com.persist.app/models/ggml-base.en.bin \ "https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-base.en.bin"
4. Launch the daemon
npm run tauri dev
First build takes ~5-10 minutes (compiling llama.cpp and whisper.cpp with Metal acceleration). Subsequent launches are fast.
Genesis — Creating Your Daemon
When you first launch the app, the screen is dark. A soft pulse appears. The genesis flow guides you through creating your daemon's soul:
- 1. Name your daemon
- 2. Identify yourself as guardian
- 3. Define its personality and nature
- 4. Set its values
- 5. Confirm — soul.md is generated, hashed (SHA-256), and the genesis block is written
Once genesis is complete, your daemon speaks its first words and is alive. soul.md is immutable from this point forward.
Voice Interaction
Hold the microphone button to speak. Release to send. The daemon transcribes your speech (Whisper), processes it through the LLM (Gemma 4 E2B), and speaks its response aloud.
The right panel shows the activity log — what the daemon is doing in real time. In Sovereign mode, you see actions. In Creator mode, you see the full chain of thought.
Configuration
Cloud LLM (Optional)
The daemon runs entirely locally by default. To enhance it with a cloud model, configure your API key in settings. If the cloud is unavailable, the daemon silently falls back to its local brain.
Model Paths
~/Library/Application Support/com.persist.app/ ├── models/ │ ├── gemma-4-e2b-it.gguf # LLM brain │ └── ggml-base.en.bin # Whisper ASR └── persist.db # SQLite (auto-created)
Building from Source
# Install Rust curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh # Install dependencies npm install # Build for production npm run tauri build # The .dmg will be in src-tauri/target/release/bundle/dmg/