Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Setup & Prerequisites

Build the Binary

cargo build

Expected: Compiles 55 workspace members. Zero errors. Warnings are acceptable.

Run Automated Tests First

cargo test

Expected: ~645 tests pass (workspace sum), 0 failures. Some tests may be ignored (PTY tests in sandboxed environments).

Required Services

ServiceHow to startRequired for
Ollamaollama serveLLM-powered features (chat, mission, draft, etc.)
Ollama modelollama pull llama3.2Must have at least one model pulled

Optional Environment Variables

VariablePurposeDefault
RUST_LOGTracing levelinfo
RUSVEL_API_TOKENBearer token for API authNone (open)
RUSVEL_RATE_LIMITAPI rate limit (req/sec)100
RUSVEL_SMTP_HOSTSMTP for outreach emailsMock adapter
RUSVEL_SMTP_PORTSMTP port
RUSVEL_SMTP_USERSMTP username
RUSVEL_SMTP_PASSWORDSMTP password
RUSVEL_TELEGRAM_BOT_TOKENTelegram notificationsDisabled
RUSVEL_FLOW_PARALLEL_EVALUATEEnable parallel flow nodes0
ANTHROPIC_API_KEYClaude API providerClaude CLI fallback
OPENAI_API_KEYOpenAI provider

Data Directory

RUSVEL stores data in ~/.rusvel/:

  • rusvel.db – SQLite database
  • config.toml – configuration
  • shell_history.txt – REPL history
  • lance/ – vector store data

To reset to clean state: rm -rf ~/.rusvel/ (destructive – removes all data).

Docker Alternative

docker compose up

Expected: Starts RUSVEL on :3000 + Ollama on :11434. No local install needed.

Environment Combos

Minimal (no AI)

cargo run
# Test all non-LLM features: CRUD, DB browser, config, etc.

Full Local

ollama serve &
ollama pull llama3.2
cargo run
# All features available

With Claude API

export ANTHROPIC_API_KEY=sk-ant-...
cargo run
# Uses Claude for higher-quality responses

With Notifications

export RUSVEL_TELEGRAM_BOT_TOKEN=...
cargo run
# POST /api/system/notify sends Telegram messages

Testing Tools

ToolUse forInstall
curlAPI testingPre-installed on macOS
jqJSON formattingbrew install jq
websocatWebSocket testingbrew install websocat
httpieFriendlier API callsbrew install httpie
justTask runner recipesbrew install just
watchexecFile-watching re-runscargo install watchexec-cli

httpie Examples (alternative to curl)

# GET
http :3000/api/health
http :3000/api/departments

# POST
http POST :3000/api/sessions name=test kind=General

# SSE streaming
http --stream POST :3000/api/chat message="hello"