PageRank for Your Technical Debt: How beads_viewer_rust Solves the Triage Trap

Moving beyond "Priority: High" with a graph-aware engine built for autonomous agent swarms.

• View on GitHub • More from Dicklesworthstone

A complex clockwork mechanism where one tiny bent pin causes a massive pile-up of larger gears, viewed through a magnifying glass.
In a dependency graph, the loudest issue isn't always the most critical bottleneck.

gives swarms of agents the insight into what beads they should work on next to de-bottleneck the development process and increase velocity.

Jeffrey Emanuel, Creator/Maintainer · Dicklesworthstone/beads_rust README

Key Takeaways

The End of the Loudest Voice

In complex software projects, a "High Priority" task is often just the loudest one, not the most critical. When human emotion dictates triage, structural bottlenecks hide in plain sight. beads_viewer_rust (bvr) treats your issue tracker like a search engine treats the web. By applying PageRank and Graph Theory to local-first .beads files, it identifies the "Articulation Points"—the quiet, unglamorous bugs that are actually holding up the entire dependency tree.

How bvr calculates ImpactScore by balancing structural graph metrics against operational urgency.

Built for the Agent Flywheel

This isn't just a terminal user interface; it’s a triage engine for the post-human era. bvr is specifically designed to tell AI agents exactly what to do next without a human project manager in the loop. The "Robot Mode" serves as an API for AI agent swarms, providing a machine-readable JSON/TOON pipe that allows LLMs to navigate dependencies mathematically.

Hedcut portrait of Jeffrey Emanuel.

The closed-loop architecture where bvr acts as the autonomous triage brain for AI coding agents.

The FrankenTUI: 11 Ways to See a Bug

When humans do need to look under the hood, bvr provides the "FrankenTUI." This highly dense, keyboard-driven interface offers 11 specialized modes. Users can seamlessly switch between standard Kanban boards, cycle detection matrices, and critical path visualizations, exposing the underlying graph structure that list-based trackers obscure.

Featurebvr (Beads Viewer Rust)GitHub Issues / Jira
Data SovereigntyLocal-first (.beads folder), Git-nativeCloud-hosted, centralized APIs
Priority LogicGraph metrics (PageRank, Betweenness)Manual labels (High, Medium, Low)
Agent CompatibilityNative JSON/TOON pipe (Robot Mode)Requires API scraping and context assembly
HistoryGit-native JSONL ledgerDatabase audit logs

Rust, SQLite, and the Git-Native Ledger

Underneath the graph analysis is a hybrid storage engine prioritizing determinism. bvr reads .jsonl (JSON Lines) from .beads/ directories. By maintaining issue state in version-controlled files, the issue history is tied exactly to the code it describes. The transition to pure Rust ensures memory safety and provides the raw performance needed to run heavy $O(V+E)$ graph traversals instantly, while deferring more complex $O(V \cdot E)$ calculations to background threads.

A thick book with transparent pages, showing the ghosts of previous project graph states underneath.
Git-native issue tracking ensures the project's state history is as immutable and traversable as its code.

Evolution of a Philosophy

The project represents a high-performance evolution of Steve Yegge’s original Go-based Beads ecosystem. As the original Beads moves toward a server-based architecture, creator Jeffrey Emanuel ported the logic to Rust to freeze the "classic" SQLite and JSONL architecture. This specific combination is what makes the Agent Flywheel possible, proving that sometimes the best way forward is to deeply optimize a proven, local-first foundation.

I (Jeffrey Emanuel) LOVE Steve Yegge's Beads project. Discovering it and seeing how well it worked together with my MCP Agent Mail was a truly transformative moment in my development workflows and professional life. This quickly also led to beads_viewer (bv), which added another layer of analysis to beads that gives swarms of agents the insight into what beads they should work on next to de-bottleneck the development process and increase velocity... Rather than ask Steve to maintain a legacy mode for my niche use case, I created this Rust port that freezes the "classic beads" architecture I depend on.

Jeffrey Emanuel, Creator/Maintainer · Dicklesworthstone/beads_rust README