CodeAtlas: a visual map of your development machine

A real model of what's actually running on this machine.

CodeAtlas scans your projects, processes, ports, Docker resources, runtimes, and package managers, and builds the dependency graph between them from real evidence: a container really was instantiated from that image, a process really is listening on that port. It runs entirely on your machine, with no account, no cloud sync, no upload, and no telemetry by default.

Sample data, not a scan of your machine

This is the same rendering code the desktop app uses (force layout, kind-family colors, hover-to-highlight), running on eight fabricated resources instead of a real scan. The full version is in section 04.

The machine map

Every screen in CodeAtlas is a view onto one typed model. A resource is one of 21 kinds, grouped here into the eight families the app's own dependency-graph legend uses. This is the actual type list from the app's source, not a paraphrase of it.

Source: src/lib/types.ts, ResourceKind. Colors: src/lib/kind-colors.ts, unmodified.
Kind What it is
ORIGIN
projectA discovered codebase: package.json, Cargo.toml, go.mod, or a similar manifest marks the root.
VERSION CONTROL
git_repository.git metadata: branch, status, recent commits, redacted remote URL.
RUNTIME & PROCESS
processA running process, read from the OS process table.
runtimeAn installed language runtime, detected on PATH (Node, Python, Go, Rust, Ruby, Java, .NET).
network_listenerA process's listening socket, cross-referenced against the port it's bound to.
portA TCP/UDP port with something listening on it.
CONTAINERS
docker_containerA container, running or stopped.
docker_imageAn image, whether or not any container currently uses it.
docker_volumeA named volume, whether or not any container currently mounts it.
docker_networkA user-defined Docker network.
PACKAGE MANAGEMENT
package_managerAn installed package manager (npm, pnpm, yarn, bun, pip, cargo, Homebrew, apt/dpkg, winget/choco).
packageA dependency declared by a project's manifest or lockfile.
ENVIRONMENT & TOOLING
toolA developer tool detected on PATH.
environment_variableA variable name observed in a process's environment. Values are never read.
ssh_config_entryA Host alias from ~/.ssh/config: hostname, user, and port only, never key material.
config_fileA recognized config filename inside a project root.
EPHEMERAL / STORAGE
build_artifactCompiled output from a build step (target/, dist/, build/).
cacheA known package-manager or tool cache directory.
disk_usage_entryA sized, dated directory the disk-usage provider flagged as worth knowing about.
SERVICE INFRASTRUCTURE
serviceAn OS-level background service (launchd on macOS, systemd user units on Linux).
databaseA logical database observed via container or service metadata.

One project's full record

Click a project, or tab to it and use the arrow keys, to see its detail pane: the same one the app opens on hover-then-click, never a modal, never a separate route. Three fabricated projects, so the pane has something real to show.

Sample data
Sample projects

api-gateway

project

~/Developer/api-gateway

language
TypeScript
framework
Express
branch
main
first_seen
2026-03-02
last_seen
2026-08-21 09:14

Evidence

  • projects
    package.json found at project root
    ~/Developer/api-gateway/package.json
  • git
    .git directory found, 3 local branches
    ~/Developer/api-gateway/.git

billing-service

project

~/Developer/billing-service

language
Rust
framework
axum
branch
main
first_seen
2026-01-18
last_seen
2026-08-21 09:14

Evidence

  • projects
    Cargo.toml found at project root
    ~/Developer/billing-service/Cargo.toml
  • git
    .git directory found, 1 local branch
    ~/Developer/billing-service/.git

worker-queue

project

~/Developer/worker-queue

language
Python
framework
celery
branch
main
first_seen
2026-05-27
last_seen
2026-08-21 09:14

Evidence

  • projects
    pyproject.toml found at project root
    ~/Developer/worker-queue/pyproject.toml
  • git
    .git directory found, 2 local branches
    ~/Developer/worker-queue/.git

The graph is the content

Real force layout (link + charge, settles under ~800ms then stops: no idle drift), real kind-family colors, real hover/selection rules: direct edges brighten to copper, everything else dims to 8%. Scroll to zoom, drag to pan, click a node or use the arrow keys once it's focused.

38 fabricated resources, 34 fabricated relationships: not a scan

scroll to zoom · drag to pan
arrow keys to cycle nodes

Keyboard-accessible list view (same sample data)
ResourceKindRelationshipTo
api-gatewayprojectusesNode 20.11.1
api-gatewayprojectdepends_onexpress 4.19.2
billing-serviceprojectconnects_todatabase: billing
billing-serviceprojectusesRust 1.78.0
postgres-devdocker_containerinstantiated_frompostgres:16
postgres-devdocker_containermountspgdata volume
worker-queueprojectconnects_toredis-cache container

Recommends. Never deletes.

The cleanup center surfaces unused Docker images and volumes, stale build artifacts, and caches, each with its size, evidence, last-used time, what depends on it, and exactly what removing it would do. CodeAtlas does not delete anything in the current release; you decide.

Sample data: expand a row for the reasoning

LOCAL.

What CodeAtlas reads, and what it never does

CodeAtlas reads sensitive material by design: process lists, environment variable names, SSH host configuration, Docker metadata, project source trees. Here is exactly what that means, restated from PRIVACY.md and SECURITY.md, the project's own docs.

NO UPLOAD

There is no server component. The discovery and storage code has no network client in it at all.

NO TELEMETRY BY DEFAULT

