Configuration

Rocky looks for config files in two places, applied in this order (later overrides earlier):

  1. ~/.config/rocky/config.toml — your global settings, applies everywhere
  2. ./.rocky.toml — project-level override, only applies in that folder

If neither exists, Rocky uses sensible defaults.


Full example

[llm]
provider = "ollama"          # "claude" (default) or "ollama"
model = "qwen2.5-coder:7b"
ollama_base_url = "http://localhost:11434"

[session]
daily_budget = 3
min_gap_minutes = 120

[export]
pkg_dir = "~/Documents/Obsidian/MyVault/rocky"

[ui]
personality = true           # Rocky's voice and ASCII art (default: true)

[edges]
reuse = "off"                # "off" = always reuse, "14d" = 14-day cooldown, "5s" = 5-session cooldown

[sync]
enabled = false              # opt-in — enable PKG version control
auto_commit = true           # commit after each quiz/task/diff session
commit_visible = true        # print what was committed (set false to silence)
remote = "origin"
branch = "main"
remind_push_sessions = 5     # remind to push every N sessions (0 = off)
remind_push_days = 0         # OR remind every N calendar days (0 = off)

LLM settings

Using Claude (Anthropic)

[llm]
provider = "claude"
model = "claude-sonnet-4-6"

Requires ANTHROPIC_API_KEY set in your environment or a .env file:

bash
ANTHROPIC_API_KEY=sk-ant-your-key-here

Using Ollama (local, free)

[llm]
provider = "ollama"
model = "qwen2.5-coder:7b"
ollama_base_url = "http://localhost:11434"

Make sure Ollama is running (ollama serve) and the model is pulled (ollama pull qwen2.5-coder:7b).

Your GPU VRAMRecommended model
6 GBqwen2.5-coder:7b
4 GBqwen2.5:3b or phi4-mini
No GPU / CPU onlyqwen2.5:3b (slow)

Session settings

SettingDefaultWhat it does
daily_budget3Max quizzes Rocky will auto-trigger per day (manual calls bypass this)
min_gap_minutes120Minimum minutes between auto-triggered quizzes

These only apply to automatic triggers (git hooks, Claude Code hook). Manual rocky quiz always runs.


Export settings

SettingDefaultWhat it does
pkg_dir~/.rocky/pkg/Where Rocky writes Markdown notes and pkg.json

If you use Obsidian, set pkg_dir to a folder inside your Obsidian vault:

[export]
pkg_dir = "~/Documents/Obsidian/MyVault/rocky"

UI settings

SettingDefaultWhat it does
personalitytrueRocky the alien’s voice, ASCII art, and milestone celebrations

Set personality = false for plain, quiet output.


Sync settings

Rocky can version-control your PKG and pkg.json as a git repo. Disabled by default — opt in when ready.

SettingDefaultWhat it does
enabledfalseEnable PKG git tracking
auto_committrueAuto-commit after each session (when enabled)
commit_visibletruePrint ✓ Rocky: ... after auto-commit
remote"origin"Git remote name
branch"main"Branch to push to
remind_push_sessions5Remind to push every N sessions (0 = off)
remind_push_days0Remind every N calendar days instead (0 = off)

Only one of remind_push_sessions or remind_push_days should be non-zero.

Getting started with sync

bash
# 1. Enable sync in your config
echo '[sync]
enabled = true' >> ~/.config/rocky/config.toml

# 2. Initialise the git repo (optionally set a remote at the same time)
rocky sync --init https://github.com/you/rocky-pkg.git

# 3. Do some quizzes, then push manually when ready
rocky sync --push

# 4. On a new machine: clone and restore
git clone https://github.com/you/rocky-pkg.git ~/.rocky
rocky restore

Edges settings

Rocky automatically infers relationships between topics in your PKG and uses them to ask cross-concept questions. The reuse setting controls how often the same edge can be used as a question source.

SettingDefaultWhat it does
reuse"off"How soon the same edge can trigger a cross-concept question again

Values:

ValueBehaviour
"off"Always use an edge if it’s the best fit
"14d"Don’t reuse the same edge within 14 calendar days
"5s"Don’t reuse the same edge within 5 quiz sessions
[edges]
reuse = "14d"

Use a days-based cooldown if you want variety. Use "off" (default) to always surface the most relevant relationship regardless of recency.


Claude Code integration

The recommended setup wires Rocky’s two skills, the prompt-logging hook, and the queue-mode git hook in one shot:

bash
rocky install claude-all
rocky uninstall claude-all

After install, type /rocky-checkpoint in any Claude session to extract topics into the PKG, /rocky-quiz to drill the weakest, or /rocky-backfill to seed the PKG from a project’s existing git history with generic question banks. All three skills operate on the global PKG (cross-project dedup via repos[]).

If you want pieces:

CommandWhat it installs
rocky install skills~/.claude/skills/{rocky-checkpoint,rocky-quiz,rocky-backfill,rocky-promptiq}/SKILL.md
rocky install claudeJust the prompt-logging entry in ~/.claude/settings.json
rocky install stopLegacy: Stop hook → Ollama auto-extract on every Claude turn

Where Rocky stores data

PathWhat it is
~/.config/rocky/config.tomlYour global config
~/.rocky/graph.dbYour PKG — all topics, recall scores, review history
~/.rocky/pkg/Markdown notes + pkg.json backup
~/.rocky/pkg/pkg.jsonFull PKG export for backup and cross-machine restore
~/.rocky/summaries/Cached project context summaries (rocky explore)
./.rockyPer-project prompt log (only in hooked projects)
$ROCKY_HOMEIf set, overrides the ~/.rocky/ data dir entirely (useful for testing)

graph.db is never tracked by git. Everything in pkg/ is tracked when sync is enabled.