Configuration
Every tuning knob in sessionwiki, explained.
Config file
Copy the default config and edit it:
cp examples/sessions_config.json config.json
config.json is gitignored so your settings stay local. The converter auto-loads it if present.
Minimal config:
{
"redaction": {
"real_username": "your-unix-username",
"replacement_username": "USER"
}
}
Replace
your-unix-usernamewith the output ofwhoami. The converter uses it to scrub paths like/Users/<name>/…or/home/<name>/…before writing toraw/.
Full schema
{
"filters": {
// Skip sessions with a record younger than this many minutes.
// Prevents the converter from reading a .jsonl mid-write.
"live_session_minutes": 60,
// If non-empty, only convert projects whose slug matches one of these.
"include_projects": [],
// Skip projects whose slug contains one of these substrings.
"exclude_projects": [],
// Record types to drop entirely (noise / hook progress / queue ops)
"drop_record_types": [
"queue-operation",
"file-history-snapshot",
"progress"
]
},
"redaction": {
// Your OS username. Paths like /Users/<you>/ become /Users/USER/.
// Auto-detected from $USER if left empty.
"real_username": "",
// What to replace real_username with.
"replacement_username": "USER",
// Additional regexes to redact (Python re syntax).
// Anything matching → "<REDACTED>".
"extra_patterns": [
"(?i)(api[_-]?key|secret|token|bearer|password)[\"'\\s:=]+[\\w\\-\\.]{8,}",
"sk-[A-Za-z0-9]{20,}",
"[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+"
]
},
"truncation": {
// Max chars per tool result before truncation.
"tool_result_chars": 500,
// Max lines from a Bash stdout before truncation.
"bash_stdout_lines": 5,
// Max lines from a Write tool content preview.
"write_content_preview_lines": 5,
// Max chars per user prompt.
"user_prompt_chars": 4000,
// Max chars of assistant text rendered in the markdown body.
"assistant_text_chars": 8000
},
// Drop <thinking> blocks from assistant messages entirely.
// These are verbose and often redundant with the visible response.
"drop_thinking_blocks": true,
// Per-adapter config
"adapters": {
"obsidian": {
"vault_paths": ["~/Documents/Obsidian Vault"],
"exclude_folders": [".obsidian", "Templates", "_templates", ".trash"],
"min_content_chars": 50
}
}
}
Environment variables
| Variable | What it does |
|---|---|
SESSIONWIKI_HOME (legacy: LLMWIKI_HOME) |
Directory for raw/, wiki/, site/ and state. Default: the source checkout when run from a clone, otherwise the current directory (pip / uv / Docker installs). |
LLMWIKI_CONFIG |
Override the config file path. Defaults to ./config.json then examples/sessions_config.json. |
CLI flags
sessionwiki sync
python3 -m sessionwiki sync [options]
--adapter <name...> Only run the named adapter(s); default: all available
--since YYYY-MM-DD Skip sessions with a last record older than this
--project <substring> Only sync projects whose slug contains this substring
--include-current Don't skip live (<60 min) sessions
--force Ignore the state file; reconvert everything
--dry-run Preview what would be written, don't touch disk
sessionwiki build
python3 -m sessionwiki build [options]
--out <dir> Output directory; default: ./site
--synthesize Call the `claude` CLI once to generate an Overview
--claude <path> Path to the claude binary; default: /usr/local/bin/claude
sessionwiki serve
python3 -m sessionwiki serve [options]
--dir <dir> Directory to serve; default: ./site
--port N Port number; default: 8765
--host H Host to bind; default: 127.0.0.1 (localhost only)
--open Open the browser after starting
sessionwiki init
No options. Scaffolds raw/, wiki/, site/ and seeds wiki/index.md, wiki/log.md, wiki/overview.md.
sessionwiki adapters
No options. Lists every registered adapter and whether its session store is present on the current machine.
.llmwikiignore
Gitignore-style file at the repo root. One pattern per line. Sessions matching any pattern are skipped during sync.
Example:
# Skip a whole project
confidential-client/*
# Skip anything before a date
*2025-11-*
# Skip a specific session
ai-newsletter/2026-04-04-*secret*
Adapter configuration
Claude Code
Default session store: ~/.claude/projects/
Override via the adapter config block (above).
Obsidian
Default vault locations checked:
~/Documents/Obsidian Vault~/Obsidian
Override in config.json:
{
"adapters": {
"obsidian": {
"vault_paths": [
"~/Documents/Obsidian Vault",
"~/work/second-vault"
],
"exclude_folders": [".obsidian", "Templates"],
"min_content_chars": 100
}
}
}
Files smaller than min_content_chars are skipped (mostly empty notes).
Codex CLI
v0.1 stub. The adapter imports and registers but does not yet parse records. Configuration will land in v0.2.
Changing the theme
Theme colours live in sessionwiki/build.py inside the CSS string constant, under the :root block. The main tokens:
--accent: #7C3AED; /* primary accent (purple) */
--accent-light: #a78bfa;
--accent-bg: #f5f3ff;
Change these and rebuild. The dark-mode variants auto-derive unless you override them too.