mirror of
https://github.com/DeusData/codebase-memory-mcp.git
synced 2026-11-04 08:13:37 +08:00
526 lines
46 KiB
HTML
526 lines
46 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Codebase Memory — Connect your code, docs and infrastructure</title>
|
|
<meta name="description" content="Local code intelligence for developers and AI agents. Connect code, documentation and infrastructure in a persistent graph. Explore CBM Lens, query 17 MCP tools, configure agent integrations, and investigate change and test impact.">
|
|
<meta name="author" content="DeusData">
|
|
<meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1">
|
|
<meta name="theme-color" content="#0a0e0d">
|
|
<meta property="og:title" content="Codebase Memory — Understand the whole repository">
|
|
<meta property="og:description" content="Connect code, docs and infrastructure. Explore the graph in CBM Lens, give your agent structural context, and follow the impact of a change.">
|
|
<meta property="og:type" content="website">
|
|
<meta property="og:url" content="https://deusdata.github.io/codebase-memory-mcp/">
|
|
<meta property="og:image" content="https://deusdata.github.io/codebase-memory-mcp/images/lens-architecture.png">
|
|
<meta property="og:image:alt" content="CBM Lens architecture view of the codebase-memory-mcp repository">
|
|
<meta property="og:site_name" content="Codebase Memory">
|
|
<meta name="twitter:card" content="summary_large_image">
|
|
<meta name="twitter:title" content="Codebase Memory — Understand the whole repository">
|
|
<meta name="twitter:description" content="Local code intelligence for developers and AI agents. Code, docs, infrastructure, CBM Lens and experimental Smart CI.">
|
|
<meta name="twitter:image" content="https://deusdata.github.io/codebase-memory-mcp/images/lens-architecture.png">
|
|
<link rel="canonical" href="https://deusdata.github.io/codebase-memory-mcp/">
|
|
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect width='32' height='32' rx='6' fill='%230a0e0d'/%3E%3Cg stroke='%2333ff99' stroke-width='2'%3E%3Cpath d='M9 9L23 16L10 24Z' fill='none'/%3E%3C/g%3E%3Cg fill='%2333ff99'%3E%3Ccircle cx='9' cy='9' r='3.5'/%3E%3Ccircle cx='23' cy='16' r='3.5'/%3E%3Ccircle cx='10' cy='24' r='3.5'/%3E%3C/g%3E%3C/svg%3E">
|
|
<script type="application/ld+json">
|
|
{
|
|
"@context": "https://schema.org",
|
|
"@type": "SoftwareApplication",
|
|
"name": "codebase-memory-mcp",
|
|
"alternateName": "Codebase Memory",
|
|
"applicationCategory": "DeveloperApplication",
|
|
"operatingSystem": "macOS, Linux, Windows",
|
|
"description": "Local code intelligence connecting source code, documentation and infrastructure in a persistent knowledge graph, with CBM Lens, MCP tools, agent integrations and experimental C/C++ test selection.",
|
|
"url": "https://deusdata.github.io/codebase-memory-mcp/",
|
|
"downloadUrl": "https://github.com/DeusData/codebase-memory-mcp/releases/latest",
|
|
"codeRepository": "https://github.com/DeusData/codebase-memory-mcp",
|
|
"programmingLanguage": "C",
|
|
"license": "https://opensource.org/licenses/MIT",
|
|
"isAccessibleForFree": true,
|
|
"offers": { "@type": "Offer", "price": "0", "priceCurrency": "USD" },
|
|
"featureList": [
|
|
"Persistent local graph of code, documentation and infrastructure",
|
|
"Structural, full-text and local semantic search",
|
|
"Hybrid LSP semantic type resolution for supported language families",
|
|
"17 MCP tools, CLI access and Cypher graph queries",
|
|
"CBM Lens source navigation, architecture maps and Galaxy graph",
|
|
"Documentation sections, PDF text pages and architecture decision records",
|
|
"Static infrastructure, deployment and configuration relationships",
|
|
"Cross-service and cross-repository linking",
|
|
"Change impact, coverage diagnostics and optional runtime trace ingestion",
|
|
"Experimental C/C++ test selection using static relationships and admitted per-test coverage",
|
|
"45 automatic/conditional client surfaces with client-specific setup",
|
|
"Optional browser AI with on-device inference"
|
|
],
|
|
"author": { "@type": "Organization", "name": "DeusData", "url": "https://github.com/DeusData" }
|
|
}
|
|
</script>
|
|
<style>
|
|
:root {
|
|
color-scheme: dark;
|
|
--bg: #0a0e0d; --panel: #0f1513; --raised: #131b18; --line: #243a30;
|
|
--green: #33ff99; --muted: #9eb5a8; --text: #dce8e1; --cyan: #66d9e8; --selected: #12251d;
|
|
--mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
}
|
|
* { box-sizing: border-box; }
|
|
html { scroll-behavior: smooth; scroll-padding-top: 100px; }
|
|
body { margin: 0; background: var(--bg); color: var(--text); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; font-size: 16px; line-height: 1.65; }
|
|
a { color: var(--green); text-decoration: none; text-underline-offset: 4px; }
|
|
a:hover { text-decoration: underline; }
|
|
a:focus-visible, summary:focus-visible { outline: 2px solid var(--green); outline-offset: 5px; }
|
|
::selection { background: var(--green); color: var(--bg); }
|
|
img { max-width: 100%; height: auto; display: block; }
|
|
p { margin: 0 0 20px; }
|
|
h1, h2, h3 { color: #edf5f0; line-height: 1.12; letter-spacing: -.035em; margin: 0; font-weight: 600; }
|
|
h1 { font-size: clamp(48px, 6.3vw, 84px); max-width: 820px; }
|
|
h2 { font-size: clamp(32px, 4vw, 49px); max-width: 800px; }
|
|
h3 { font-size: 22px; line-height: 1.3; }
|
|
code { font-family: var(--mono); font-size: .87em; overflow-wrap: anywhere; color: #c3decf; }
|
|
p code, li code { padding: 2px 5px; border: 1px solid var(--line); border-radius: 4px; background: var(--panel); }
|
|
pre { margin: 0; white-space: pre-wrap; overflow-wrap: anywhere; }
|
|
pre code { font-size: 13px; line-height: 1.9; }
|
|
.container { width: min(1180px, calc(100% - 64px)); margin: 0 auto; }
|
|
.skip { position: absolute; top: -80px; left: 20px; padding: 10px 20px; background: var(--green); color: var(--bg); z-index: 10; }
|
|
.skip:focus { top: 10px; }
|
|
.site-header { position: sticky; top: 0; z-index: 5; border-bottom: 1px solid var(--line); background: rgba(10,14,13,.95); backdrop-filter: blur(16px); }
|
|
.nav { display: flex; align-items: center; justify-content: space-between; min-height: 76px; gap: 28px; }
|
|
.brand { display: flex; align-items: center; gap: 10px; font-weight: 600; color: var(--text); letter-spacing: -.025em; white-space: nowrap; }
|
|
.brand svg { width: 27px; height: 27px; color: var(--green); }
|
|
.nav-links { display: flex; gap: 28px; align-items: center; font-size: 13px; }
|
|
.nav-links a { color: var(--muted); }
|
|
.nav-links a:hover { color: var(--green); }
|
|
.nav-links .nav-install { border: 1px solid var(--line); border-radius: 6px; padding: 8px 15px; color: var(--text); }
|
|
.eyebrow { font-family: var(--mono); font-size: 11px; font-weight: 500; letter-spacing: .12em; text-transform: uppercase; color: var(--green); margin-bottom: 23px; }
|
|
.hero { padding: 80px 0 0; }
|
|
.hero-top { display: grid; grid-template-columns: 1fr 270px; gap: 65px; align-items: end; }
|
|
.hero h1 span { color: var(--green); }
|
|
.hero-intro { color: var(--muted); max-width: 690px; font-size: 19px; line-height: 1.6; margin-top: 28px; }
|
|
.hero-aside { padding: 0 0 8px 24px; border-left: 1px solid var(--line); color: var(--muted); font-size: 14px; }
|
|
.hero-aside strong { display: block; color: var(--text); font-weight: 500; margin: 15px 0 2px; }
|
|
.hero-aside p { margin: 0; }
|
|
.actions { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin: 30px 0 20px; }
|
|
.button { display: inline-flex; justify-content: center; align-items: center; gap: 20px; min-height: 47px; padding: 10px 22px; border-radius: 6px; font-size: 14px; font-weight: 600; border: 1px solid var(--line); color: var(--text); background: var(--raised); }
|
|
.button:hover { text-decoration: none; border-color: var(--green); }
|
|
.button.primary { color: #062014; border-color: var(--green); background: var(--green); }
|
|
.hero-note { color: var(--muted); font-family: var(--mono); font-size: 11px; }
|
|
.product-shot { margin: 48px 0 0; border: 1px solid var(--line); border-radius: 10px; overflow: hidden; background: var(--panel); box-shadow: 0 24px 80px rgba(0,0,0,.3); }
|
|
.shot-bar { display: flex; justify-content: space-between; align-items: center; gap: 15px; padding: 12px 18px; border-bottom: 1px solid var(--line); font-family: var(--mono); font-size: 10px; color: var(--muted); }
|
|
.shot-bar .live { color: var(--green); }
|
|
.shot-bar .live:before { content: ""; display: inline-block; width: 6px; height: 6px; background: var(--green); border-radius: 100%; margin-right: 8px; }
|
|
.product-shot img { width: 100%; }
|
|
figcaption { font-size: 12px; color: var(--muted); padding: 13px 18px; border-top: 1px solid var(--line); }
|
|
.facts { display: grid; grid-template-columns: repeat(4, 1fr); padding: 30px 0; border-bottom: 1px solid var(--line); gap: 24px; }
|
|
.facts strong { display: block; font-size: 22px; font-weight: 500; letter-spacing: -.03em; }
|
|
.facts span { font-size: 12px; color: var(--muted); }
|
|
.section { padding: 100px 0; border-bottom: 1px solid var(--line); }
|
|
.section-head { display: flex; justify-content: space-between; align-items: end; gap: 60px; margin-bottom: 42px; }
|
|
.section-head p { max-width: 370px; color: var(--muted); margin: 0; font-size: 15px; }
|
|
.section-head .eyebrow { margin-bottom: 17px; }
|
|
.intro { max-width: 740px; margin-top: 24px; color: var(--muted); font-size: 18px; }
|
|
.connection-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 42px; }
|
|
.connection { border-top: 2px solid var(--line); padding-top: 25px; }
|
|
.connection .number { font: 11px var(--mono); color: var(--green); margin-bottom: 22px; display: block; }
|
|
.connection p { font-size: 14px; color: var(--muted); margin: 18px 0; }
|
|
.connection ul { padding-left: 18px; margin: 0; font-size: 13px; color: var(--muted); }
|
|
.connection li { margin-bottom: 8px; }
|
|
.source-link { display: inline-block; margin-top: 18px; font-size: 13px; }
|
|
.trace-strip { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; padding: 25px 28px; margin: 35px 0 0; border: 1px solid var(--line); background: var(--panel); border-radius: 8px; }
|
|
.trace-strip span { font-family: var(--mono); font-size: 12px; }
|
|
.trace-strip .arrow { color: var(--green); }
|
|
.trace-strip .trace-label { color: var(--muted); margin-right: auto; }
|
|
.fine { color: var(--muted); font-size: 12px; margin-top: 16px; }
|
|
.lens-grid { display: grid; grid-template-columns: 1.5fr 1fr; gap: 35px; align-items: center; }
|
|
.lens-grid figure { margin: 0; border: 1px solid var(--line); border-radius: 8px; overflow: hidden; background: var(--panel); }
|
|
.lens-copy { padding-left: 15px; }
|
|
.lens-copy h3 { margin: 24px 0 12px; font-size: 20px; }
|
|
.lens-copy h3:first-child { margin-top: 0; }
|
|
.lens-copy p { color: var(--muted); font-size: 14px; }
|
|
.gallery { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; margin-top: 38px; }
|
|
.gallery figure { margin: 0; border: 1px solid var(--line); border-radius: 7px; overflow: hidden; background: var(--panel); }
|
|
.gallery a { display: block; }
|
|
.gallery img { width: 100%; aspect-ratio: 16/10; object-fit: cover; object-position: top left; }
|
|
.gallery figcaption { padding: 14px 16px; }
|
|
.gallery strong { display: block; color: var(--text); font-weight: 500; margin-bottom: 4px; }
|
|
.feature-row { display: grid; grid-template-columns: 240px 1fr; gap: 60px; border-top: 1px solid var(--line); padding: 30px 0; }
|
|
.feature-row h3 { font-size: 20px; }
|
|
.feature-row p { color: var(--muted); font-size: 15px; margin-bottom: 12px; }
|
|
.feature-row p:last-child { margin-bottom: 0; }
|
|
.feature-row .tags { display: flex; flex-wrap: wrap; gap: 8px; }
|
|
.tag { border: 1px solid var(--line); border-radius: 4px; padding: 3px 8px; font: 10px var(--mono); color: var(--muted); }
|
|
.split { display: grid; grid-template-columns: 1fr 1fr; gap: 65px; align-items: start; }
|
|
.split p { color: var(--muted); }
|
|
.split h2 { margin-bottom: 25px; }
|
|
.ci-panel { border: 1px solid var(--line); background: var(--panel); border-radius: 8px; overflow: hidden; }
|
|
.ci-title { padding: 13px 22px; border-bottom: 1px solid var(--line); color: var(--muted); font: 11px var(--mono); }
|
|
.ci-step { display: grid; grid-template-columns: 25px 1fr; gap: 15px; padding: 21px 22px; border-bottom: 1px solid var(--line); }
|
|
.ci-step:last-child { border-bottom: none; }
|
|
.ci-step .number { color: var(--green); font: 12px var(--mono); padding-top: 3px; }
|
|
.ci-step strong { display: block; font-size: 14px; font-weight: 500; }
|
|
.ci-step p { font-size: 12px; margin: 5px 0 0; }
|
|
.ci-step.fallback { background: var(--selected); }
|
|
.label { display: inline-block; font: 10px var(--mono); color: var(--cyan); border: 1px solid #31555b; padding: 4px 7px; border-radius: 4px; margin-left: 10px; vertical-align: middle; letter-spacing: .02em; }
|
|
.integration-flow { display: grid; grid-template-columns: repeat(3, 1fr); margin: 35px 0; border: 1px solid var(--line); border-radius: 8px; overflow: hidden; }
|
|
.integration-step { padding: 24px; background: var(--panel); border-right: 1px solid var(--line); }
|
|
.integration-step:last-child { border-right: none; }
|
|
.integration-step strong { font-size: 16px; font-weight: 500; }
|
|
.integration-step .number { display: block; color: var(--green); font: 11px var(--mono); margin-bottom: 15px; }
|
|
.integration-step p { font-size: 13px; color: var(--muted); margin: 12px 0 0; }
|
|
details { border-top: 1px solid var(--line); padding: 20px 0; }
|
|
summary { cursor: pointer; font-size: 15px; font-weight: 500; }
|
|
details p { color: var(--muted); font-size: 14px; margin: 18px 0 0; }
|
|
details p:last-child { margin-bottom: 0; }
|
|
.tool-list { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 22px; }
|
|
.tool-list code { padding: 5px 8px; border: 1px solid var(--line); border-radius: 4px; font-size: 11px; }
|
|
.terminal { border: 1px solid var(--line); border-radius: 8px; overflow: hidden; background: var(--panel); }
|
|
.terminal-head { padding: 12px 22px; border-bottom: 1px solid var(--line); font: 11px var(--mono); color: var(--muted); }
|
|
.terminal pre { padding: 25px; }
|
|
.comment { color: var(--muted); }
|
|
.command { color: var(--green); }
|
|
.install-links { display: flex; flex-wrap: wrap; gap: 18px; margin-top: 20px; font-size: 13px; }
|
|
.install-copy h3 { margin: 8px 0 16px; }
|
|
.install-copy p { font-size: 14px; }
|
|
.install-copy .button { margin-top: 7px; }
|
|
.evidence { display: grid; grid-template-columns: 1.1fr 1fr; gap: 65px; }
|
|
.evidence h2 { font-size: 35px; }
|
|
.evidence p { color: var(--muted); font-size: 15px; }
|
|
.evidence-links { display: flex; flex-wrap: wrap; gap: 12px 25px; font-size: 13px; }
|
|
.faq { max-width: 900px; }
|
|
.faq h2 { margin-bottom: 35px; }
|
|
.release { border-top: 1px solid var(--line); padding: 20px 0; }
|
|
.release-head { display: flex; justify-content: space-between; gap: 25px; align-items: start; }
|
|
.release-tag { font-size: 15px; }
|
|
.release-date { color: var(--muted); font: 11px var(--mono); white-space: nowrap; padding-top: 5px; }
|
|
.release details { border-top: none; padding: 12px 0 0; }
|
|
.release summary { font-size: 12px; color: var(--muted); }
|
|
.release-body { color: var(--muted); font-size: 13px; }
|
|
.release-body h4, .release-body h5, .release-body h6 { color: var(--text); font-size: 14px; margin: 18px 0 10px; }
|
|
.release-body p { font-size: 13px; margin: 10px 0; }
|
|
.release-body a { overflow-wrap: anywhere; }
|
|
.skeleton { color: var(--muted); font-size: 14px; }
|
|
footer { padding: 35px 0 45px; }
|
|
.footer-inner { display: flex; justify-content: space-between; gap: 30px; align-items: start; }
|
|
footer p { color: var(--muted); font-size: 12px; margin: 7px 0 0; }
|
|
.footer-links { display: flex; flex-wrap: wrap; gap: 20px; font-size: 12px; }
|
|
@media (max-width: 950px) {
|
|
.hero-top { grid-template-columns: 1fr; gap: 25px; }
|
|
.hero-aside { display: none; }
|
|
.nav-links { gap: 17px; }
|
|
.section-head { align-items: start; gap: 30px; }
|
|
.section-head p { max-width: 300px; }
|
|
.connection-grid { gap: 24px; }
|
|
.split { gap: 35px; }
|
|
.lens-grid { grid-template-columns: 1fr; }
|
|
.lens-copy { padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 28px; }
|
|
.lens-copy h3 { margin-top: 0; }
|
|
.feature-row { grid-template-columns: 200px 1fr; gap: 30px; }
|
|
}
|
|
@media (max-width: 680px) {
|
|
.container { width: calc(100% - 36px); }
|
|
.nav { min-height: 65px; gap: 12px; }
|
|
.brand { font-size: 14px; }
|
|
.brand svg { width: 23px; }
|
|
.nav-links { gap: 12px; font-size: 12px; }
|
|
.nav-links .desktop-link { display: none; }
|
|
.nav-links .nav-install { padding: 7px 12px; }
|
|
.hero { padding-top: 50px; }
|
|
h1 { font-size: clamp(42px, 10.5vw, 64px); }
|
|
.hero-intro { font-size: 17px; }
|
|
.hero-note { font-size: 10px; }
|
|
.hero .actions { gap: 10px; }
|
|
.button { padding: 10px 17px; gap: 12px; }
|
|
.product-shot { margin-top: 35px; }
|
|
.shot-bar { font-size: 9px; padding: 10px 12px; }
|
|
.shot-bar .shot-path { display: none; }
|
|
figcaption { font-size: 11px; padding: 12px; }
|
|
.facts { grid-template-columns: 1fr 1fr; gap: 22px; }
|
|
.facts strong { font-size: 20px; }
|
|
.section { padding: 65px 0; }
|
|
.section-head { display: block; margin-bottom: 30px; }
|
|
.section-head p { max-width: none; margin-top: 20px; }
|
|
.connection-grid, .split, .evidence { grid-template-columns: 1fr; gap: 35px; }
|
|
.connection { padding-top: 20px; }
|
|
.connection .number { margin-bottom: 13px; }
|
|
.connection p { margin: 12px 0; }
|
|
.trace-strip { gap: 9px; padding: 20px; }
|
|
.trace-strip .trace-label { flex-basis: 100%; margin-bottom: 5px; }
|
|
.trace-strip span { font-size: 10px; }
|
|
.lens-copy { grid-template-columns: 1fr; gap: 10px; }
|
|
.gallery { grid-template-columns: 1fr; gap: 22px; }
|
|
.gallery img { aspect-ratio: auto; object-fit: contain; }
|
|
.feature-row { grid-template-columns: 1fr; gap: 16px; }
|
|
.integration-flow { grid-template-columns: 1fr; }
|
|
.integration-step { border-right: none; border-bottom: 1px solid var(--line); }
|
|
.integration-step:last-child { border-bottom: none; }
|
|
.terminal pre { padding: 18px; }
|
|
.terminal pre code { font-size: 11px; }
|
|
.release-head { flex-direction: column; gap: 4px; }
|
|
.footer-inner { flex-direction: column; gap: 22px; }
|
|
}
|
|
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<a class="skip" href="#main">Skip to content</a>
|
|
<header class="site-header">
|
|
<nav class="container nav" aria-label="Main navigation">
|
|
<a class="brand" href="#main" aria-label="Codebase Memory home">
|
|
<svg viewBox="0 0 32 32" aria-hidden="true" fill="none"><path d="M8 8L25 15L11 25Z" stroke="currentColor" stroke-width="1.5"/><g fill="currentColor"><circle cx="8" cy="8" r="3"/><circle cx="25" cy="15" r="3"/><circle cx="11" cy="25" r="3"/></g></svg>
|
|
Codebase Memory
|
|
</a>
|
|
<div class="nav-links">
|
|
<a class="desktop-link" href="#features">Capabilities</a>
|
|
<a class="desktop-link" href="#lens">CBM Lens</a>
|
|
<a class="desktop-link" href="#smart-ci">Smart CI</a>
|
|
<a href="https://github.com/DeusData/codebase-memory-mcp">GitHub ↗</a>
|
|
<a class="nav-install" href="#install">Get started</a>
|
|
</div>
|
|
</nav>
|
|
</header>
|
|
<main id="main" class="container">
|
|
<section class="hero" id="what-is-it">
|
|
<div class="hero-top">
|
|
<div>
|
|
<p class="eyebrow">Local code intelligence · Open source</p>
|
|
<h1>Understand the<br><span>whole repository.</span></h1>
|
|
<p class="hero-intro">Your code, documentation and infrastructure, connected in one persistent graph. Give your agent structural context. Follow the evidence yourself in CBM Lens.</p>
|
|
<div class="actions">
|
|
<a class="button primary" href="#install">Install Codebase Memory <span aria-hidden="true">↗</span></a>
|
|
<a class="button" href="#lens">Explore CBM Lens <span aria-hidden="true">↓</span></a>
|
|
</div>
|
|
<p class="hero-note">macOS · Linux · Windows / Native C · MIT licensed</p>
|
|
</div>
|
|
<div class="hero-aside">
|
|
<strong>For your agent</strong><p>Precise graph queries, source evidence and coverage checks through MCP.</p>
|
|
<strong>For you</strong><p>Source navigation, architecture maps and a visible path from question to code.</p>
|
|
</div>
|
|
</div>
|
|
<figure class="product-shot">
|
|
<div class="shot-bar"><span class="live">CBM LENS BETA</span><span class="shot-path">codebase-memory-mcp / architecture</span><span>LOCAL WORKSPACE</span></div>
|
|
<a href="images/lens-architecture.png" aria-label="View the full CBM Lens architecture screenshot"><img src="images/lens-architecture.png" alt="CBM Lens architecture map showing the source folders of codebase-memory-mcp" fetchpriority="high"></a>
|
|
<figcaption>CBM Lens, exploring this repository. Real product captures from October 2026. <a href="https://github.com/DeusData/codebase-memory-mcp/blob/main/docs/images/README.md">Capture details ↗</a></figcaption>
|
|
</figure>
|
|
<div class="facts" aria-label="Project at a glance">
|
|
<div><strong>One connected graph</strong><span>Source, docs and infrastructure</span></div>
|
|
<div><strong>17 MCP tools</strong><span>Plus a CLI and CBM Lens</span></div>
|
|
<div><strong>45 client surfaces</strong><span>Automatic or conditional setup</span></div>
|
|
<div><strong>Local processing</strong><span>Your index stays on your machine</span></div>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="section" id="problem">
|
|
<div class="section-head">
|
|
<div><p class="eyebrow">Beyond file search</p><h2>Find the relationship.<br>Then read the evidence.</h2></div>
|
|
<p>A function rarely tells the whole story. Follow its callers, find the decision behind it, and trace the infrastructure that runs it.</p>
|
|
</div>
|
|
<div class="connection-grid">
|
|
<article class="connection">
|
|
<span class="number">01 / CODE</span><h3>What calls this?</h3>
|
|
<p>Explore symbols, call paths, types, dependencies and routes. Move across files, services and indexed repositories.</p>
|
|
<ul><li>Structural, full-text and local semantic search</li><li>Hybrid LSP type resolution for supported languages</li><li>HTTP, gRPC, GraphQL, tRPC and async links</li></ul>
|
|
<a class="source-link" href="#features">Explore code intelligence →</a>
|
|
</article>
|
|
<article class="connection" id="documentation">
|
|
<span class="number">02 / DOCUMENTATION</span><h3>Why does it work this way?</h3>
|
|
<p>Bring documentation into the graph. Search sections, follow resolved code references, and keep architecture decisions close to their implementation.</p>
|
|
<ul><li>Markdown, reStructuredText and AsciiDoc sections</li><li>Searchable pages from PDFs with text layers</li><li>ADRs, supersession and supported doc comments</li></ul>
|
|
<a class="source-link" href="https://github.com/DeusData/codebase-memory-mcp#documentation-connected-to-code">Documentation support →</a>
|
|
</article>
|
|
<article class="connection" id="infrastructure">
|
|
<span class="number">03 / INFRASTRUCTURE</span><h3>What builds and deploys it?</h3>
|
|
<p>Connect supported infrastructure and configuration to source. Trace the path from a service to the program inside its container.</p>
|
|
<ul><li>Docker, Compose, Kubernetes, Helm and Kustomize</li><li>Terraform / OpenTofu, Terragrunt and Ansible</li><li>Shell, Make and supported CI steps</li></ul>
|
|
<a class="source-link" href="https://github.com/DeusData/codebase-memory-mcp#infrastructure-and-deployment">Infrastructure support →</a>
|
|
</article>
|
|
</div>
|
|
<div class="trace-strip" aria-label="Example of a resolvable deployment path">
|
|
<span class="trace-label">A deployment path</span><span>Service</span><span class="arrow" aria-hidden="true">→</span><span>Workload</span><span class="arrow" aria-hidden="true">→</span><span>Image</span><span class="arrow" aria-hidden="true">→</span><span>Dockerfile</span><span class="arrow" aria-hidden="true">→</span><span>Program</span>
|
|
</div>
|
|
<p class="fine">Relationships come from supported source forms. Dynamic values and unresolved references can leave gaps; PDF extraction requires a text layer and does not perform OCR.</p>
|
|
</section>
|
|
|
|
<section class="section" id="lens">
|
|
<div class="section-head">
|
|
<div><p class="eyebrow">CBM Lens Beta</p><h2>A workspace for<br>understanding your code.</h2></div>
|
|
<p>Included in standard native releases. Open the local browser interface and move from the shape of a system to the source behind a symbol.</p>
|
|
</div>
|
|
<div class="lens-grid">
|
|
<figure><a href="images/lens-explore.jpg" aria-label="View the full CBM Lens source navigation screenshot"><img src="images/lens-explore.jpg" alt="Lens source reader beside the file impact summary and graph dependencies for limits.c" loading="lazy"></a><figcaption>Source navigation with indexed relationships and impact context.</figcaption></figure>
|
|
<div class="lens-copy">
|
|
<div><h3>Read code in context</h3><p>Browse files and symbols, inspect callers and dependencies, and keep the relevant source beside the graph.</p></div>
|
|
<div><h3>See the shape of the system</h3><p>Explore architecture, system structure and the Galaxy graph. Inspect coverage diagnostics and architecture decisions from the same workspace.</p></div>
|
|
</div>
|
|
</div>
|
|
<div class="gallery">
|
|
<figure><a href="images/lens-galaxy.jpg" aria-label="View the full Lens Galaxy screenshot"><img src="images/lens-galaxy.jpg" alt="CBM Lens Galaxy graph for exploring symbols and relationships" loading="lazy"></a><figcaption><strong>Follow the connections</strong>Search and expand the Galaxy graph.</figcaption></figure>
|
|
<figure><a href="images/lens-system-structure.png" aria-label="View the full Lens system structure screenshot"><img src="images/lens-system-structure.png" alt="CBM Lens system structure showing source groups and their dependencies" loading="lazy"></a><figcaption><strong>Inspect system structure</strong>See source groups and dependencies.</figcaption></figure>
|
|
<figure><a href="images/lens-chat.png" aria-label="View the full Lens local chat screenshot"><img src="images/lens-chat.png" alt="CBM Lens optional local chat explaining selected source using indexed facts" loading="lazy"></a><figcaption><strong>Ask about selected code</strong>Optional browser AI, with on-device inference.</figcaption></figure>
|
|
</div>
|
|
<p class="fine">Lens is served on loopback. Browser AI downloads its optional model after you enable it. Its explanations should be checked against the displayed source.</p>
|
|
<a class="source-link" href="https://github.com/DeusData/codebase-memory-mcp#cbm-lens-beta-code-visualization-and-source-navigation">Read the Lens guide and watch the walkthroughs →</a>
|
|
</section>
|
|
|
|
<section class="section" id="features">
|
|
<div class="section-head">
|
|
<div><p class="eyebrow">Code intelligence</p><h2>Ask better questions<br>of your repository.</h2></div>
|
|
<p>Use the same persistent graph through your coding agent, the CLI or Lens. Open source evidence whenever a result needs verification.</p>
|
|
</div>
|
|
<article class="feature-row" id="semantic-search"><h3>Find the right starting point</h3><div><p>Search by symbol, structure, text or meaning. Combine regex and graph filters, BM25 full-text search, and local semantic search to find relevant code even when the wording differs.</p><div class="tags"><span class="tag">search_graph</span><span class="tag">search_code</span><span class="tag">get_file_outline</span></div></div></article>
|
|
<article class="feature-row" id="hybrid-lsp"><h3>Follow actual relationships</h3><div><p>Tree-sitter parsing and Hybrid LSP resolution build call and dependency relationships for supported languages. Trace callers, callees, data flow and supported cross-service links; query more complex patterns with Cypher.</p><p>Language and framework coverage varies. <a href="https://github.com/DeusData/codebase-memory-mcp#language-support">Check the support matrix →</a></p></div></article>
|
|
<article class="feature-row"><h3>Understand change</h3><div><p>Map a diff to affected symbols, investigate the blast radius, compare graph snapshots and inspect related tests. Near-clone and semantic relationships help surface related implementations worth reviewing.</p><div class="tags"><span class="tag">detect_changes</span><span class="tag">compare_graphs</span><span class="tag">SIMILAR_TO</span></div></div></article>
|
|
<article class="feature-row"><h3>Connect the wider system</h3><div><p>Link multiple repositories in the same store. Explore service relationships across HTTP, gRPC, GraphQL, tRPC and supported async patterns, or ingest runtime traces to add observed relationships.</p><div class="tags"><span class="tag">Cross-repo intelligence</span><span class="tag">ingest_traces</span><span class="tag">get_architecture</span></div></div></article>
|
|
<article class="feature-row"><h3>Know what the index knows</h3><div><p>Inspect index status and recorded coverage before making a claim. Coverage diagnostics identify skipped, partial or stale evidence so you can read the relevant source directly. Preserve architecture decisions with ADR management.</p><div class="tags"><span class="tag">check_index_coverage</span><span class="tag">index_status</span><span class="tag">manage_adr</span></div></div></article>
|
|
<details><summary>Explore all 17 MCP tools</summary><div class="tool-list"><code>index_repository</code><code>search_graph</code><code>query_graph</code><code>trace_path</code><code>get_code_snippet</code><code>get_file_outline</code><code>get_graph_schema</code><code>compare_graphs</code><code>get_architecture</code><code>search_code</code><code>list_projects</code><code>delete_project</code><code>index_status</code><code>check_index_coverage</code><code>detect_changes</code><code>manage_adr</code><code>ingest_traces</code></div><p><a href="https://github.com/DeusData/codebase-memory-mcp#mcp-tools">Tool reference, inputs and examples →</a></p></details>
|
|
</section>
|
|
|
|
<section class="section" id="smart-ci">
|
|
<div class="split">
|
|
<div><p class="eyebrow">Smart CI <span class="label">Experimental</span></p><h2>Turn change impact<br>into test selection.</h2><p>Combine static reachability, changed tests and admitted per-test coverage to explain which tests a change reaches. Use the result to focus supported CI runs.</p><p>Job selection uses repository-specific path rules. Test narrowing currently supports C/C++ with supported <code>TEST</code>/<code>SUITE</code>-style harnesses or declared equivalents.</p><p class="fine">Start in shadow mode and validate your harness before enabling gating. This repository narrows its Linux x86_64 PR unit-test leg; release and dry-run workflows retain full execution.</p><a class="source-link" href="https://github.com/DeusData/codebase-memory-mcp/blob/main/docs/SMART_CI.md">Read the Smart CI setup guide →</a></div>
|
|
<div class="ci-panel">
|
|
<div class="ci-title">FROM CHANGE TO EXPLAINED SELECTION</div>
|
|
<div class="ci-step"><span class="number">01</span><div><strong>Establish a baseline</strong><p>Publish the graph and compatible per-test coverage with <code>test-impact publish</code>.</p></div></div>
|
|
<div class="ci-step"><span class="number">02</span><div><strong>Trace the change</strong><p>Combine changed tests, static relationships and admitted coverage.</p></div></div>
|
|
<div class="ci-step"><span class="number">03</span><div><strong>Select with reasons</strong><p><code>test-impact select</code> explains its selection for a runner that accepts named tests or suites.</p></div></div>
|
|
<div class="ci-step fallback"><span class="number">↳</span><div><strong>Broaden when evidence is insufficient</strong><p>Missing, stale or incomplete evidence broadens the selection or returns <code>run_all</code>. Static reachability alone never omits a suite.</p></div></div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="section" id="integrations">
|
|
<div class="section-head"><div><p class="eyebrow">Agent setup</p><h2>Context that fits<br>your coding workflow.</h2></div><p>The installer configures 45 automatic/conditional client surfaces. MCP connections, instructions, skills, profiles and hooks are installed according to each client's supported capabilities.</p></div>
|
|
<div class="integration-flow">
|
|
<div class="integration-step"><span class="number">01 / CONNECT</span><strong>Set up your clients</strong><p>Configure supported integrations for clients such as Claude Code, Codex CLI, Gemini CLI, Cursor, Zed and OpenCode.</p></div>
|
|
<div class="integration-step"><span class="number">02 / GUIDE</span><strong>Give agents a working method</strong><p>Skills and instructions guide graph queries, coverage checks and source verification. Supported custom-agent formats get Scout, Verify and Auditor profiles.</p></div>
|
|
<div class="integration-step"><span class="number">03 / MAINTAIN CONTEXT</span><strong>Use supported hooks</strong><p>Client-specific lifecycle and read/search hooks help surface relevant graph context. Hook and subagent capabilities differ by client and platform.</p></div>
|
|
</div>
|
|
<details><summary>See the supported clients and integration boundaries</summary>
|
|
<p><strong>Detected automatically (39):</strong> Claude Code, Codex CLI, Gemini CLI, Zed, OpenCode, Antigravity, Aider, KiloCode, VS Code, Cursor, Windsurf, Augment / Auggie, OpenClaw, Kiro, Junie, Hermes, OpenHands, Cline, Warp, Qwen Code, GitHub Copilot CLI, Factory Droid, Crush, Goose, Mistral Vibe, Grok Build, Qoder CLI, Kimi Code CLI, GitLab Duo CLI, Rovo Dev CLI, Amp, Devin CLI / Local, Tabnine, Amazon Q Developer IDE, CodeBuddy Code CLI, IBM Bob Shell, Pochi, Pi, and Oh My Pi (omp).</p>
|
|
<p><strong>Conditional or explicit (6):</strong> Continue / cn, Visual Studio, TRAE, Roo Code, IBM Bob IDE, and Sourcegraph Cody.</p>
|
|
<p>These are client surfaces, not a promise of identical MCP, hook or subagent support. For example, Pi receives instructions and a skill; Warp's detected skill installation is counted while its MCP connection remains manual. Other manual, UI, cloud and repository-managed integrations are documented separately.</p>
|
|
<p><a href="https://github.com/DeusData/codebase-memory-mcp#agent-setup-skills-profiles-and-hooks">Review the client matrix and setup details →</a></p>
|
|
</details>
|
|
</section>
|
|
|
|
<section class="section" id="install">
|
|
<div class="section-head"><div><p class="eyebrow">Get started</p><h2>Install. Index. Explore.</h2></div><p>Standard native releases include CBM Lens. The native runtime needs no Docker or language runtime; the core indexer and graph queries need no API key.</p></div>
|
|
<div class="split">
|
|
<div><div class="terminal"><div class="terminal-head">TERMINAL · macOS / Linux</div><pre><code><span class="comment"># Install the native release and agent integrations</span>
|
|
<span class="command">curl -fsSL https://raw.githubusercontent.com/DeusData/codebase-memory-mcp/main/install.sh | bash</span>
|
|
|
|
<span class="comment"># Restart your agent, then ask:</span>
|
|
"Index this project"
|
|
|
|
<span class="comment"># Open CBM Lens in your browser</span>
|
|
<span class="command">codebase-memory-mcp daemon start --open</span></code></pre></div><div class="install-links"><a href="https://github.com/DeusData/codebase-memory-mcp/blob/main/install.sh">Inspect the installer ↗</a><a href="https://github.com/DeusData/codebase-memory-mcp#quick-start">Windows / PowerShell ↗</a><a href="https://github.com/DeusData/codebase-memory-mcp#installation">Other installation methods ↗</a></div></div>
|
|
<div class="install-copy"><h3>Your machine. Your index.</h3><p>Source analysis and graph storage run locally. Native releases contain the executable and authenticated release-owned assets, including the Lens frontend and agent integration templates.</p><p>Use native packages or the npm, PyPI and Go wrappers. Package wrappers use their respective runtimes. Nix and source builds also offer builds without the UI.</p><p>Choose the clients you want to configure, restart them after installation, then build your first index.</p><a class="button" href="https://github.com/DeusData/codebase-memory-mcp/releases/latest">Download the latest release <span aria-hidden="true">↗</span></a></div>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="section" id="performance">
|
|
<div class="evidence" id="benchmark"><div><p class="eyebrow">Performance and research</p><h2>Useful context.<br>Measurable tradeoffs.</h2></div><div><p>Focused graph queries can reduce repeated file exploration. The result depends on the repository, the question, the agent and how much source verification the task needs.</p><p>Published benchmarks describe specific workloads, hardware and answer-quality tradeoffs. They are backend measurements, not a promise of a fixed saving or a benchmark of CBM Lens.</p><div class="evidence-links"><a href="https://github.com/DeusData/codebase-memory-mcp#performance">Results and limitations ↗</a><a href="https://github.com/DeusData/codebase-memory-mcp/blob/main/docs/BENCHMARK.md">Benchmark methodology ↗</a><a href="https://arxiv.org/abs/2603.27277">Research paper ↗</a></div></div></div>
|
|
</section>
|
|
|
|
<section class="section" id="faq">
|
|
<div class="faq"><p class="eyebrow">A few practical details</p><h2>Before you start.</h2>
|
|
<details><summary>Does Codebase Memory send my source code anywhere?</summary><p>The backend indexes source and stores and queries its graph locally. Your coding agent has its own data-handling settings. Lens can optionally download a browser model after you enable it, with inference on-device. Installers and update checks use the network to obtain releases and assets.</p></details>
|
|
<details><summary>How does the index stay current?</summary><p>Incremental indexing updates changed files. With auto-watch enabled, an eligible active MCP session can watch an already indexed project. Automatic first indexing is a separate opt-in setting. The local UI daemon is not a promise of a permanent background watcher.</p></details>
|
|
<details><summary>How much language coverage is available?</summary><p>Bundled tree-sitter grammars cover a broad range of languages and formats. Supported language families also have Hybrid LSP semantic resolution. Extraction depth, type resolution and framework relationships vary; the <a href="https://github.com/DeusData/codebase-memory-mcp#language-support">language support matrix</a> describes the details.</p></details>
|
|
<details><summary>Does Smart CI select tests for every indexed language?</summary><p>No. Test narrowing currently supports C/C++ family code with supported test-harness conventions or declared equivalents. It requires configuration, admitted coverage and a compatible runner. Missing or incompatible evidence broadens execution or returns <code>run_all</code>. See the <a href="https://github.com/DeusData/codebase-memory-mcp/blob/main/docs/SMART_CI.md">Smart CI guide</a>.</p></details>
|
|
<details><summary>How do I verify the release?</summary><p>Use the signed release artifacts and checksums, and review the release's verification information. The <a href="https://github.com/DeusData/codebase-memory-mcp/blob/main/SECURITY.md">security policy</a> explains artifact verification, antivirus reports and vulnerability reporting.</p></details>
|
|
<details><summary>Is it free and open source?</summary><p>Yes. Codebase Memory is MIT licensed. Source, release binaries, detailed documentation and contribution guidelines are available on <a href="https://github.com/DeusData/codebase-memory-mcp">GitHub</a>.</p></details>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="section" id="releases">
|
|
<div class="section-head"><div><p class="eyebrow">Project updates</p><h2>What's shipping.</h2></div><p>Recent releases from GitHub, with the implementation details and fixes behind each version.</p></div>
|
|
<div id="releases-list"><p class="skeleton">Loading recent releases from GitHub…</p></div>
|
|
<noscript><p><a href="https://github.com/DeusData/codebase-memory-mcp/releases">Read the release history on GitHub →</a></p></noscript>
|
|
<a class="source-link" href="https://github.com/DeusData/codebase-memory-mcp/releases">View all releases on GitHub →</a>
|
|
</section>
|
|
</main>
|
|
<footer><div class="container footer-inner"><div><a class="brand" href="#main">Codebase Memory</a><p>Local code intelligence. Open source, MIT licensed.</p></div><div class="footer-links"><a href="https://github.com/DeusData/codebase-memory-mcp">GitHub</a><a href="https://github.com/DeusData/codebase-memory-mcp#readme">Documentation</a><a href="https://github.com/DeusData/codebase-memory-mcp/blob/main/SECURITY.md">Security</a><a href="llms.txt">llms.txt</a></div></div></footer>
|
|
|
|
<script>
|
|
(function () {
|
|
var REPO = 'DeusData/codebase-memory-mcp';
|
|
var listEl = document.getElementById('releases-list');
|
|
if (!listEl) return;
|
|
|
|
function esc(s) {
|
|
return String(s)
|
|
.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>')
|
|
.replace(/"/g, '"');
|
|
}
|
|
|
|
// Minimal, safe Markdown → HTML for release bodies (escape first, then format).
|
|
function renderMarkdown(md) {
|
|
var lines = esc(md || '').split(/\r?\n/);
|
|
var html = '', inList = false;
|
|
function inline(t) {
|
|
return t
|
|
.replace(/`([^`]+)`/g, '<code>$1</code>')
|
|
.replace(/\*\*([^*]+)\*\*/g, '<strong>$1</strong>')
|
|
.replace(/\[([^\]]+)\]\((https?:\/\/[^)\s]+)\)/g,
|
|
'<a href="$2" target="_blank" rel="nofollow noopener">$1</a>');
|
|
}
|
|
for (var i = 0; i < lines.length; i++) {
|
|
var ln = lines[i];
|
|
var h = ln.match(/^(#{1,6})\s+(.*)$/);
|
|
var li = ln.match(/^\s*[-*]\s+(.*)$/);
|
|
if (h) {
|
|
if (inList) { html += '</ul>'; inList = false; }
|
|
// Demote release-note headings to h4-h6 so they never pollute the page outline.
|
|
var lvl = Math.min(h[1].length + 3, 6);
|
|
html += '<h' + lvl + '>' + inline(h[2]) + '</h' + lvl + '>';
|
|
} else if (li) {
|
|
if (!inList) { html += '<ul>'; inList = true; }
|
|
html += '<li>' + inline(li[1]) + '</li>';
|
|
} else if (ln.trim() === '') {
|
|
if (inList) { html += '</ul>'; inList = false; }
|
|
} else {
|
|
if (inList) { html += '</ul>'; inList = false; }
|
|
html += '<p>' + inline(ln) + '</p>';
|
|
}
|
|
}
|
|
if (inList) html += '</ul>';
|
|
return html;
|
|
}
|
|
|
|
function fmtDate(iso) {
|
|
if (!iso) return '';
|
|
var d = new Date(iso);
|
|
if (isNaN(d)) return '';
|
|
return d.toLocaleDateString('en-US', { year: 'numeric', month: 'short', day: 'numeric' });
|
|
}
|
|
|
|
function renderRelease(r) {
|
|
var tag = esc(r.tag_name || r.name || 'release');
|
|
var name = r.name && r.name !== r.tag_name ? ' — ' + esc(r.name) : '';
|
|
var url = esc(r.html_url || ('https://github.com/' + REPO + '/releases'));
|
|
var date = fmtDate(r.published_at);
|
|
var body = (r.body || '').trim();
|
|
var bodyHtml = body
|
|
? '<details><summary>Release notes</summary><div class="release-body">' + renderMarkdown(body) + '</div></details>'
|
|
: '<p class="release-body"><a href="' + url + '" target="_blank" rel="noopener">View on GitHub →</a></p>';
|
|
return '<article class="release">'
|
|
+ '<div class="release-head">'
|
|
+ '<span class="release-tag"><a href="' + url + '" target="_blank" rel="noopener">' + tag + '</a>' + name + '</span>'
|
|
+ '<span class="release-date">' + date + '</span>'
|
|
+ '</div>' + bodyHtml + '</article>';
|
|
}
|
|
|
|
fetch('https://api.github.com/repos/' + REPO + '/releases?per_page=5', {
|
|
headers: { 'Accept': 'application/vnd.github+json' }
|
|
})
|
|
.then(function (res) { if (!res.ok) throw new Error('HTTP ' + res.status); return res.json(); })
|
|
.then(function (data) {
|
|
if (!Array.isArray(data) || data.length === 0) throw new Error('no releases');
|
|
listEl.innerHTML = data.map(renderRelease).join('');
|
|
})
|
|
.catch(function () {
|
|
listEl.innerHTML = '<p class="skeleton">Couldn\'t load releases right now — '
|
|
+ '<a href="https://github.com/' + REPO + '/releases">view them on GitHub →</a></p>';
|
|
});
|
|
})();
|
|
</script>
|
|
</body>
|
|
</html>
|