Tree-sitter parsers
Swap the regex extractors for tree-sitter in TS and Python. Same IR shape, deeper signatures, fewer edge-case misses on JSX, generics, and decorators. Drop-in on the existing parser registry; no downstream changes.
Ryngo is a deterministic code-to-graph compiler with an MCP server.
Paste a GitHub URL, get a typed node-editor. Mark intents in
Ryngo.md; Claude Code, Cursor, Codex, and Aider all
read the same file.
843× less context. Same code map. Topology in 0.12 % of raw tokens · single symbol in 0.006 % · focused subgraph in 0.28 %.
Paste a GitHub URL. Get a typed node-editor of your codebase — files, functions, types, routes, db models — grouped into stack layers. Mark intents in markdown your AI agent reads.
Built by Marshall Doyle. Try a different repo above, or paste your own.
Ryngo compresses a repo into deterministic representations: topology, compact IR, view models, subgraphs, and exact source anchors. The point is to feed an agent the map it needs instead of asking it to reread every file on every turn.
Bird's-eye repo map for planning and triage.
Nodes, edges, signatures, adapters, and warnings.
Only the neighborhood around the thing being changed.
Open /app and drop in a public repo. Ryngo clones shallow, parses every file into the IR, and throws the source away. No code stored.
Layers groups every file into Frontend / Backend / Data / Infra / Tests / Config — your product as a graph. Files drills into per-function detail with typed ports for params and return values. Toggle anytime; the toggle persists.
Right-click any node: refactor,
extract, delete,
add tests. Each intent is saved as a markdown
file in .ryngo/intents/. Claude Code, Codex,
Cursor, Aider — any agent that reads your repo — picks
them up automatically. When the agent applies the change,
click Verify and Ryngo diffs the IR against your stated
intent.
Ryngo ships an MCP (Model Context Protocol) server so Claude
Code, Claude Desktop, ChatGPT Apps, Cursor, and any other
MCP-compatible client can query your codebase map directly.
Nine tools: analyze_repo,
get_topology, get_compact_ir,
get_subgraph, english_signature,
find_node, list_intents,
read_intent, list_annotations.
No inference happens on our side — your agent uses your model.
Add to ~/.config/claude-code/mcp.json:
{
"mcpServers": {
"ryngo": {
"command": "npx",
"args": ["-y", "ryngo-mcp"]
}
}
}
Restart Claude Code; the 9 Ryngo tools appear automatically.
Same JSON shape; the file lives at
~/Library/Application Support/Claude/claude_desktop_config.json
on macOS.
We expose Streamable HTTP MCP at https://ryngo.ai/mcp.
Point any hosted MCP connector at that URL — no installation,
no local process. Same 9 tools.
git clone https://github.com/MarshallDoyle/Ryngo
cd Ryngo/mvp
npm install
npm run mcp # stdio MCP for Claude Code / Codex
npm start # HTTP server (API + /mcp + landing + /app)
Try it from your agent: "Use ryngo to give me the topology of github.com/tiangolo/sqlmodel, then list every function that takes a Session parameter."
Current corpus-backed sketch: compare raw repo context with the
projections Ryngo can hand to an agent. The plot is normalized to a
1.1m-token repo so the shape is readable; the ratios come from the
latest npm run corpus token report.
The honest signal: compact IR is still a compiler artifact, not the thing we should blindly paste into an LLM. The user-facing win comes from topology, source-backed signatures, and k-hop subgraphs.
TypeScript/JavaScript, Python/Jupyter, Go, Java/Spring, Ruby/Rails, Rust, C#, and HCL.
Raw files, topology markdown, compact IR, RyngoViewModel, k-hop subgraph, and node signature.
Parse recall, route/model/env extraction, warning precision, and exact source-anchor coverage.
You prompted your way to a product and within a week couldn't answer what your own product actually does. Ryngo is the loop closer: see the structure, mark the change, hand the marks back to your AI of choice. Every annotation lives in a markdown file your agent reads.
See the system you own. Ask "what's in scope?" without messaging engineering. Share a link to a real architecture map instead of holding another meeting. No engineering jargon — Frontend / Backend / Data / Infra and counts that mean what they say.
Stop explaining the codebase to PMs and execs. Send them a Ryngo link. They pan around. You get your afternoon back. Same map your agents see — coordination overhead drops to zero.
Newest at the top. Auto-generated from CHANGELOG.md every deploy.
/api/stats/public/data/tokens-summary.json.Ryngo.md per-repo manifestThree threads in flight. The plan + per-agent claims live in AGENTS.md.
Swap the regex extractors for tree-sitter in TS and Python. Same IR shape, deeper signatures, fewer edge-case misses on JSX, generics, and decorators. Drop-in on the existing parser registry; no downstream changes.
Go via go list -deps -json, Rust via
rust-analyzer scip. Real types, real
cross-crate edges. Lights up the typed-pipe coloring on a
second language family beyond TS and Python.
One Ryngo view across your whole org's repos. Cross-repo call graphs, shared regions, service-level diff. Sits on top of today's per-repo IR with a federation layer.
Ryngo.md into your agent
Every Ryngo repo gets one file at its root — Ryngo.md —
that holds the comments you've left on nodes and the warnings you've
dismissed. Plain Markdown, diff-friendly, edited from the viewer OR
from your IDE. Pick whichever of these three paths matches how your
agent already works; the file is the same on all three.
For agents in an active coding loop — Claude Code,
ChatGPT MCP, Cursor, any MCP-aware harness. After the
one-time install, your agent gets a read_ryngo_md
tool. It calls it at the start of a session, sees your comments
and suppressions, and respects them on every edit.
$ npx ryngo-mcp install
# adds Ryngo to your MCP config — restart your agent
# Agent now has these tools:
# read_ryngo_md ← reads the manifest
# get_compact_ir ← reads the typed code map
# list_intents ← reads pending refactor markers
Best for: ongoing development, multi-step refactors, anything where the agent is editing on your behalf.
Full install guide: ↑ Install MCP.
For chat UIs that don't speak MCP — ChatGPT.com,
Claude.ai, Gemini, Perplexity. Open the Ryngo viewer,
click View Ryngo.md in the inspector, copy. Paste
at the top of your prompt and ask anything.
# your prompt to ChatGPT / Claude.ai
Here's my repo's Ryngo manifest:
---
{paste from Ryngo viewer's "Copy" button}
---
The comments above explain what each function does. The
suppressions tell you which warnings I've already considered
and chosen to ignore. With that context: please refactor
src/auth/login.ts to support refresh tokens.
Best for: one-off questions, second opinions, any time you don't want to bring up an agent harness.
The file is small (typically < 10 KB even for big repos). One paste fits in any model's context.
For teams and anyone who wants the manifest to follow the code
— vibe coders shipping daily, engineering teams,
anyone whose AI sometimes loses context between sessions.
Download Ryngo.md and commit it at repo root.
It's auto-discovered by:
.cursorrules Ryngo generatesCLAUDE.md Ryngo generatesAGENTS.md convention# save the manifest at your repo root
curl -O "https://ryngo.ai/api/ryngo-md/download?repo=you/yourrepo"
# or from the viewer:
# inspector → "View Ryngo.md" → "Save .md"
# then commit it like any other file
git add Ryngo.md
git commit -m "ryngo: dismiss intentional warnings + auth notes"
Best for: teams, code review, anything where a comment or a dismissed warning should outlive a single chat.
PR-review-friendly. Every dismissed warning is a one-liner diff with the reason attached.
Ryngo.md exactly?
Two sections today, both keyed on stable node ids
(def:src/foo.ts#bar, file:src/foo.ts,
cell:notebook.ipynb#3, …). Forward-compatible
## Connections / ## Expose /
## Flags sections round-trip verbatim so future
additions don't break old manifests.
# Ryngo
## Comments
### def:src/auth/login.ts#authenticate
> handles refresh-token rotation; touch carefully
> — marshall, 2026-05-10
## Suppressions
### def:src/auth/login.ts#authenticate
- nested-loop · items.length is bounded; intentional brute force
- recursion · tail-recursive; engine optimizes
Stable node ids mean comments survive renames as long as the
symbol survives. Round-trip property test in
mvp/lib/ryngo-md.js: serialize → parse → equal.
Ryngo is free to use today — paste any public GitHub URL, get the map. No account, no waitlist, no card. The MCP server is open source.
/appRyngo.md persistence per repoA paid tier with private repos + team accounts is on the roadmap. Until then, every feature is free for everyone.
mvp/docs/HOSTING.md.