Skip to content

Configuration Options

Configuration File Location

~/.niki/config.toml

Complete Configuration Reference

#
# NIKI Configuration
#
[general]
# Notification mode: active, focus, meeting
notification_mode = "active"
# Minimum job duration (seconds) before notifying
threshold_seconds = 60
[ai]
# Environment variable containing Anthropic API key
api_key_env = "ANTHROPIC_API_KEY"
# Model for quick summaries
summary_model = "claude-haiku-4-5-20251001"
# Model for complex analysis and commands
analysis_model = "claude-sonnet-4-5-20250929"
# Model for ask queries (default)
ask_model_default = "claude-sonnet-4-5-20250929"
# Model for simple ask queries
ask_model_simple = "claude-haiku-4-5-20251001"
# Max lines of output to send for summarization
max_output_lines = 500
# Dry run mode (no API calls)
dry_run = false
[voice]
# Enable voice notifications
enabled = false
# TTS engine: edge, system
tts_engine = "edge"
# Voice for TTS
tts_voice = "en-US-GuyNeural"
# STT engine: whisper
stt_engine = "whisper"
# Whisper model: tiny, base, small, medium, large
stt_model = "base"
# Recording duration for STT
recording_duration = 5.0
[notifications]
# Enable system notifications (desktop)
system = true
# Enable voice announcements
voice = false
[notifications.telegram]
# Enable Telegram notifications
enabled = true
# Bot token from @BotFather
bot_token = "123456789:ABCdefGHI..."
# Allowed user IDs (whitelist)
allowed_user_ids = [123456789]
# Send matplotlib plots
send_plots = true
# Notify on task completion
send_on_complete = true
# Enable remote command execution
remote_commands_enabled = true
# Blocked command patterns
blocked_commands = ["rm -rf", "sudo rm", "mkfs", "dd if="]
# Max commands per minute per user
max_commands_per_minute = 5
[notifications.slack]
# Enable Slack notifications
enabled = false
# Bot token (xoxb-...)
bot_token = ""
# App token for Socket Mode (xapp-...)
app_token = ""
# Default channel for notifications
default_channel = ""
# Send to DM instead of channel
send_to_dm = true
# Allowed Slack user IDs
allowed_user_ids = []
# Use threaded replies
thread_replies = true
# Routing preset: solo, team-visible, team-full
preset = ""
[notifications.slack.routing]
# Where to route different notification types
# Options: origin, dm, channel, both
task_complete = "origin"
task_error = "origin"
plots = "origin"
mirror = "channel"
[daemon]
# Port for HTTP API
port = 7432
# Log level: debug, info, warning, error
log_level = "info"
# Auto-start daemon on boot (systemd)
auto_start = true
[chat]
# Messages to keep in LLM context
history_length = 20
# Pending command timeout (seconds)
pending_command_timeout = 300
# Session timeout (seconds)
session_timeout = 3600
# Persist chat history to SQLite
persist_history = true
# Chat history database path
history_database = "~/.niki/chat_history.db"
# Days to retain chat history
history_retention_days = 90
# Backup history on shutdown
backup_on_shutdown = true
# Max messages in LLM context
max_context_messages = 10
# Include timestamps in context
include_timestamps = false
[mcp]
# Enable MCP server
enabled = true
# Server name
server_name = "niki"

Environment Variables

VariableDescription
ANTHROPIC_API_KEYAnthropic API key for Claude
NIKI_CONFIG_DIROverride config directory

Notification Modes

ModeP0P1P2
activeImmediateImmediateImmediate
focusImmediateQueuedQueued
meetingQueuedQueuedQueued