[ANN] DependencyAtlas.jl—Explore Julia codebases as dependency graphs

I’m happy to share DependencyAtlas.jl, a software package for turning Julia codebases into explorable dependency graphs.

DependencyAtlas focuses on static and compiler-time source analysis. It builds graph views from three engines: DepAtlasSource (source structure), StaticLint (semantic tooling), and JET (compiler-time evidence), so you can inspect a project as connected methods, files, and modules instead of reading it only as a directory tree.

Existing Julia packages already cover important parts of this space. StaticLint.jl, CSTParser.jl, and LanguageServer.jl support static and binding-aware analysis; JET.jl, SnoopCompile.jl, and Cthulhu.jl provide compiler-time and inference-oriented inspection; and ProfileView.jl, PProf.jl, and TraceFuns.jl target runtime behavior. The gap is that these tools usually expose only one layer of evidence at a time through editor, REPL, or profiler-specific workflows, rather than through a unified project-level dependency model. DependencyAtlas aims to fill that gap by combining source structure, semantic evidence, and compiler-time call evidence into a unified graph interface with method, file, and module views, bounded reachability, overload-site inspection, and source previews.

What it does

DependencyAtlas can help you:

  • explore method, file, and module dependency views
  • inspect callers, callees, and bounded reachability
  • preview source snippets and overload sites
  • surface Base/stdlib and external package calls

Why you may want it

When trying to understand a Julia codebase, you often want answers like:

  • which functions or files call a particular method?
  • what does the full call chain of a particular function look like?
  • which files define the structure of this subsystem?
  • what does the file dependency chain of the project look like?

Julia already has many excellent tooling components, but this software package brings these relationships together in one place through an interactive graph UI, making them easier to inspect as connected structure.

Tech Stack

DependencyAtlas is a mixed-language project.

Backend: Julia
Frontend: TypeScript, React, Vite, React Flow, Tailwind CSS
Docs: Docusaurus, React, TypeScript

Documentation

Website:

Repository:

Screenshots

File dependency graph

Node path highlighting

Reachability mode (dark theme)

35 Likes

I’ve been wanting something like this for a while. Can’t wait to try it out.

1 Like

Please give it a try! We look forward to hearing your feedback.

1 Like

Is it possible to get VSCode integration? Or does anyone know an extension that builds similar graphs from Julia code?

2 Likes

We could build it as a VS Code extension, which would enable nice editor integrations, such as clicking on a node and jumping directly to the corresponding source location.

However, it would not be a lightweight extension. It would still need to start a Julia runtime in the background to perform the analysis. There are also maintenance costs associated with that integration.

At the moment I do not have enough time or energy to maintain a VS Code extension on top of the current package, so it is not something I plan to take on right now. If someone is interested in building it, though, I would be very happy to review a PR.

6 Likes

I tried installing on julia 1.10.9 with windows 11 and was not able to due to the
julia version requirement at 1.12.

Any chance for julia LTS support?

1 Like

Okay, I’ll try to relax it to julia v1.10 today.

Update: Hi devel-chm. I just resolved the Julia 1.10 compatibility issue. I tested the package on Julia v1.10.11 and made sure it works correctly there. Please try again on Julia 1.10.9. If you still run into any problems, feel free to leave another comment.

Is it intended to analyze packages only, or does it work on scripts as well? This was not clear to me going through quickly the docs.
I’ll give it a try anyways!

It works on scripts as well as packages.

At the moment, the analysis path can point either to a package directory or to a single Julia script. If a script is provided, it is used as the entry file.

One thing to keep in mind is that the current project-root inference still walks upward looking for a Project.toml, so both package and script analysis may inherit context from an ancestor project if one exists. If no Project.toml is found in any parent directory, the file is currently treated as belonging to no module.

I have opened an issue to track this more explicitly, including better GUI feedback and clearer documentation. I will update this soon.

Thank you for the question.


Update: Hi, @cserteGT3. This has been addressed.

The web UI now includes a separate Project Root input field. When you select a single file, that field is left empty by default, which means the file is analyzed without being placed inside any project context.

When you select a directory, DependencyAtlas still behaves as before and scans upward looking for Project.toml. The difference now is that the detected project root is shown explicitly in the Project Root field.

3 Likes

This happens on windows 11 with Julia 1.12.4
julia> versioninfo()
Julia Version 1.12.4
Commit 01a2eadb04 (2026-01-06 16:56 UTC)
Build Info:
Official https://julialang.org release
Platform Info:
OS: Windows (x86_64-w64-mingw32)

(@v1.12) pkg> add karei/DependencyAtlas.jl - Codeberg.org
Updating git-repo https://codeberg.org/karei/DependencyAtlas.jl.git
Resolving package versions…
ERROR: Unsatisfiable requirements detected for package JSON [682c06a0]:
JSON [682c06a0] log:
├─possible versions are: 0.18.0 - 1.4.0 or uninstalled
├─restricted to versions 1 by DependencyAtlas [4fd80dc0], leaving only versions: 1.0.0 - 1.4.0
│ └─DependencyAtlas [4fd80dc0] log:
│ ├─possible versions are: 0.1.0 or uninstalled
│ └─DependencyAtlas [4fd80dc0] is fixed to version 0.1.0
└─restricted to versions 0.21 by P3109SignatureGenerator [a1b2c3d4] — no versions left
└─P3109SignatureGenerator [a1b2c3d4] log:
├─possible versions are: 2.0.0 or uninstalled
└─P3109SignatureGenerator [a1b2c3d4] is fixed to version 2.0.0

Hi, thanks for the report.

This is a dependency conflict in your current environment. From the resolver output, DependencyAtlas requires JSON 1.x, while P3109SignatureGenerator restricts JSON to 0.21, so Julia cannot satisfy both at the same time.

JSON 0.21 belongs to the older pre-1.0 line. JSON.jl went through a significant transition at 1.0.0, so I do not plan to make DependencyAtlas support both the old 0.21 line and the current 1.x line at the same time. In general, the better fix is for the older package to relax or update its compat bounds if it can support newer JSON releases.

So the practical options are:

  • install DependencyAtlas in a clean Julia environment, for example:
julia> ]
pkg> activate --temp
pkg> add https://codeberg.org/karei/DependencyAtlas.jl.git
  • remove P3109SignatureGenerator from that environment if it is not needed there.

thanks for the quick response