settings — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited settings (Hook) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
<p align="center"> <img src="logo.png" alt="Glancey logo" width="150" height="150"> </p>
<p align="center"> <a href="https://github.com/nicholaspsmith/Glancey/actions/workflows/ci.yml"><img src="https://github.com/nicholaspsmith/Glancey/actions/workflows/ci.yml/badge.svg" alt="CI"></a> <a href="https://www.npmjs.com/package/glancey"><img src="https://img.shields.io/npm/v/glancey.svg" alt="npm version"></a> <a href="https://github.com/nicholaspsmith/Glancey/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="License: MIT"></a> <img src="https://img.shields.io/badge/node-%3E%3D20.0.0-brightgreen.svg" alt="Node.js version"> </p>
This project has been sunset. Improvements in Claude's underlying models have made the semantic code search capabilities that Glancey provided no longer necessary. Claude Code now handles codebase understanding well enough on its own that an external indexing layer adds little value. The package will remain available on npm for existing users, but no further development or maintenance is planned. Thank you to everyone who tried it out!
An MCP plugin that adds semantic code search to Claude Code and other AI coding agents, giving them deep context from your entire codebase.
Add Glancey to Claude Code:
claude mcp add --scope user --transport stdio glancey -- npx -y glanceyRestart Claude Code to start using semantic search.
For faster startup (no npm check on each run):
npm install -g glanceyThis automatically registers Glancey with Claude Code. Update manually with npm update -g glancey.
If automatic registration didn't work, manually add to Claude Code:
claude mcp add --scope user --transport stdio glancey -- npx -y glancey@latestIn Claude Code, run /mcp to see Glancey in the list of MCP servers.
After installing Glancey, run /init_project in Claude Code to set up your project:
/init_projectThis creates:
commit tool/glancey, /dashboard, /agents, and /init-projectThe hook is installed in .husky/ if you use Husky, otherwise in .git/hooks/.
Tip: If your agent isn't using Glancey tools (falling back to grep/find instead), run/glanceyto remind it. When launching new agents (subagents, worktrees, etc.), tell them to run/glanceybefore starting their task so they know to use Glancey's semantic search instead of manual exploration.
Glancey installs the following slash commands into .claude/commands/ for use in Claude Code:
| Command | Description |
|---|---|
/glancey | Show glancey tool usage tips and quick reference. Use this to remind agents to use semantic search instead of grep/find. |
/dashboard | Open the glancey web dashboard in the browser for real-time monitoring of index status, token savings, and usage. |
/agents | Launch 1-10 parallel Claude Code agents, each working autonomously on a beads task in its own git worktree. Supports --auto-merge, --count N, --model MODEL, and --budget N flags. |
/init-project | Initialize glancey in the current project — sets up CLAUDE.md, post-commit hook, and slash commands. |
For project-specific MCP configuration, add a .mcp.json to your project root:
{
"mcpServers": {
"glancey": {
"command": "npx",
"args": ["-y", "glancey@latest"]
}
}
}Create a .glancey.json file in your project root to customize indexing behavior. All options are optional - Glancey works out of the box with sensible defaults.
#### Minimal Configuration
For most projects, you only need to specify what to include:
{
"patterns": ["**/*.ts", "**/*.js"],
"instructions": "This is a TypeScript monorepo. Use semantic search to find relevant utilities."
}#### Full Configuration Example
{
"patterns": ["**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx"],
"excludePatterns": ["**/node_modules/**", "**/dist/**", "**/*.test.ts"],
"embedding": {
"backend": "gemini"
},
"chunking": {
"maxLines": 100,
"overlap": 20
},
"search": {
"semanticWeight": 0.7,
"keywordWeight": 0.3
},
"dashboard": {
"enabled": true,
"port": 24300,
"openBrowser": true
},
"instructions": "Project-specific instructions for AI agents working with this codebase."
}#### Configuration Options Reference
| Option | Description | Default |
|---|---|---|
patterns | Glob patterns for files to index | ["**/*.ts", "**/*.tsx", "**/*.js", "**/*.jsx", "**/*.py", "**/*.go", "**/*.rs", "**/*.java", "**/*.rb", "**/*.php", "**/*.c", "**/*.cpp", "**/*.h", "**/*.hpp", "**/*.cs", "**/*.swift", "**/*.kt"] |
excludePatterns | Glob patterns for files to exclude | ["**/node_modules/**", "**/dist/**", "**/.git/**", "**/build/**", "**/target/**", "**/__pycache__/**", "**/venv/**", "**/.venv/**", "**/vendor/**", "**/*.min.js", "**/*.min.css"] |
embedding.backend | Embedding provider: "gemini" or "ollama" | Auto-detect based on available API keys |
embedding.model | Override the default embedding model | Backend default |
embedding.ollamaConcurrency | Max concurrent Ollama requests (1-200) | 100 |
indexing.batchSize | Texts per embedding batch request (1-1000) | 200 |
chunking.maxLines | Maximum lines per chunk | 100 |
chunking.overlap | Overlapping lines between chunks for context continuity | 20 |
search.semanticWeight | Weight for semantic (vector) similarity (0-1) | 0.7 |
search.keywordWeight | Weight for BM25 keyword matching (0-1) | 0.3 |
dashboard.enabled | Enable the web dashboard | true |
dashboard.port | Port for the dashboard server | 24300 |
dashboard.openBrowser | Auto-open browser when dashboard starts | true |
instructions | Project-specific instructions returned by get_project_instructions | None |
#### Default Behavior
Without a .glancey.json file, Glancey will:
GEMINI_API_KEY is set, otherwise use local Ollama with qwen3-embedding:0.6b#### Environment Variables
Set these environment variables to configure embedding backends:
| Variable | Description | Default |
|---|---|---|
GEMINI_API_KEY | Google Gemini API key for cloud embeddings (free tier available) | None |
OLLAMA_URL | Custom Ollama server URL for local embeddings | http://localhost:11434 |
GLANCEY_PROJECT | Override the project path to index | Current working directory |
Backend Selection Priority:
embedding.backend is set in config, use that backendGEMINI_API_KEY is set, use GeminiAI coding agents typically need to read entire files to understand your codebase, which consumes significant context tokens. Glancey dramatically reduces token usage by:
| Without Glancey | With Glancey | Savings |
|---|---|---|
| Read 5-10 files to find auth code (~5000 lines) | search_code returns 3 chunks (~150 lines) | ~97% |
| Read entire file to understand structure | get_symbols_overview returns compact list | ~80-90% |
| Explore many files to understand codebase | summarize_codebase + list_concepts | ~95% |
| Read and compare files for duplicates | search_similar returns targeted results | ~90% |
The web dashboard displays real-time token savings statistics:
┌─────────────────────────────────────────────────────────────┐
│ MCP Server (index.ts) │
│ Exposes tools: index_codebase, search_code │
└─────────────────┬───────────────────────────────────────────┘
│
┌─────────────────▼───────────────────────────────────────────┐
│ CodeIndexer (indexer.ts) │
│ - AST-aware chunking for supported languages │
│ - Incremental indexing (only re-index changed files) │
│ - Hybrid search (semantic + keyword scoring) │
└─────────────────┬───────────────────────────────────────────┘
│
┌─────────────────▼───────────────────────────────────────────┐
│ Embedding Backends (embeddings/) │
│ Gemini │ Ollama (local) │
└─────────────────┬───────────────────────────────────────────┘
│
┌─────────────────▼───────────────────────────────────────────┐
│ LanceDB Vector Store │
│ Stored in .glancey/ directory │
└─────────────────────────────────────────────────────────────┘Glancey automatically selects the best available backend (in priority order):
GEMINI_API_KEY is set, free tier available) export GEMINI_API_KEY=AIza...Ollama provides free, local embeddings with no API rate limits. Perfect for indexing large codebases.
Requirements: Ollama 0.2.0 or newer (for batch embedding API)
ollama --version ollama pull qwen3-embedding:0.6b ollama run qwen3-embedding:0.6b "test"That's it! Glancey will automatically use Ollama when no Gemini API key is set.
#### Model Options
| Model | Size | Quality | Best For |
|---|---|---|---|
qwen3-embedding:0.6b | 639MB | Good | Most users (default) |
qwen3-embedding:4b | 2.5GB | Better | Users with 16GB+ RAM |
qwen3-embedding:8b | 4.7GB | Best | Users with 32GB+ RAM |
To use a different model, add to your .glancey.json:
{
"embedding": {
"backend": "ollama",
"model": "qwen3-embedding:4b"
}
}See Project Configuration for all configuration options including how to specify a backend.
Once installed, you'll have access to these tools:
index_codebaseIndex your codebase for semantic search:
> index_codebase
Indexed 150 files, created 800 chunks.With custom patterns:
> index_codebase(patterns: ["**/*.py"], excludePatterns: ["**/tests/**"])search_codeSearch using natural language:
> search_code(query: "authentication middleware")
## Result 1: src/middleware/auth.ts:1-50
...get_index_statusCheck index status:
> get_index_status
{
"indexed": true,
"fileCount": 150,
"chunkCount": 800,
"lastUpdated": "2024-12-27T12:00:00Z"
}clear_indexClear the index:
> clear_index
Index cleared.get_project_instructionsGet project-specific instructions from the config:
> get_project_instructions
Use semantic search for exploring this codebase. Always run tests before committing.Glancey includes a web dashboard for monitoring index status and usage.
The dashboard starts automatically when the MCP server runs and is available at:
http://127.0.0.1:24300The browser opens automatically on startup (configurable).
Configure the dashboard via the dashboard options in .glancey.json. See Configuration Options Reference for details.
.glancey/ directory)TypeScript, JavaScript, Python, Go, Rust, Java, Ruby, PHP, C/C++, C#, Swift, Kotlin, and more.
This error means no API keys are set and Ollama is not running/accessible.
Solutions:
# Install from https://ollama.com, then:
ollama pull qwen3-embedding:0.6bexport GEMINI_API_KEY=AIza...This occurs when switching between embedding backends (e.g., from Gemini to Ollama). Each backend produces different vector dimensions.
Solution: Force a full reindex:
> index_codebase(forceReindex: true)Large codebases may take time to index initially.
Tips:
excludePatterns to skip unnecessary directories (tests, generated code)If you encounter strange search results or errors:
Solution: Clear and rebuild the index:
> clear_index
> index_codebaseOr manually delete the .glancey/ directory and re-index.
MIT - See LICENSE for details.
Contributions welcome! Please read our Contributing Guide before submitting PRs.
Built with:
Inspired by:
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.