No usage analytics, no crash reporting to a remote service, no update-check that reports back identifying information. An opt-in feature would default off and this page would be updated first.

NO ACCOUNT

No sign-up, no login, no cloud sync in the current release.

ENV VARS: NAMES ONLY

Variable values are never read into a resource, never persisted to the database, and never sent to the frontend.

SSH CONFIG: FOUR FIELDS

Only Host, HostName, User, and Port from ~/.ssh/config. Private keys and known_hosts are never opened.

GIT REMOTES: CREDENTIALS STRIPPED

Any userinfo token embedded in a remote URL (https://TOKEN@host/...) is stripped before the URL is ever stored or displayed.

COMMAND LINES: TRUNCATED AND CHECKED

A short preview only, executable name plus one argument. A real scan during development surfaced a credential passed as a command-line argument by an unrelated tool, so every surviving token is now additionally checked against a secret-shaped pattern before storage.

WHERE IT LIVES

A single SQLite database in your OS's standard application-data directory. Nothing leaves that file unless you export or share it yourself.

Where this has actually run

PlatformStatusDetail
macOS Verified Run and verified against real, live system data. The primary development platform so far.
Linux Compiles, untested on hardware Platform code compiles and passes unit tests for its parsing logic; has not yet been run end-to-end against a real Linux machine.
Windows Compiles, untested on hardware Platform code compiles and passes unit tests for its parsing logic; has not yet been run end-to-end against a real Windows machine.

CI builds an installer for macOS (arm64 + x64), Linux, and Windows on every tagged release, independent of the verification status above.

The disk-usage provider walks and sizes cache/build-artifact directories synchronously; on the author's own ~/Developer with 79 projects, it's the slowest single provider, observed around 15 to 20 seconds. It doesn't block the others, since they run concurrently, but it sets the floor for total scan time.

Also a CLI

CodeAtlas ships a scriptable CLI, codeatlas, built from the same discovery engine the desktop app uses.

Command syntax is real. Output below is sample data.
$ codeatlas scan
Scanning configured search roots...
  projects              4 found      0.04s
  git                    3 found      0.11s
  processes              5 found      0.02s
  docker                10 found      0.41s
  runtimes               3 found      0.09s
  package_managers       5 found      0.06s
  tools                  1 found      0.01s
  environment             2 found      0.01s
  ssh                     1 found      0.01s
  disk_usage              3 found      2.31s
  services                1 found      0.03s

scan complete: 38 resources, 34 relationships, 11 providers, 4.9s
$ codeatlas ls project
api-gateway         ~/Developer/api-gateway         TypeScript · Express
billing-service      ~/Developer/billing-service      Rust · axum
worker-queue          ~/Developer/worker-queue          Python · celery
$ codeatlas search postgres
docker_container    postgres-dev            image postgres:16, port 5432
docker_image        postgres:16             438 MB
database            billing                 engine postgres 16
service             postgresql@16           launchd, port 5432
port                :5432                   bound by 2 resources: see cleanup notes
$ codeatlas changes
2026-08-19  discovered   environment_variable   STRIPE_API_KEY
2026-08-10  modified     docker_image           node:18-alpine (now unused)
2026-07-02  modified     build_artifact         target/ (0.9 GB -> 1.4 GB)
2026-06-30  modified     docker_container       redis-cache (running -> exited)
2026-05-27  discovered   project                worker-queue
$ codeatlas scans
2026-08-21 09:14   completed   38 resources   11 providers   4.9s
2026-08-20 22:03   completed   37 resources   11 providers   5.1s

The real app

Five views of the actual running application: not mockups.

Screenshot of the CodeAtlas desktop app's Overview view
Overview: the machine's top-level summary.
Screenshot of the CodeAtlas desktop app's Projects view, list and detail pane
Projects: the dense list and resizable detail pane.
Screenshot of the CodeAtlas desktop app's Dependency Graph view
Dependency graph: the real canvas render on a real machine's data.
Screenshot of the CodeAtlas desktop app's Cleanup Center view
Cleanup center: candidates with evidence, size, and consequence.
Screenshot of the CodeAtlas desktop app's Timeline view
Timeline: the diffed change history between scans.

Dual-licensed, publicly developed

Dual-licensed under MIT or Apache License 2.0, at your option. Apache-2.0 adds an explicit patent grant, which matters for software that inspects a machine's installed toolchains and containers; MIT satisfies anyone who prefers the simpler, more permissive option. This is the convention most of the Rust ecosystem uses, which keeps CodeAtlas's own dependency tree license-compatible without friction.

CI: Rust + frontend lint/test/build CodeQL: JS/TS, on push + weekly cargo audit in CI Dependabot: cargo, npm, GitHub Actions

MIT

The simpler, more permissive option. LICENSE-MIT

Apache License 2.0

Adds an explicit patent grant. LICENSE-APACHE

github.com/levimackay/codeatlas · Contributing guide · Architecture

Run it on your own machine

No tagged release is confirmed at the time this page was built. Until installers are published on the Releases page, build from source:

git clone https://github.com/levimackay/codeatlas.git && cd codeatlas && pnpm install && pnpm tauri dev

Once installers exist, expect them to be unsigned at first: no Apple Developer ID or Windows code-signing certificate is configured yet, so macOS will show an "unidentified developer" Gatekeeper warning and Windows will show a SmartScreen warning on first launch.