Show HN: We create visual codebase maps that scale (static analysis and LLMs)

Show HN (score: 5)
Found: July 30, 2025
ID: 594

Description

Code Quality
Show HN: We create visual codebase maps that scale (static analysis and LLMs) Hi all, I'm Ivan, and together with Alex, we're building a diagram visualization tool for codebases.

Alex and I are devs, and we've noticed that recently we've been super productive at writing code (prompting :D). But when it comes to understanding big systems, prompting doesn't work that well — for that, diagrams are best imo. Most tools out there don't scale to big projects (e.g. PyTorch), so we're building CodeBoarding — a recursive visualizer for codebases. It starts from the highest level of abstractions and lets you dive deeper. We use static analysis and LLM agents. The control-flow graph is our starting point, and we validate the LLM's analysis against the static analysis output. LLMs alone often hallucinate or apply familiar architectural patterns that don't actually exist in the code.

Since this is a concise representation of a codebase, we also added an MCP-server to provide our docs for the libs your project depends on — reducing hallucinations and avoiding blowing up the context window. The vision: With agents writing more and more code, we think we also need a concise representation for it — diagrams. But for that to work, the diagrams have to be accurate, and that's why static analysis has to take part in the fun ;d.

Would love to hear what you think about diagram representations for code, what problems you've run into with hallucinations while vibe-coding (even with tools like gitingest/context7), and any general feedback :)

More from Show

Show HN: KeyEnv – CLI-first secrets manager for dev teams (Rust)

Show HN: KeyEnv – CLI-first secrets manager for dev teams (Rust) Hi HN,<p>I built KeyEnv because I was tired of the &quot;can you Slack me the Stripe key?&quot; workflow.<p><pre><code> The problem: My team&#x27;s secrets lived in a mix of Slack DMs, shared Google Docs, and .env files that definitely weren&#x27;t in .gitignore at some point. Enterprise tools like Vault required more DevOps time than we had. Doppler was close but felt heavier than we needed. What KeyEnv does: keyenv init # link project keyenv pull # sync secrets to local .env keyenv run -- npm start # inject secrets, run command That&#x27;s basically it. Secrets are encrypted client-side (AES-256-GCM) before leaving your machine. Zero-knowledge architecture—we can&#x27;t read your secrets even if we wanted to. Technical details: - Single Rust binary, no runtime dependencies - Works offline (cached secrets) - RBAC for teams (owner&#x2F;admin&#x2F;member&#x2F;viewer) - Service tokens for CI&#x2F;CD - Full audit trail Honest tradeoffs: - SaaS only, no self-hosted option - Fewer integrations than Doppler - If you need dynamic secrets or PKI, use Vault Pricing: Free tier (3 projects, 100 secrets), $12&#x2F;user&#x2F;month for teams. Would love feedback on the CLI UX and any rough edges. Happy to answer questions about the architecture. </code></pre> <a href="https:&#x2F;&#x2F;www.keyenv.dev" rel="nofollow">https:&#x2F;&#x2F;www.keyenv.dev</a>

Show HN: WebTerm – Browser-based terminal emulator

Show HN: WebTerm – Browser-based terminal emulator

Show HN: WebGPU React Renderer Using Vello

Show HN: WebGPU React Renderer Using Vello I&#x27;ve built a package to use Raph Levien&#x27;s Vello as a blazing fast 2D renderer for React on WebGPU. It uses WASM to hook into the Rust code

Show HN: On the edge of Apple Silicon memory speeds

