- CPU: 8 cores (recommended: Ryzen 9 or equivalent)
- RAM: 16 GB minimum, 64 GB recommended
- GPU: 8 GB VRAM minimum for local LLMs. Recommended: RTX 3090+ (24 GB) or RTX 5090 (32 GB)
- Disk: 50 GB free (100 GB+ recommended for model storage)
- Python: 3.12 or newer
- OS: Windows 10/11, Ubuntu 20.04+, macOS 12+
Yes, but performance will be significantly slower. You can use smaller models (e.g., qwen3:8b as planner) or switch to a cloud LLM backend (OpenAI, Anthropic, etc.) which requires no local GPU at all.
git clone <repo-url> cognithor
cd cognithor
./install.sh # Interactive installer (Linux/macOS)
# or manually:
python -m venv .venv
source .venv/bin/activate # Linux/macOS
.venv\Scripts\activate # Windows
pip install -e ".[all,dev]"On Windows, double-click start_cognithor.bat after installation.
Some optional dependencies require native compilation. Install only the extras you need:
pip install -e ".[search,documents]" # Instead of [all]For SQLCipher encryption specifically: pip install cognithor[encryption] requires native SQLCipher libraries installed on your system.
git pull
pip install -e ".[all,dev]"
python scripts/first_boot.py --quick # Verify everything works- Ollama (default): Best for privacy, runs completely local. Needs a GPU with 24+ GB VRAM for the recommended models.
- LM Studio: Same as Ollama but with a GUI for model management. Also fully local.
- OpenAI / Anthropic / Gemini: Best quality, no GPU needed, but requires internet and API costs.
- Groq / Cerebras: Fast cloud inference, free tiers available.
- DeepSeek / Mistral / Together / OpenRouter: Budget-friendly alternatives with various model options.
Set your API key in ~/.cognithor/config.yaml or as an environment variable. Cognithor auto-detects the backend:
# Option A: In config.yaml
anthropic_api_key: "sk-ant-..."
# Option B: Environment variable
# export COGNITHOR_ANTHROPIC_API_KEY=sk-ant-...Model names are automatically adapted to the new provider.
ollama pull qwen3:32b # Planner (required, 20 GB VRAM)
ollama pull qwen3:8b # Executor (required, 6 GB VRAM)
ollama pull qwen3-embedding:0.6b # Embeddings (required, 0.5 GB VRAM)
ollama pull qwen3-coder:30b # Coder (optional, 20 GB VRAM)Yes, change them in ~/.cognithor/config.yaml:
models:
planner:
name: "llama3.3:70b"
context_window: 128000
executor:
name: "llama3.1:8b"# Check if Ollama is running
curl http://localhost:11434/api/tags
# Restart Ollama
# Linux/macOS:
pkill ollama && ollama serve &
# Windows: Restart the Ollama app from system trayIf using a remote Ollama instance, set the URL: export OLLAMA_HOST=http://remote-host:11434
~/.cognithor/config.yaml. It is auto-created on first start. See CONFIG_REFERENCE.md for all available options.
language: "en" # en, de, zh, arOr via environment variable: export COGNITHOR_LANGUAGE=en
security:
allowed_paths:
- "~/.cognithor/"
- "~/Documents/"
- "/path/to/project/"The gatekeeper blocks file operations outside these paths.
Yes. All config keys can be overridden with COGNITHOR_ prefixed variables:
export COGNITHOR_LANGUAGE=en
export COGNITHOR_PLANNER_MAX_ITERATIONS=15
export COGNITHOR_OLLAMA_TIMEOUT_SECONDS=180- Create a bot with @BotFather on Telegram
- Set the token in
~/.cognithor/.env:COGNITHOR_TELEGRAM_TOKEN=123456:ABC... - Enable in config:
channels.telegram_enabled: true - Optionally restrict to your user ID:
channels.telegram_whitelist: ["your_user_id"]
The Flutter Web UI is automatically served by the backend on port 8741. Start Cognithor and open http://localhost:8741 in your browser. On Windows, start_cognithor.bat does this automatically.
CLI, WebUI, Telegram, Discord, Slack, WhatsApp, Signal, Matrix, Microsoft Teams, Google Chat, Mattermost, Feishu/Lark, IRC, Twitch, iMessage, and Voice.
Yes. Enable each channel in the config and provide the required tokens/credentials. All channels share the same agent brain and memory.
By default, no. Cognithor uses Ollama (local LLM) and stores all data in ~/.cognithor/. If you configure a cloud LLM backend (OpenAI, Anthropic, etc.), your prompts are sent to that provider's API. Web search tools access the internet when invoked.
Every tool call goes through a risk assessment:
- GREEN: Auto-executed (read memory, search, calculations)
- YELLOW: Executed + user informed (create file, set reminder)
- ORANGE: Requires user confirmation (send email, delete file)
- RED: Blocked (destructive system commands, credential exposure)
Yes. Enable SQLCipher encryption:
database:
encryption_enabled: trueRequires pip install cognithor[encryption]. The encryption key is stored in your OS keyring.
The backend generates a per-session token at startup. The Web UI fetches it via the /api/v1/bootstrap endpoint. All subsequent API calls require Authorization: Bearer <token>. WebSocket connections authenticate with an {"type": "auth", "token": "..."} message.
cd flutter_app
flutter pub get
flutter run -d chrome # Development
flutter build web --release # Production buildThe production build goes to flutter_app/build/web/ and is automatically served by the backend.
The backend is not running or not reachable. Check:
- Is the backend running on port 8741? (
curl http://localhost:8741/api/v1/health) - Is a firewall blocking the connection?
- Check logs at
~/.cognithor/logs/cognithor.log
Yes. On the first request, Ollama loads the model into VRAM (30--60 seconds). Subsequent responses are much faster (1--5 seconds). You can preload models:
ollama run qwen3:32b "Hello" --keepalive 30m- Use smaller models:
qwen3:8bas planner (instead ofqwen3:32b) - Reduce context window:
models.planner.context_window: 8192 - Use a cloud backend (no local VRAM needed)
python scripts/first_boot.py --quick # System validation
make smoke # 26 installation checks
make health # Runtime check (Ollama, disk, memory)
tail -f ~/.cognithor/logs/cognithor.log # Live logsCognithor has three memory layers:
- Working Memory: Current conversation context (auto-compacted when full)
- Semantic Memory: Long-term knowledge indexed with vector embeddings + BM25 + knowledge graph
- Episodic Memory: Daily interaction logs with auto-generated summaries
Place documents (Markdown, PDF, DOCX, TXT) in ~/.cognithor/memory/knowledge/. They are automatically indexed on next startup.
# All data lives in ~/.cognithor/
cp -r ~/.cognithor/ ~/backup/cognithor-backup/See DATABASE.md for a complete list of database files and their locations.
Make sure the virtual environment is activated and the package is installed:
source .venv/bin/activate # or .venv\Scripts\activate on Windows
pip install -e ".[all]"This happens under heavy concurrent access. Cognithor automatically retries with exponential backoff. If persistent, check that no other process has an exclusive lock. Increase retries:
database:
sqlite_max_retries: 10
sqlite_retry_base_delay: 0.2Check:
- Are MCP tools registered? Check
~/.cognithor/logs/cognithor.logfor tool registration messages. - Is the system prompt too long? Reduce
memory.search_top_k. - Try increasing temperature:
planner.temperature: 0.7 - Run
python scripts/first_boot.pyto validate the full agent loop.
DuckDuckGo may rate-limit. Options:
- Wait and retry (automatic 30s backoff)
- Configure a Brave or SearXNG backend (see
webconfig section) - Check if
web.duckduckgo_enabledistrue
# Remove all Cognithor data (CAUTION: this deletes all memories!)
rm -rf ~/.cognithor/
# Reinitialize
python scripts/first_boot.pyThe Observer Audit Layer (PR #118) is an LLM-based quality check that runs after every response. It evaluates the response across 4 dimensions: hallucinations, sycophancy, laziness, and tool-ignorance. A hallucination finding triggers response regeneration inside the Planner; a tool-ignorance finding triggers a full PGE re-loop via the Gateway. The Observer always fails open — if the audit itself errors, the response is delivered unchanged. Configure it via the observer.* section in config.yaml; see CONFIG_REFERENCE.md for all options.