Skip to main content

🐬 Dolphin

Hybrid search across all your repositories.

PyPI npm MIT License


Dolphin indexes your repositories and lets you perform hybrid (semantic + keyword) search across them.

Quickstart

# Install
uv pip install pb-dolphin

# Set your OpenAI key (used for embeddings)
export OPENAI_API_KEY="sk-..."

# Initialize, add a repo, and search
dolphin init
dolphin add-repo my-project /path/to/project
dolphin index my-project
dolphin search "database connection pooling"

Dolphin indexes your code with language-aware chunking, embeds it, and returns ranked results.

Want live re-indexing as you edit files? Start the server:

dolphin serve

Agent Integration

A small companion MCP server is available at bunx dolphin-mcp. Add this to your AI app's MCP config:

{
  "mcpServers": {
    "dolphin": {
      "command": "bunx",
      "args": ["dolphin-mcp"]
    }
  }
}

Make sure dolphin serve is running, and your agent can now search, retrieve chunks, and read files from your indexed repos.

Additionally, a Claude skill is available in this repo's marketplace as a personal Plugin.

How it works

  You / Agent
        |
        v
  ┌───────────────────────────────────────┐
  │             Dolphin                   │
  │                                       │
  │   CLI ─── REST API ─── MCP Bridge     │
  │               |                       │
  │        ┌──────┴──────┐                │
  │        v             v                │
  │    LanceDB       SQLite               │
  │   (vectors)    (metadata + BM25)      │
  └───────────────────────────────────────┘

Indexing: Your code is scanned, split into semantic chunks using language-aware AST parsers, embedded via OpenAI, and stored in LanceDB (vectors) and SQLite (metadata + full-text).

Searching: Your query is embedded and matched against both vector similarity and BM25 keyword relevance. Results are fused with Reciprocal Rank Fusion, optionally reranked with a cross-encoder, and returned as structured snippets with file paths, line numbers, and scores.

Features

Intelligent hybrid search

  • Hybrid vector + BM25 keyword search with RRF fusion
  • Optional cross-encoder reranking for +20-30% ranking improvement
  • MMR diversity to reduce redundant results
  • Filter by repo, language, path, or glob pattern

Language-aware indexing

  • AST-based chunking for Python, TypeScript, JavaScript, Markdown, SQL, and Svelte
  • Fallback text chunking for everything else
  • Respects .gitignore and an optional repo-specific Dolphin config (dolphin init --repo)

Live sync

  • File-watching built into dolphin serve so edits are re-indexed automatically
  • Git-aware: handles branch switches gracefully

Multiple interfaces

  • dolphin CLI with compact, verbose, and JSON output modes
  • FastAPI server with full search and retrieval endpoints
  • MCP server for integration via bunx dolphin-mcp

CLI reference

Command What it does
dolphin init Create config at ~/.dolphin/config.toml
dolphin add-repo <name> <path> Register a repository
dolphin index <name> Index (or re-index) a repository
dolphin search <query> Search across indexed repos
dolphin serve Start API server with file-watching
dolphin status Show indexed repos and stats
dolphin repos List registered repositories
dolphin rm-repo <name> Remove a repo and its data
dolphin config --show Display current config

Search options

dolphin search "error handling" \
  --repo myapp \
  --lang py \
  --path src/ \
  --top-k 10 \
  --verbose          # or --json for scripting

Configuration

Dolphin auto-creates its config at ~/.dolphin/config.toml when you run dolphin init. The defaults work well out of the box.

default_embed_model = "small"   # "small" (faster) or "large" (better)

[retrieval]
top_k = 8

[retrieval.hybrid_search]
enabled = true
fusion_method = "rrf"

For per-repo overrides (custom ignore patterns, chunking settings), run dolphin init --repo inside a repository.

Full config reference: docs/ARCHITECTURE.md

Optional: cross-encoder reranking

For the best possible search quality, enable cross-encoder reranking. This re-scores results pairwise against your query using an ML model.

uv pip install "pb-dolphin[reranking]"

Then in ~/.dolphin/config.toml:

[retrieval.reranking]
enabled = true

Trade-offs: ~2GB disk for model weights, 2-3x slower searches.

Requirements

Dependency Purpose
Python 3.12+ Core runtime
uv Python package management
OpenAI API key Embedding generation
Bun MCP bridge runtime (optional)
Git Repository scanning

Troubleshooting

Server not responding?

curl http://127.0.0.1:7777/v1/health   # check health
lsof -i :7777                           # check port
dolphin serve                            # start it

No search results?

dolphin status                                    # verify repos are indexed
dolphin index <repo-name> --full --force          # force re-index

MCP not connecting?

  • Make sure dolphin serve is running
  • Check that Bun is installed: bun --version
  • Set DOLPHIN_API_URL if the server isn't at http://127.0.0.1:7777

License

MIT — Plastic Beach, LLC

Metadata

Release files for pb-dolphin 0.2.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pb-dolphin 0.2.4
File Size Uploaded Provenance Actions
pb_dolphin-0.2.4.tar.gz 245.5 kB With provenance Details for pb_dolphin-0.2.4.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for pb-dolphin 0.2.4
File Interpreter ABI Platform Actions
pb_dolphin-0.2.4-py3-none-any.whl Python 3 none any Details for pb_dolphin-0.2.4-py3-none-any.whl

Total release size: 532.1 kB

Release files / pb_dolphin-0.2.4.tar.gz

Download URL pb_dolphin-0.2.4.tar.gz
Size 245.5 kB
Tags Source
SHA-256 checksum
How to use checksums
4cec7d6bc374d046ddaa930e1b0fd5b9f611bbd63b295360398c197d7380f41f
BLAKE2b-256 checksum
How to use checksums
f59fd04bbb8ed6828ac40229d3a84cfe160e6867274461d9b0b875dfc49d7efa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 28, 2026.

Transparency log

Release files / pb_dolphin-0.2.4-py3-none-any.whl

Download URL pb_dolphin-0.2.4-py3-none-any.whl
Size 286.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2aebf9a7d6280466a4e6c139392d049a3c241825f7d639664713168b3c0ba1cb
BLAKE2b-256 checksum
How to use checksums
7ce563e8a50e56aeb6893a17493a5a26bcee7a34e42ee54aeee4314c276140d0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 28, 2026.

Transparency log

Security for pb-dolphin 0.2.4

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for pb_dolphin-0.2.4.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 28, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page