Show HN: On the edge of Apple Silicon memory speeds I have developed open source CLI-tool for Apple Silicon macOS. It measures memory speeds in different ways and also latency. It can achieve up to 96-97% efficiency on read speed on M4 base what is advertised as 120GB&#x2F;s. All memory operations are in assembly.<p>I would really appreciate for results on different CPU&#x27;s how benchmark works on those. I have been able to test this on M1 and M4.<p>command : &#x27;memory_benchmark -non-cacheable -count 5 -output results.JSON&#x27; (close all applications before running)<p>This will generate JSON file where you find sections copy_gb_s, read_gb_s and write_gb_s statics.<p>Example M4 with 10 loops: &quot;copy_gb_s&quot;: { &quot;statistics&quot;: { &quot;average&quot;: 106.65421233311835, &quot;max&quot;: 106.70240696071005, &quot;median&quot;: 106.65069297260811, &quot;min&quot;: 106.6336774994254, &quot;p90&quot;: 106.66606919223108, &quot;p95&quot;: 106.68423807647056, &quot;p99&quot;: 106.69877318386216, &quot;stddev&quot;: 0.01930653530818627 }, &quot;values&quot;: [ 106.70240696071005, 106.66203166240008, 106.64410802226159, 106.65831409449595, 106.64148106986977, 106.6482935780762, 106.63974821679058, 106.65896986001393, 106.6336774994254, 106.65309236714002 ] }, &quot;read_gb_s&quot;: { &quot;statistics&quot;: { &quot;average&quot;: 115.83111228356601, &quot;max&quot;: 116.11098114619033, &quot;median&quot;: 115.84480882265643, &quot;min&quot;: 115.56959026587722, &quot;p90&quot;: 115.99667266786554, &quot;p95&quot;: 116.05382690702793, &quot;p99&quot;: 116.09955029835784, &quot;stddev&quot;: 0.1768243167963439 }, &quot;values&quot;: [ 115.79154681380165, 115.56959026587722, 115.60574235736468, 115.72112860271632, 115.72147129262802, 115.89807083151123, 115.95527337086908, 115.95334642887214, 115.98397172582945, 116.11098114619033 ] }, &quot;write_gb_s&quot;: { &quot;statistics&quot;: { &quot;average&quot;: 65.55966046805113, &quot;max&quot;: 65.59040040480241, &quot;median&quot;: 65.55933583741347, &quot;min&quot;: 65.50911885624045, &quot;p90&quot;: 65.5840272860955, &quot;p95&quot;: 65.58721384544896, &quot;p99&quot;: 65.58976309293172, &quot;stddev&quot;: 0.02388146120866979 },<p>Patterns benchmark also shows bit more of memory speeds. command: &#x27;memory_benchmark -patterns -non-cacheable -count 5 -output patterns.JSON&#x27;<p>Example M4 from 100 loops: &quot;sequential_forward&quot;: { &quot;bandwidth&quot;: { &quot;read_gb_s&quot;: { &quot;statistics&quot;: { &quot;average&quot;: 116.38363691482549, &quot;max&quot;: 116.61212708384109, &quot;median&quot;: 116.41264548721367, &quot;min&quot;: 115.449510036971, &quot;p90&quot;: 116.54143114134801, &quot;p95&quot;: 116.57314206456576, &quot;p99&quot;: 116.60095068065866, &quot;stddev&quot;: 0.17026641589059727 } } } }<p>&quot;strided_4096&quot;: { &quot;bandwidth&quot;: { &quot;read_gb_s&quot;: { &quot;statistics&quot;: { &quot;average&quot;: 26.460392735220456, &quot;max&quot;: 27.7722419653915, &quot;median&quot;: 26.457051473208285, &quot;min&quot;: 25.519925729459107, &quot;p90&quot;: 27.105171215736604, &quot;p95&quot;: 27.190715938337473, &quot;p99&quot;: 27.360449534513144, &quot;stddev&quot;: 0.4730857335572576 } } } }<p>&quot;random&quot;: { &quot;bandwidth&quot;: { &quot;read_gb_s&quot;: { &quot;statistics&quot;: { &quot;average&quot;: 26.71367836895143, &quot;max&quot;: 26.966820487564327, &quot;median&quot;: 26.69907406197067, &quot;min&quot;: 26.49374804466308, &quot;p90&quot;: 26.845236287807374, &quot;p95&quot;: 26.882004355057887, &quot;p99&quot;: 26.95742242818151, &quot;stddev&quot;: 0.09600564296001704 } } } }<p>Thank you for reading :)

No other tools from this source yet.