Hybrid Code Search
BM25 full-text + vector semantic search across your codebase. Local embeddings via sqlite-ai. Incremental indexing. Zero API cost.
Moneypenny is an open-source, local-first coding agent. Three modes, one stack:
All three share the same storage, search, context, and governance layers. The difference is the transport: CLI for interactive work, MCP for IDE integration, daemon for autonomous agents.
Everything lives in a SQLite file in your repo.
Other coding agents are cloud-first. Your code context goes to their servers. Your agent’s state is ephemeral or locked in their platform. You don’t control the cost, the data, or the infrastructure.
Moneypenny inverts all of that:
Hybrid Code Search
BM25 full-text + vector semantic search across your codebase. Local embeddings via sqlite-ai. Incremental indexing. Zero API cost.
Governance & Policy
Policy checks on every tool call. Denial-aware control flow. Auditable decisions. Credential redaction. Cost limits per session and per turn.
Portable State
The database is the runtime. One SQLite file per project. Back up by copying a file. Inspect with any SQLite client. No infrastructure.
Agents as Markdown
Define agents in .md files with YAML frontmatter. The body is the
system prompt. Tools, schedule, model, and policies in the frontmatter.
The database is the runtime. Code search, policy evaluation, and audit logging all execute inside SQLite. The orchestrator is a thin async loop; the intelligence lives at the data boundary.
User message (CLI, MCP, or HTTP) → Incremental index check → Context assembly (code + history + skills) → Policy evaluation → LLM generation (your API key) → Tool execution (policy-gated, audited) → ResponseEvery step operates on the same SQLite file. No Postgres, no Redis, no vector database. The entire surface area is available over MCP, so every operation can be triggered from Cursor, Claude Code, or any MCP-compatible client.
The mp command is the primary interface:
npx moneypenny initmp chat "refactor the auth module to use JWT"mp search "where do we handle rate limiting?"mp doctorAlready use Cursor or Claude Code? Add Moneypenny as a sidecar:
mp setup cursor # writes .cursor/mcp.jsonmp setup claude # writes .mcp.jsonMoneypenny’s code search, policy engine, and audit log are now available as tools in your existing agent.
Start the server and hit the REST endpoints:
mp servecurl http://localhost:4820/api/sessionscurl http://localhost:4820/api/events?follow=1Useful for integrations, CI pipelines, and custom dashboards.
SQLite extensions that handle vector search, embeddings, and local inference:
| Component | Role |
|---|---|
sqlite-ai | On-device LLM inference, embeddings, chat (GGUF) |
sqlite-vec | Vector search, SIMD, quantization |
FTS5 | Full-text search with BM25 scoring |