Quickstart
After installation, the fastest way to confirm Shaktiman is working is to index one of your own projects and run a query. This path does not require Claude Code — it talks to the index directly. Once this works end-to-end, hooking up Claude Code is a three-step setup.
The commands below assume shaktiman and shaktimand are on your PATH. If they
aren't, use ./shaktiman and ./shaktimand from where you built them.
1. Pick a project
cd /path/to/your/project
Your project should contain source files in one of the supported languages.
2. Initialize the config directory
shaktiman init .
Creates .shaktiman/shaktiman.toml (a commented sample) in your project root. Every
value is optional — the defaults are good.
3. Index the project
shaktiman index .
Progress streams to stdout: Indexing: N/M files (X%). On a modest repo (a few
thousand files) this completes in under a minute. When it's done you'll see the
per-language breakdown:
Indexed: 4213 files | 58104 chunks | 41220 symbols
typescript: 3210 files
python: 102 files
go: 901 files
Add --embed to also generate vector embeddings. This requires Ollama running
locally with a compatible embedding model (ollama pull nomic-embed-text). Without
it, search falls back to keyword mode — still fast, still useful.
The CLI (shaktiman index) is opt-in for embeddings. The daemon-launched indexer
that Claude Code triggers honors embedding.enabled (default true) instead, so
once you wire up Claude Code your index will start embedding automatically. See
Embeddings for the full story.
4. Confirm the index
shaktiman status .
Prints file, chunk, symbol, and parse-error counts plus per-language file counts. A healthy first-index looks like:
- Files, chunks, symbols all non-zero.
- Parse errors a small fraction of total files (ideally zero; a handful is normal for mixed-language repos with exotic constructs).
- Languages list matches what you actually have in the repo.
If any of those look off, see Troubleshooting → Empty or bad results. Otherwise, move on.
5. Run a search
Pick a term you'd expect to find in your project — a function name, a concept, a filename. For example:
shaktiman search "error handling" --root . --format text
You should see ranked pointers: file path, line range, symbol name, score — one per
line. That's the locate mode output the MCP server returns by default.
If the search returns nothing, see Troubleshooting → Empty or bad results.
6. You're done
The index is ready. You can:
- Run more CLI queries — see the CLI Reference for every subcommand.
- Wire Shaktiman into Claude Code — see Claude Code Setup.
- Tune the index and backends — see Configuration.