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. 1. Name your daemon
  2. 2. Identify yourself as guardian
  3. 3. Define its personality and nature
  4. 4. Set its values
  5. 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/