npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

opencode-beacon

v1.3.3

Published

Semantic code search plugin for OpenCode — find code by meaning, not just strings

Readme

Beacon for OpenCode

Semantic code search plugin for OpenCode — find code by meaning, not just strings.

Beacon indexes your codebase using embeddings and provides 15 powerful tools for semantic search, dependency analysis, code quality checks, and more.

License OpenCode Node

Features

🔍 Core Search

  • Semantic Search — Find code by meaning, not just keyword matching
  • Hybrid Search — Vector + BM25 + identifier boosting for best recall
  • Smart Context Injection — Auto-inject relevant code into context
  • Query Expansion — Expand queries with synonyms (Turkish + English)
  • Incremental Suggestions — Autocomplete for search queries

📊 Analysis

  • File Relationship Graph — Who imports whom? Dependency tracking
  • Change Impact Analysis — What breaks if I change this file?
  • Pattern Search — Find API endpoints, DB queries, React components, etc.
  • Code Smell Detection — Dead code, duplicates, complex functions
  • Documentation Linking — Connect code to JSDoc, README, related docs

⏰ Advanced

  • Temporal Search — Search within git history date ranges
  • Multi-repo Search — Search across multiple repositories
  • Semantic Diff — Compare files by meaning, not just syntax

Requirements

  • OpenCode — Latest version
  • Embedding API — One of:
    • Ollama (local, free) — nomic-embed-text-v2-moe or any Ollama embedding model
    • OpenAItext-embedding-3-small or text-embedding-3-large
    • Any OpenAI-compatible API — Custom embedding endpoints

Ollama Setup (Local, Free)

# Install Ollama (if not installed)
curl -fsSL https://ollama.com/install.sh | sh

# Pull embedding model (768 dimensions, ~957 MB)
ollama pull nomic-embed-text-v2-moe

# Start Ollama service
sudo systemctl start ollama

OpenAI Setup

# Set your OpenAI API key
export OPENAI_API_KEY="sk-..."

Custom API Setup

Any OpenAI-compatible embedding API works. Just configure in global config (see below).

Installation

Option 1: NPM (Recommended)

# In your OpenCode project
npm install opencode-beacon

Then add to opencode.json:

{
  "plugin": ["opencode-beacon"]
}

Option 2: Local Plugin

# Clone to OpenCode plugins directory
git clone https://github.com/nixaut-codelabs/opencode-beacon.git ~/.config/opencode/plugins/beacon

# Install dependencies
cd ~/.config/opencode/plugins/beacon
npm install

Option 3: Manual

Copy plugin.ts and scripts/ to ~/.config/opencode/plugins/beacon/:

mkdir -p ~/.config/opencode/plugins/beacon
cp plugin.ts ~/.config/opencode/plugins/beacon/
cp -r scripts ~/.config/opencode/plugins/beacon/
cp package.json ~/.config/opencode/plugins/beacon/
cd ~/.config/opencode/plugins/beacon
npm install

Usage

Once installed, Beacon automatically indexes your codebase on session start. Use the 15 tools in OpenCode:

Search Tools

| Tool | Description | Example | |------|-------------|---------| | beacon_search | Semantic code search | "user authentication flow" | | beacon_context | Smart context injection | "database connection setup" | | beacon_expand | Query expansion | "giriş sistemi"["login", "auth"] | | beacon_suggest | Autocomplete suggestions | "user ser"["userService", "user-service.ts"] |

Analysis Tools

| Tool | Description | Example | |------|-------------|---------| | beacon_graph | File dependencies | file: "auth.ts", type: "dependents" | | beacon_impact | Change impact analysis | file: "types.ts" → risk level | | beacon_pattern | Pattern matching | pattern: "api-endpoint" | | beacon_smell | Code smell detection | type: "dead_code" |

Advanced Tools

| Tool | Description | Example | |------|-------------|---------| | beacon_temporal | Git history + search | query: "auth", since: "2024-01-01" | | beacon_multi | Multi-repo search | query: "config", repos: "repo1,repo2" | | beacon_diff | Semantic file comparison | file1: "a.ts", file2: "b.ts" | | beacon_docs | Documentation linking | file: "auth.ts" → JSDoc, README |

Utility Tools

| Tool | Description | |------|-------------| | beacon_status | Health check | | beacon_index | Index status | | beacon_reindex | Force re-index |

Configuration

Beacon uses a 3-tier config system: defaultsglobalproject (project wins).

Global Config (Recommended)

Platform-specific locations:

| Platform | Path | |----------|------| | Linux | ~/.config/opencode/beacon.json | | macOS | ~/Library/Application Support/opencode/beacon.json | | Windows | %APPDATA%/opencode/beacon.json |

Example global config:

