Desktop app that analyzes JavaScript/TypeScript codebases and visualizes function call graphs interactively.
Point it at any JS/TS project and instantly see how functions connect — which functions call which, across files, with full import resolution.
Built with LuaJIT + LOVE2D. No Electron, no browser, no JavaScript runtime needed.
| Platform | Download | Size |
|---|---|---|
| Windows (64-bit) | obsidian-code-win64.zip | ~5 MB |
| Linux (x86_64) | obsidian-code-x86_64.AppImage | ~6 MB |
- Download and extract
obsidian-code-win64.zip - Double-click
obsidian-code.exe - Enter a project path in the toolbar and click Analyze
First run: Windows SmartScreen may warn about an unknown publisher. Click More info then Run anyway.
chmod +x obsidian-code-x86_64.AppImage
./obsidian-code-x86_64.AppImageEnter a project path in the toolbar and click Analyze.
luajit main.lua --cli /path/to/your/projectOutputs the call graph as JSON to stdout.
- Network Graph — Force-directed layout showing all functions as nodes and calls as edges. Pan, zoom, drag, hover for details.
- Flow View — Select a function to see what it calls (callees) and what calls it (callers) in a linear list.
- Sidebar — Browse files and functions. Click a file to filter the graph. Click a function to select it.
- Import Resolution — Follows
require,import, andexportacross files to accurately map cross-file calls. - External Filtering — Third-party packages (
react,lodash, etc.) are automatically excluded from the graph.
- JavaScript (
.js,.jsx) - TypeScript (
.ts,.tsx)
- Scan — Walks the project directory, respects
.gitignore, finds all JS/TS files - Parse — Uses tree-sitter to build ASTs for each file
- Extract — Pulls out function declarations, arrow functions, methods, and all call expressions
- Resolve — Maps imports/exports across files, links call sites to function definitions
- Graph — Builds a node+edge graph and renders it with a force-directed layout
| Layer | Tech |
|---|---|
| Runtime | LuaJIT |
| GUI | LOVE2D |
| AST parsing | tree-sitter (via ltreesitter) |
| File system | luafilesystem |
| JSON | lua-cjson |
- LOVE2D 11.5+
- LuaJIT
- ltreesitter, luafilesystem, lua-cjson (install via luarocks)
love .MIT
