Skip to content

Configuration

All configuration is done through environment variables, passed when registering the MCP server.

VariableDefaultDescription
VAULT_PATH~/Projects/knowledgePath to your Obsidian vault. Also accepted as HIVE_VAULT_PATH.
HIVE_OLLAMA_ENDPOINThttp://localhost:11434Ollama API endpoint
HIVE_OLLAMA_MODELqwen2.5-coder:7bDefault Ollama model
HIVE_OPENROUTER_API_KEYOpenRouter API key
HIVE_OPENROUTER_MODELqwen/qwen3-coder:freeDefault OpenRouter model (free tier)
HIVE_OPENROUTER_PAID_MODELqwen/qwen3-coderPaid tier model for delegate_task
HIVE_OPENROUTER_BUDGET1.0Monthly budget cap in USD
HIVE_DB_PATH~/.local/share/hive/worker.dbSQLite database for budget/usage tracking
HIVE_RELEVANCE_DB_PATH~/.local/share/hive/relevance.dbSQLite database for adaptive context scoring
HIVE_STALE_THRESHOLD_DAYS180Days before a vault file is flagged as stale
HIVE_HTTP_TIMEOUT120.0HTTP timeout (seconds) for Ollama and OpenRouter
HIVE_RELEVANCE_ALPHA0.3EMA learning rate for adaptive context scoring
HIVE_RELEVANCE_DECAY0.9Session decay factor for relevance scores
HIVE_RELEVANCE_EPSILON0.15Exploration ratio for session_briefing (epsilon-greedy)
HIVE_VAULT_SCOPES{"projects": "10_projects", "meta": "00_meta"}JSON mapping of scope names to vault subdirectories
HIVE_LOG_PATH~/.local/share/hive/hive.logFile path for persistent debug log (1MB rotating)

The OpenRouter API key supports two names for convenience:

  • HIVE_OPENROUTER_API_KEY (prefixed, standard)
  • OPENROUTER_API_KEY (bare, for environments that already export it)

If both are set, the HIVE_ prefixed version takes precedence.

Claude Code:

Terminal window
claude mcp add -s user hive \
-e VAULT_PATH=$HOME/my-vault \
-e HIVE_OLLAMA_ENDPOINT=http://minipc.local:11434 \
-e OPENROUTER_API_KEY=sk-or-v1-abc123 \
-e HIVE_OPENROUTER_BUDGET=10.0 \
-- uvx --upgrade hive-vault

Gemini CLI:

Terminal window
gemini mcp add -s user \
-e VAULT_PATH=$HOME/my-vault \
-e HIVE_OLLAMA_ENDPOINT=http://minipc.local:11434 \
-e OPENROUTER_API_KEY=sk-or-v1-abc123 \
-e HIVE_OPENROUTER_BUDGET=10.0 \
hive-vault uvx -- --upgrade hive-vault

Codex CLI — add to ~/.codex/config.toml:

[mcp_servers.hive-vault]
command = "uvx"
args = ["--upgrade", "hive-vault"]
[mcp_servers.hive-vault.env]
VAULT_PATH = "~/my-vault"
HIVE_OLLAMA_ENDPOINT = "http://minipc.local:11434"
OPENROUTER_API_KEY = "sk-or-v1-abc123"
HIVE_OPENROUTER_BUDGET = "10.0"

The --upgrade flag ensures you always get the latest version from PyPI on each session start.

If you only need vault access and don’t want worker delegation:

Terminal window
# Claude Code
claude mcp add -s user hive -e VAULT_PATH=$HOME/my-vault -- uvx --upgrade hive-vault
# Gemini CLI
gemini mcp add -s user -e VAULT_PATH=$HOME/my-vault hive-vault uvx -- --upgrade hive-vault

For other MCP clients, pass the same environment variables through your client’s MCP server configuration.

Worker tools will still be available but will return “no providers available” when called.

Ollama lets you run LLMs locally for free. After installing:

Terminal window
# Pull the default model
ollama pull qwen2.5-coder:7b
# Verify it's running
curl http://localhost:11434/api/tags

If Ollama runs on a different machine (e.g., a homelab), set HIVE_OLLAMA_ENDPOINT to its address.

OpenRouter provides access to many models through a single API. Free tier models are available.

  1. Create an account at openrouter.ai
  2. Generate an API key at openrouter.ai/keys
  3. Pass it as OPENROUTER_API_KEY when registering the MCP server

The default model (qwen/qwen3-coder:free) is free. Paid models are only used when you explicitly set max_cost_per_request > 0 on delegate_task calls, and are capped by HIVE_OPENROUTER_BUDGET.

Installing and registering Hive makes the tools available, but your AI assistant needs guidance on when to use them. Your project instructions file (CLAUDE.md, GEMINI.md, or equivalent in your MCP client) is the key.

Without explicit instructions, your assistant might use Hive tools, but inconsistently. With clear instructions, it uses them predictably for every relevant query.

Add this to your project instructions file (CLAUDE.md, GEMINI.md, or equivalent):

## Vault & Knowledge (Hive MCP)
When hive-vault MCP is available, use it for on-demand context:
- `vault_query(project="myproject", section="context")` — project overview
- `vault_query(project="myproject", section="tasks")` — active backlog
- `vault_search(query="...")` — cross-vault search
- `session_briefing(project="myproject")` — full context in one call
When writing to the vault: lessons → `90-lessons.md`, decisions → `30-architecture/`.

Replace myproject with your actual project slug (the directory name under 10_projects/).

  1. Registration — MCP servers are loaded at session start. Your client sees all tools from all servers.
  2. Discovery — The assistant reads tool names and descriptions to understand capabilities.
  3. Routing — Your CLAUDE.md instructions tell the assistant which tools to prefer for which situations. Multiple MCP servers coexist without conflict — each serves its domain.
  4. Adaptation — Hive’s session_briefing learns from your usage patterns. Sections you query often get prioritized automatically in future briefings.

Automating Session Briefing (Claude Code Hooks)

Section titled “Automating Session Briefing (Claude Code Hooks)”

Claude Code supports hooks — shell commands that run in response to lifecycle events. You can use a SessionStart hook to automatically remind your assistant to load context from Hive at the beginning of every session.

Add a SessionStart hook that outputs a system reminder. The text is injected into the conversation automatically:

In ~/.claude/settings.json (or .claude/settings.json per-project):

{
"hooks": {
"SessionStart": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "echo 'Call session_briefing(project=\"myproject\") to load context before starting work.'"
}
]
}
]
}
}

Replace myproject with your vault project slug. The assistant will see the reminder and call session_briefing at the start of every session.

For fully automatic context loading without any manual invocation, use an agent hook. This spawns a lightweight subagent that calls the tool directly:

{
"hooks": {
"SessionStart": [
{
"matcher": "",
"hooks": [
{
"type": "agent",
"prompt": "Call session_briefing(project=\"myproject\") and present the results to the user.",
"timeout": 30
}
]
}
]
}
}

This is more autonomous but spawns a subagent (consuming extra tokens). Option 1 is usually sufficient since the assistant follows the injected reminder reliably.

  • Hooks are a Claude Code feature, not part of Hive itself. Other MCP clients may have their own automation mechanisms.
  • You can also use UserPromptSubmit hooks for per-message context injection, but SessionStart is the natural fit for briefings.
  • See claude /hooks within Claude Code to manage hooks interactively.