Queryable concept map of a codebase for LLM coding agents
Project description
combfind
Give an AI agent a codebase. combfind tells it where to look.
combfind builds a local index of a repository so an agent can find the right files and functions for a task with a plain-text query, without reading the entire codebase.
Install
For local LLM inference:
pip3 install "combfind[llm]" \
--extra-index-url https://abetlen.github.io/llama-cpp-python/whl/cpu
Download a model (one-time, ~2 GB):
combfind download-model
For a remote OpenAI-compatible API instead:
pip3 install "combfind[openai]"
Usage
# Index a repository (local LLM, auto-detected model)
combfind init /path/to/repo --db repo.db
# Index using a remote OpenAI-compatible API
COMBFIND_LLM_API_KEY=sk-... COMBFIND_LLM_MODEL=gpt-4o-mini \
combfind init /path/to/repo --db repo.db --llm-mode openai
# Query it
combfind query "how does authentication work" --db repo.db
combfind query "where are database migrations" --db repo.db --format json
# Inspect a symbol returned by a query
combfind inspect auth.service.AuthService --db repo.db
combfind inspect auth.service.AuthService --db repo.db --format json
Query output (text)
[1] Token Refresh (implementation) — 0.87
why: Handles session token validation and refresh logic.
auth/service.py
auth.service.AuthService.refresh :42-67
auth.service.AuthService.validate :70-91
Query output (JSON)
[
{
"rank": 1,
"concept": "Token Refresh",
"role": "implementation",
"score": 0.87,
"files": [
{
"path": "auth/service.py",
"symbols": [
{"name": "refresh", "qualified_name": "auth.service.AuthService.refresh", "start_line": 42, "end_line": 67},
{"name": "validate", "qualified_name": "auth.service.AuthService.validate", "start_line": 70, "end_line": 91}
]
}
],
"why_relevant": "Handles session token validation and refresh logic.",
"sibling_implementations": []
}
]
Inspect output (text)
auth.service.AuthService (class, auth/service.py:10-80)
concept: Token Refresh [implementation]
sig: class AuthService
callers (1):
auth.mock.MockAuthService auth/mock.py:5
callees (1):
auth.service.AuthService.validate auth/service.py:20
concept siblings (1):
auth.service.AuthService.validate [method] auth/service.py
Init options
| Flag | Default | Description |
|---|---|---|
--db |
<repo_path>/.combfind.db |
Output path |
--llm-model |
auto-detected | Path to a GGUF model file (local mode only) |
--llm-mode |
local |
LLM backend: local (llama.cpp) or openai (OpenAI-compatible API) |
--exclude-paths |
- | Paths to skip relative to repo root (repeatable) |
--exclude-regex |
- | Regex matched against file paths to skip |
--llm-workers |
1 |
Parallel LLM calls (useful with --llm-mode openai) |
--docgen |
off | Generate LLM docstrings for undocumented symbols (slow) |
--force |
off | Re-run all stages, ignoring the cache |
Query options
| Flag | Default | Description |
|---|---|---|
--db |
.combfind.db |
Database to query |
--top-k |
5 | Number of results to return |
--format |
text |
Output format: text or json |
Inspect options
| Flag | Default | Description |
|---|---|---|
--db |
.combfind.db |
Database to query |
--format |
text |
Output format: text or json |
Environment variables
| Variable | Default | Description |
|---|---|---|
COMBFIND_LOG_LEVEL |
info |
Log verbosity: debug, info, warning, error |
COMBFIND_LLM_BASE_URL |
- | Base URL for OpenAI-compatible API (e.g. https://api.openai.com/v1) |
COMBFIND_LLM_API_KEY |
- | API key for the remote LLM |
COMBFIND_LLM_MODEL |
gpt-4o-mini |
Model name to use with --llm-mode openai |
Using a remote LLM API
Pass --llm-mode openai to use any OpenAI-compatible API instead of a local model. Configure it with environment variables:
export COMBFIND_LLM_BASE_URL=https://api.openai.com/v1
export COMBFIND_LLM_API_KEY=sk-...
export COMBFIND_LLM_MODEL=gpt-4o-mini
combfind init /path/to/repo --db repo.db --llm-mode openai
Any API that speaks the OpenAI chat completions format works, including:
- OpenAI — set
COMBFIND_LLM_BASE_URL=https://api.openai.com/v1 - Ollama — set
COMBFIND_LLM_BASE_URL=http://localhost:11434/v1andCOMBFIND_LLM_API_KEY=ollama - LM Studio — set
COMBFIND_LLM_BASE_URL=http://localhost:1234/v1 - Any other OpenAI-compatible server — point
COMBFIND_LLM_BASE_URLat its/v1endpoint
--llm-model is ignored in openai mode; the model is selected via COMBFIND_LLM_MODEL.
Supported languages
Python, Go. More languages can be added via tree-sitter grammars.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file combfind-0.1.20.tar.gz.
File metadata
- Download URL: combfind-0.1.20.tar.gz
- Upload date:
- Size: 24.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
36b638175fc8ff41904397f7184c67c56162fd4f6251be7c36da26581c4f1e00
|
|
| MD5 |
94e3fa0a9716a271a94f71d3a55b0909
|
|
| BLAKE2b-256 |
38baaeeb1f38b85f0660941f829345b327523785524e1d66a97fcb2fc0ee43a4
|
Provenance
The following attestation bundles were made for combfind-0.1.20.tar.gz:
Publisher:
release.yml on The127/combfind
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
combfind-0.1.20.tar.gz -
Subject digest:
36b638175fc8ff41904397f7184c67c56162fd4f6251be7c36da26581c4f1e00 - Sigstore transparency entry: 1422751809
- Sigstore integration time:
-
Permalink:
The127/combfind@ed68334406458dd5667a591758eb5d4800ca3711 -
Branch / Tag:
refs/heads/master - Owner: https://github.com/The127
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@ed68334406458dd5667a591758eb5d4800ca3711 -
Trigger Event:
push
-
Statement type:
File details
Details for the file combfind-0.1.20-py3-none-any.whl.
File metadata
- Download URL: combfind-0.1.20-py3-none-any.whl
- Upload date:
- Size: 30.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
acf94a6e00626534d86534c3d653d218d84c1e89aceca51d4cde7a3970f6d046
|
|
| MD5 |
bca65ffff7f712b880b4ebda23a3d168
|
|
| BLAKE2b-256 |
3c1c308e11549438cf1bdaf325ba737c749829d9b1f5ef51f9d00a7f1555aee5
|
Provenance
The following attestation bundles were made for combfind-0.1.20-py3-none-any.whl:
Publisher:
release.yml on The127/combfind
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
combfind-0.1.20-py3-none-any.whl -
Subject digest:
acf94a6e00626534d86534c3d653d218d84c1e89aceca51d4cde7a3970f6d046 - Sigstore transparency entry: 1422751934
- Sigstore integration time:
-
Permalink:
The127/combfind@ed68334406458dd5667a591758eb5d4800ca3711 -
Branch / Tag:
refs/heads/master - Owner: https://github.com/The127
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@ed68334406458dd5667a591758eb5d4800ca3711 -
Trigger Event:
push
-
Statement type: