Every repositorygets a real map

Parsed, not guessed. Mapped from one URL.

>
DevVaultFileEditViewWindowFri Nov 13 9:41 AM
Dependency map devvault · this repository111 files · 243 edges · 0 guessed
lib/pipeline/run.ts
Runs one analysis end to end: fetches the archive, selects files, parses imports and stores the map.
IN 1OUT 3
Paste a public GitHub URL…
MapRoutesCoverageExplain
Next.js
React
Express
NestJS
Docusaurus
TypeScript
JavaScript
Any TS repo
++++
[ How a map is made ]

From one URLto a real map

Your repoinput
app/
├ layout.tsx
├ page.tsx
└ (workspace)/
components/
├ landing/
└ map/
lib/
├ parser/
└ pipeline/
> github.com/owner/repo
DevVault · parserrunning
Parsing imports…
111 files · 243 edges · 0 guessed
Mapoutput
Internal
243
External
152
Excluded
2
Unresolved
0
0Guessed edges
5Framework adapters
4Ways an import ends

The foundation for understanding your software

Fetch, parse, map and explain any public TypeScript or JavaScript repository from one URL.

01Parse

Real Files, Real Imports

Every file is read with a TypeScript parser. Imports, exports and requires come from the syntax tree.

02Resolve

Resolved or Reported

Each import resolves to a file in the repository, points outside it, or fails with a reason you can read.

03Explain

Explanations, Not Decisions

The model explains what the parser found. It never adds a file, an edge or a route to the map.

Supported frameworks

Move freely between
frameworks and layouts

Framework knowledge lives in adapters, never in the parser. Next.js, React, Express, NestJS and Docusaurus add routes and entry points. Everything else is still parsed as plain TypeScript.

Next.jsReactExpressNestJSDocusaurusTypeScriptNext.jsReactExpressNestJSDocusaurusTypeScript
JavaScriptAny TS repoJSX / TSXPath aliasesMonoreposnpm packagesJavaScriptAny TS repoJSX / TSXPath aliasesMonoreposnpm packages
+ Any TypeScript or JavaScript repository, through the fallback adapter

Build your map of the codebase

Turn a repository URL into a map you can read, search and share with your organization. Every view below is drawn from the same parse.

Dependency Map

Files and folders laid out by the edges between them. Folders fold, so a large repo stays readable.

ROUTESNEXT.JS ADAPTER · 6 PAGES
ALL 6PAGES 6API 0OMITTED 0
GET/
app/page.tsx
GET/dashboard
app/(workspace)/dashboard/page.tsx
GET/analyses/[id]
app/(workspace)/analyses/[id]/page.tsx
GET/start
app/start/page.tsx
GET/sign-in/[[...sign-in]]
app/sign-in/[[...sign-in]]/page.tsx
GET/sign-up/[[...sign-up]]
app/sign-up/[[...sign-up]]/page.tsx

Route Table

Routes recovered by the framework adapter, each linked to the file that serves it. Partial routes are left out.

lib/pipeline/run.tsEXPLAIN
PIPELINEIMPORTS 10SERVER

Runs one analysis end to end. It claims the row, makes a temporary working folder, downloads the repository archive at its head commit, selects and parses the files, and stores the result.

Any failure in any stage ends with the row marked failed, with its reason, in the stage it happened in.

↳ ../parser/index.ts↳ ./github.ts↳ ./stages.ts↳ ./store.ts

File Explanations

Select a file to read what it does, written from what the parser found in and around it.

COVERAGE397 IMPORTS SEEN
INTERNAL243
EXTERNAL152
EXCLUDED2
UNRESOLVED0
import388re-export1dynamic-import0require8

Coverage Report

Every import counted as resolved, external, excluded or failed, with examples of each failure.

Reach

Follow what a file depends on, or everything that depends on it, a few hops out.

Page routes6
Server actions3
Layouts2
Components28
Hooks1
Config files3

Category Rail

Files grouped by role, from pages to config, so you can hide what you aren't reading.

Live Progress

Watch an analysis move through fetch, select, parse and store as it happens.

Import Cycles

Files that import each other in a loop, found from the edges and listed by path.

Your codebase, readable in one sitting

DevVault does the reading that slows your team down. Every use below starts from one repository URL.

  1. 01

    Onboard a new engineer

    Hand them the map before the codebase, so their first week starts with the shape of things.

    Learn more
  2. 02

    Review a large change

    See which files a change touches and everything that depends on them.

    Learn more
  3. 03

    Plan a refactor

    Find the files with the most dependents before you move them.

    Learn more
  4. 04

    Audit unresolved imports

    Read every import that didn't resolve, with the reason it didn't.

    Learn more
  5. 05

    Map a monorepo

    Each package is its own project, so cross-package imports show up as real edges.

    Learn more
  6. 06

    Document routes

    Turn the route table into the page list nobody kept up to date.

    Learn more
[ Where DevVault fits ]

Your code is the product.DevVault is how you read it.

You bring the repository. DevVault walks every file, resolves every import to a real file and draws what it found. Anything it can't resolve is reported with a reason, never filled in.

[ Your repo ]

Any public repo, any layout.

Next.js · React · Express · NestJS · Docusaurus · plain TypeScript
Any repo
app · api · docs · monorepo one URL to start
[ DevVault · the parser ]

A real parse, file by file.

Every import read from the syntax tree · nothing inferred
The parse
walk · extract · resolve per commit · per project
Walk
walkRepository()
Extract
extractImports()
Resolve
createResolver()
Count
fanCounts()
[ Through the parser ]

Every import, accounted for.

Each one resolves, points outside, or fails with a reason
Internal
resolved to a real file
External
package · builtin outside the repository
Excluded
non-code files, by rule
Unresolved
kept, with its reason
[ The map beneath ]

One parse, every view.

Map, routes and coverage all read the same result
Map
files · folders · edges
Routes
pattern → file
[ Use cases ]

Read and reviewany codebase.

Maps that come from real imports, for the reading you do before you change anything.

Team applications

Turn a URL into a readable map

Paste a public repository and get its files, folders and real imports drawn as a map.

Next.jsReactSee how →
github.com/owner/repo
Fetch archive
Select files
Parse imports
edges 243

Review with the blast radius in view

Pick a file and see everything that depends on it before a change lands.

ExpressNestJSSee how →
change
map
reach
routes

Account for every single import

Each one resolved, external, excluded or failed, with a reason you can read.

TypeScriptSee how →
Internal
External
Excluded
Unresolved
Coverage report
243 internal
152 external
2 excluded
0 unresolved

Hand a new hire the shape of the code

Files grouped by role, each one explained from what the parser found.

DocusaurusSee how →
categories
Page routes
Server actions
Layouts
Components
Hooks
explain · components/shell.tsx

Built on facts from the first line

The parser decides what is on the map.
The model only explains it, and every call is traced.

No guessed edgesA reason for every failureRow-level securityOrganizationsTraced AI callsCached explanations
Build log

How DevVault was built

From docs/specs
DEVVAULT / PHASE 03

Phase 03 · The parser, and how it proves itself right

Turn a repository on disk into a list of files and the real connections between them, and prove it's right.

Read the spec
DEVVAULT / PHASE 07

Phase 07 · The pipeline from a URL to a stored map

Paste a URL and watch your own repository become a map, stage by stage.

Read the spec
DEVVAULT / PHASE 08

Phase 08 · Framework adapters, kept out of the parser

The application recognises what kind of codebase it's looking at, without the parser knowing.

Read the spec
DEVVAULT / PHASE 10

Phase 10 · Explain, cached and traced from the first call

The first model call, and everything that has to be true around it.

Read the spec
DEVVAULT / PHASE 11

Phase 11 · Evals that turn answer quality into a number

Answer quality stops being an opinion and becomes a number.

Read the spec