{
  "embedding": {
    "provider": "ollama",
    "api_base": "http://localhost:11434/v1",
    "model": "nomic-embed-text-v2-moe",
    "api_key_env": "",
    "dimensions": 768
  },
  "search": {
    "top_k": 10,
    "similarity_threshold": 0.25
  },
  "storage": {
    "path": ".opencode/.beacon"
  }
}

Project Config

Create .opencode/beacon.json in your project root to override global settings:

{
  "embedding": {
    "model": "text-embedding-3-small",
    "dimensions": 1536
  }
}

Embedding Providers

Ollama (Local, Free)

{
  "embedding": {
    "provider": "ollama",
    "api_base": "http://localhost:11434/v1",
    "model": "nomic-embed-text-v2-moe",
    "api_key_env": "",
    "dimensions": 768
  }
}

OpenAI

{
  "embedding": {
    "provider": "openai",
    "api_base": "https://api.openai.com/v1",
    "model": "text-embedding-3-small",
    "api_key_env": "OPENAI_API_KEY",
    "dimensions": 1536
  }
}

Set your API key: export OPENAI_API_KEY="sk-..."

Custom OpenAI-Compatible API

Any API that implements /v1/embeddings endpoint:

{
  "embedding": {
    "provider": "custom",
    "api_base": "https://your-api.com/v1",
    "model": "your-embedding-model",
    "api_key_env": "YOUR_API_KEY_ENV_VAR",
    "dimensions": 1024
  }
}

Slash Commands

Beacon adds these slash commands to OpenCode:

| Command | Description | |---------|-------------| | /beacon-search <query> | Semantic code search | | /beacon-status | Show index status | | /beacon-reindex | Force full re-index | | /beacon-impact <file> | Analyze change impact | | /beacon-smell | Detect code smells |

Notifications

Beacon shows toast notifications when:

  • Index is ready after session start
  • Re-index completes
  • Errors occur during sync

How It Works

  1. Indexing — On session start, Beacon walks your codebase, chunks files, and generates embeddings via configured API
  2. Storage — Embeddings stored in SQLite with sqlite-vec for fast vector search
  3. Hybrid Search — Combines vector similarity, BM25 keyword matching, and identifier boosting
  4. Incremental Updates — Only re-indexes changed files (tracked via git hash)
  5. Auto-sync — Background sync on session start, incremental updates on file edits

Architecture

plugin.ts          → OpenCode plugin wrapper (15 tools)
scripts/
├── lib/
│   ├── db.js          → SQLite + sqlite-vec operations
│   ├── embedder.js    → OpenAI-compatible embedding API
│   ├── chunker.js     → Code chunking strategy
│   ├── graph.js       → Dependency graph builder
│   ├── patterns.js    → Code pattern definitions
│   ├── synonyms.js    → Query expansion (TR + EN)
│   └── ...
├── search.js          → Core semantic search
├── context.js         → Smart context injection
├── sync.js            → Full/diff-based indexing
└── ...

Performance

| Metric | Value | |--------|-------| | Index speed | ~100 files/sec (GPU), ~20 files/sec (CPU) | | Search latency | <200ms (GPU), <500ms (CPU) | | Memory usage | ~50MB base, +1MB per 1000 chunks | | Disk usage | ~1MB per 1000 chunks |

GPU Acceleration: If you have an AMD GPU with ROCm, Beacon automatically uses it for 5-10x faster embedding.

Examples

Find authentication code

User: "Where is the authentication logic?"
→ beacon_search(query="authentication logic")
→ Returns: auth.ts, middleware/auth-guard.ts, routes/login.ts

What breaks if I change types.ts?

User: "What files depend on types.ts?"
→ beacon_impact(file="types.ts")
→ Returns: 5 direct dependents, 12 transitive, risk: medium

Find all API endpoints

User: "Show me all API endpoints"
→ beacon_pattern(pattern="api-endpoint")
→ Returns: 23 endpoints across 8 files

Search recent changes

User: "What auth code changed this week?"
→ beacon_temporal(query="auth", since="2025-01-01")
→ Returns: 4 files changed in date range

Troubleshooting

"No index found"

Run beacon_reindex or restart OpenCode session.

"Ollama connection failed"

Ensure Ollama is running:

systemctl status ollama
sudo systemctl start ollama

Slow search

  • Use GPU (ROCm) for 5-10x speedup
  • Reduce search.top_k in config
  • Increase search.similarity_threshold to filter more aggressively

Dimension mismatch

If you changed embedding models, run beacon_reindex to rebuild the index.

Contributing

Contributions welcome! Please:

  1. Fork the repo
  2. Create a feature branch
  3. Test your changes
  4. Submit a PR

Credits

  • Original Beaconsagarmk/beacon-plugin for Claude Code
  • OpenCode Port — Community effort
  • Ollama — Local embedding inference
  • sqlite-vec — Vector search in SQLite

License

MIT © 2026 OpenCode Community

Original Beacon: MIT © 2026 Sagar MK