Skip to content

Product

Everything your codebase is, on one canvas.

Graphide builds a graph of your repository, every module, file, class and function and every call and dependency between them, and keeps it beside your code. You and your agents work on both.

Click a node · drag to pan · pinch to zoom
apiapi/
authauth/
checkoutcheckout/
ratelimitratelimit/
billingbilling/
ordersorders/
resources5
CheckoutHandler
OrdersHandler
Router
RequireSession
Verify
PlaceOrder
Quote
Cart
Limiter
Allow
Charge
Refund
Invoice
Create
Repo
stripe
payments
orders
postgres
redis

An example codebase. Click any node, then anything it touches.

01 · The graph

Every symbol and every edge, described.

gr init parses your repository and records what it is made of: modules, files, classes, functions, variables, the tables it writes and the services it calls. Every node gets a one-line description of what it does, and every edge says how two things relate.

Nodes

  • checkoutmodulepackages and directories
  • Limiterclassclasses and types
  • PlaceOrderfuncfunctions and methods
  • receiptTemplatevariablevariables and constants
  • paymentstabledatabase tables
  • stripeserviceservices the code calls

Edges

  • callsone function invokes another
  • usesreads or writes a table, a type, a value
  • handlesserves a route, talks to a service
  • depends_ona module needs another
  • implementsa type satisfies an interface

02 · Architecture

See the architecture you actually have.

Every symbol at once is soup; Flask alone has 1,882 of them. The Architecture view is the whiteboard sketch instead: the parts a maintainer would name, where each one runs, and a labelled arrow for how a request moves between them. This is Flask’s. A model drew it from Graphide’s graph of the code, and Graphide checked every box against that graph; an arrow the graph cannot see is drawn dashed.

Browser or HTTP clientSends the requests the app answers
flask command
flask run: finds the app and serves it
src/flask/cli.py
WSGI serverWerkzeug's dev server, or gunicorn in production
Application
Turns each request into a response
src/flask/app.py
Contexts
What request, g and current_app point at
src/flask/ctx.py
Sessions
A signed cookie, checked on every request
src/flask/sessions.py
Blueprints
Group views, then record them onto the app
src/flask/blueprints.py
Templates
render_template, through Jinja2
src/flask/templating.py
Flaskr, the tutorial app
A real app on Flask: its own views, blueprints and database
examples/tutorial/flaskr
SQLite databaseFlaskr's users and postsexamples/…/db.py
WerkzeugRouting, requests, responses, the dev server
Jinja2The template engine
Load the app
src/flask/cli.py
Dispatch a request
src/…/app.py
URL rules
…/scaffold.py
Error handlers
src/…/app.py
Request context
src/flask/ctx.py
request · g · session
src/flask/globals.py
Register
src/…/blueprints.py
Class-based views
src/flask/views.py
create_app
…/__init__.py
Blog views
…/blog.py
Login views
…/auth.py

01 / 12Browser or HTTP client

03 · Agents

Agents read the graph before they write.

The graph is an MCP server. Claude Code and Codex in the editor, and any other agent that speaks MCP, can search it, walk it and edit it. Questions a text search cannot answer, like what calls this or whether that can reach this, are one call each.

Ask the graph

3 matches  billing.Charge    function  billing/charge.go:31  billing.Refund    function  billing/refund.go:19  payments          table     004_payments.sql
apiapi/
authauth/
checkoutcheckout/
ratelimitratelimit/
billingbilling/
ordersorders/
resources5
CheckoutHandler
OrdersHandler
Router
RequireSession
Verify
PlaceOrder
Quote
Cart
Limiter
Allow
Charge
Refund
Invoice
Create
Repo
stripe
payments
orders
postgres
redis

04 · Plan

Plan on the graph, then hand it over.

Add a node where it belongs, connect it, and write down what it should do. It stays dashed, planned, until an agent builds it, and while it does you can see exactly which nodes it is reading and writing.

checkoutcheckout/
ordersorders/
resources1
PlaceOrder
Quote
Create
postgres

05 · Review

Review the shape of a change, then the lines.

An agent's change opens as the nodes it added, changed and removed, in the modules they live in. Start there, and read the diff for the parts that matter.

41 files+1,284−7121,996 lines to read

DiffForty-one files, about two thousand lines. The change to auth/session.go is in there, past line one thousand.

Shown as a diff: 41 files and 1,996 changed lines.

06 · Verify

Check the code against the graph, in CI.

gr check confirms every symbol is where the graph says, every HTTP route is declared, and every edge marked critical, like an auth check, still exists in code. It is static analysis rather than a model's opinion, and it exits non-zero, so a git hook or a CI job can stop a merge on it.

CCMoved the checkout routes under /v2
apiapi/
authauth/
checkoutcheckout/
Router
CheckoutHandler
RequireSession
Verify
PlaceOrder
CCMoved the checkout routes under /v2

07 · Repo & shell

It lives in your repo and your terminal.

The graph is versioned with your code, so it commits, diffs and merges alongside it. Every change to it has history and can be undone. And everything the checks need runs from a shell.

$ gr init      # build the graph for this repository$ gr git setup # version the graph alongside the code$ gr sync      # record edits made outside the editor$ gr check     # verify the code against the graphno compliance violations found

Closed alpha

Bring your own codebase.

Graphide is invite-only while we work closely with our first users. Request access and we will let you in; an access code skips the queue.

No GitHub or Microsoft account? Leave your email instead.

Two founders read every one. We keep your address in our database at Supabase and use it to send you an invite — no list, no newsletter, nobody else. Ask us to delete it whenever you like.