Configuration — config.yaml & ignore files
The .repowise/ directory, the config.yaml file repowise generates on first init, and how to control which files get indexed with .gitignore, nested .gitignore, .repowiseIgnore, and --exclude.
Everything repowise knows about a repository lives in a .repowise/
directory at the repo root, created on the first
repowise init. The main configuration file is
.repowise/config.yaml — repowise writes it for you during init, and
you can edit it by hand afterwards.
The .repowise/ directory
.repowise/
├── wiki.db # SQLite — pages, symbols, graph, git metadata, decisions
├── lancedb/ # Vector search index
├── config.yaml # Provider, model, embedder, exclude patterns
├── state.json # Last sync commit, page counts, token usage
├── mcp.json # MCP server configuration
└── .env # API keys (gitignored automatically)repowise adds .repowise/ to your .gitignore automatically. It's a
local cache, not a source of truth — don't commit it.
config.yaml
Generated after the first init and updated when you pass flags like
--commit-limit or --follow-renames. You can also edit it directly;
changes take effect on the next init, update, serve, or mcp run.
provider: anthropic # LLM provider
model: claude-sonnet-4-6 # Model identifier
embedder: gemini # Embedding provider for semantic search
reasoning: auto # auto | off | minimal
exclude_patterns: # Gitignore-style patterns
- vendor/
- "*.generated.*"
- proto/
commit_limit: 500 # Max commits per file for git analysis
follow_renames: false # Track file renames in git historyProp
Type
Provider keys and a few runtime knobs are set via environment
variables, not config.yaml — see
Environment variables. Code-health rules
are configured separately in .repowise/health-rules.json.
Controlling what gets indexed
repowise decides which files to document using, in order:
.gitignore— respected automatically, using the samegitwildmatchformat git uses. repowise reads the repo-root.gitignoreand nested.gitignorefiles in subdirectories, just like git: a.gitignorein any directory applies to that directory's contents..repowiseIgnore— same syntax as.gitignore, for repowise-only exclusions you don't want in git. Honoured at the repo root and in any subdirectory.exclude_patterns/--exclude— extra patterns from the CLI, persisted toconfig.yamland reapplied on everyupdate.- Built-in exclusions (always applied):
.git/,.repowise/,node_modules/,.venv/,dist/,build/,__pycache__/, binary files, lockfiles, and minified assets (*.min.js,*.min.css).
Monorepos & yarn/npm workspaces — because nested .gitignore files
are honoured, a workspace package that keeps its own .gitignore
(excluding that package's build output, generated bundles, coverage,
etc.) is respected without any extra configuration. You don't need to
duplicate those patterns at the repo root.
Add extra patterns on the command line — they're saved to config.yaml
and reused by later update runs:
repowise init -x vendor/ -x "*.generated.ts" -x proto/ -x "**/*.pb.go"Or drop a .repowiseIgnore file at the repo root or in any subdirectory
for granular control without touching .gitignore:
# packages/web/.repowiseIgnore
generated/
*.stories.tsxYou can also skip categories of files with flags: --skip-tests
excludes test files, and --skip-infra excludes Dockerfiles, Makefiles,
and shell scripts.
Submodules
Git submodule directories are excluded by default (repowise reads
.gitmodules to detect them). Include them with:
repowise init --include-submodules