0.3.0 HTTP and database links across your whole stack

See how your code actually connects.

Mapo turns a codebase into a live map: every ring is a folder, every circle a file, functions live inside. Hover anything to see what it uses and what uses it — from the app, through the API, down to the database.

Download for Mac
brew install --cask bur2ak/tap/mapo

Free and open source · macOS 14+ on Apple silicon · English & Türkçe

Mapo showing a sample full-stack project. The function fetchMenu is selected: an orange arrow goes to the API route it calls, a blue arrow comes from the screen that calls it.
Rings are folders, circles are files
Orange: what it uses
Blue: what uses it

Understands the stack you already use

TypeScriptPythonSwiftGoRustJava Next.jsHonoExpressFastifyCloudflare Workers FastAPIDjangoFlasktRPC PrismaDrizzleSupabasePostgres · SQLite · D1

Hover a circle to see its links.

Read it in ten seconds

A map you already know how to read.

No graph theory, no spaghetti. Folders are places, files are buildings, and the roads only appear when you ask.

  • Rings are foldersClick one to go inside. ⌘↑ takes you back up.
  • Circles are filesThe bigger the circle, the longer the file. Functions sit inside.
  • Orange arrows: what it usesCalls, imports, HTTP requests, table reads and writes.
  • Blue arrows: what uses itEverything that would notice if you changed it.
Features

Questions you ask every day, answered on the map.

Follow a request end to end

Mapo links client calls to the routes they hit, and routes to the tables they read and write. Find path shows the whole chain between any two pieces, step by step.

placeOrder→POST /api/orders→saveOrder→order_items
Find path in light mode: from placeOrder in the mobile app, through the POST /api/orders route and saveOrder, to the order_items table

Know what breaks before you change it

Impact lists everything that depends on a file, function, endpoint or table — direct users first, then theirs. Copy it as a Mermaid diagram for your pull request.

⇧⌘I ⇧⌘M
Impact of saveOrder: six places may be affected, listed by distance in the inspector

Find anything in a keystroke

Search understands camelCase — plOrd finds placeOrder. Files, functions, types, endpoints and tables — Return flies there, ⌘Return opens your editor at the right line.

⌘K ⌘[ ⌘] ⌘↑
The ⌘K search palette listing types, functions, tables and files that match 'order'
For AI agents

Give your agent the map, not a grep.

Connect Claude Code, Codex, Cursor or Claude Desktop in one click. Your agent asks the map who calls what and what a change touches — and gets file paths and line numbers back.

Claude CodeCodexCursorClaude Desktop
Mapo's Integrations settings with Connect buttons for Claude Code, Codex, Cursor and Claude Desktop
› Which code writes the orders table?
mapo_node orders
table orders  apps/api/migrations/0001_init.sql:8
Read by (1):
  route GET /api/orders/:id  apps/api/src/routes/orders.ts:17
Written by (2):
  function saveOrder  apps/api/src/lib/db.ts:17
  route PATCH /api/orders/:id/status  apps/api/src/routes/orders.ts:22

› What does the API expose, and who calls it?
mapo_endpoints /api/
  route GET /api/menu  routes/menu.ts:7  ← 1 caller: fetchMenu
  route POST /api/orders  routes/orders.ts:9  ← 1 caller: placeOrder
  route GET /api/orders/:id  routes/orders.ts:17  ← 1 caller: fetchOrder

› What breaks if I change saveOrder?
mapo_impact saveOrder
Distance 1 (2):
  route POST /api/orders  apps/api/src/routes/orders.ts:9
Distance 2 (2):
  function placeOrder  apps/mobile/lib/api.ts:21
Private by design

Your code never leaves your Mac.

Runs locally

Analysis happens on your machine. Works offline.

No account

Download and open. Nothing to sign up for.

No telemetry

No analytics. Mapo only checks GitHub for updates.

Open source

Apache-2.0. Read every line on GitHub.

Install

Up and running in a minute.

Open the sample project on first launch to see it work in ten seconds, then drop in your own folder or pick a GitHub repository.

Download

Signed and notarized by Apple. Mapo keeps itself up to date.

Download .dmg

Homebrew

One command; brew upgrade knows about it.

brew install --cask bur2ak/tap/mapo

Build from source

Swift, SwiftUI and a small TypeScript map. Xcode 16 and XcodeGen.

Read the guide

macOS 14 Sonoma or later · Apple silicon (M1 and newer)

Questions

Is it really free?

Yes. Mapo is open source under Apache-2.0, with no paid tier and no account.

Which languages and frameworks does it understand?

Code structure comes from graphify (TypeScript, JavaScript, Python, Swift, Go, Rust, Java, Kotlin and more). On top of that, Mapo links HTTP calls to routes in Hono, Express, Fastify, Koa, Elysia, Next.js, Cloudflare Workers, FastAPI, Flask and Django; tRPC procedures to their callers; and code to tables in SQL migrations, Prisma, Drizzle and Supabase.

How accurate are the HTTP and database links?

They are inferred from code patterns and marked as inferred. Every link points at the line it came from, so checking one takes a click. On a 470-file production app, every client call in the app matched its server route.

How big a project can it handle?

cal.com — over 5,000 files and 100,000 links — maps in about two minutes on an M-series Mac. After that the map updates in the background as you work.

Does it work with my editor?

Double-click opens the file at the right line in VS Code, Cursor, Windsurf, Zed, Xcode, Sublime Text or your default app.

What about Intel Macs, Windows or Linux?

Not yet. Mapo is a native Mac app for Apple silicon today.

Stop guessing what your change touches.