Open source update: six new tools and what changed, September to October 2026

Between 1 September and 25 October 2026, my public repositories at github.com/grahambrooks cut 92 releases across 27 repositories. Most of those numbers are plumbing. This post separates the plumbing from the parts you’d notice.

It’s for anyone who uses one of these tools, or who’s wondering whether one of them is worth trying. Each project gets a one-line definition the first time it appears, so you shouldn’t need to have read anything else here first.

Most of the count is mechanical. Each tool cuts a CalVer release (vYYYY.M.N) on the first of the month whether or not anything beyond dependencies changed. That’s 14 releases on 1 September and 23 on 1 October. On 19 September, 21 repositories moved to the same release pipeline, release-kit v2, which produced another burst of releases that were mostly the pipeline releasing itself. bsdoc, a Go CLI that uses GitHub Copilot to write Backstage catalog documentation, accounts for 13 releases on its own. fingerprint, a Go module for document similarity, publishes a build per commit and accounts for 6 more.

Strip that out and about a dozen repositories changed in ways a user would see. Those are below.

Six tools are new here: four had their first release this month, and two shipped earlier but were never introduced on this blog. Each one has its own introduction.

teleplot is a view-only dashboard server for Elasticsearch, shipped as one binary. It renders the Kibana dashboard exports you already have, plus its own YAML dashboards, and only ever reads from the cluster. First release v2026.10.0 on 24 October, after 61 commits starting on 2 October.

teleplot’s Delivery Overview dashboard: DORA metrics, lead time percentiles, PR cycle time as a scatter and a heatmap, and investment allocation by type of work

infographic is a Claude Code skill plus a Rust CLI that turns a one-line request (“explain the circuit breaker pattern”) into an animated SVG in light and dark themes, and checks the result before handing it over. First release v2026.10.1 on 25 October. This is the circuit breaker one, produced from that one-line request. It animates, so give it a few seconds to run through its five phases:

An animated infographic of the circuit breaker pattern: a client, a circuit breaker and a service, cycling through closed, failing, open, half-open and closed again

backstage-catalog-graph is a pair of editor plugins, for VS Code and JetBrains IDEs, that draw a Backstage catalog-info.yaml as a graph you can navigate. Every reference that points outside the file gets a placeholder node instead of disappearing. First public release v2026.10.24 on 25 October.

The storefront example in VS Code: catalog-info.yaml on the left and its graph on the right, with dashed placeholder nodes for the group, API, resource and user it references but doesn’t declare

diagram-scene is a Rust library that describes a laid-out diagram as plain data: shapes, containers, routed edges and colours as theme roles. Layout engines produce a scene and painters draw one, so neither has to know about the other. It was tagged v2026.10.0 on 13 October, and mmd, puml and forge all switched to it the same day.

mmd renders Mermaid diagrams to SVG in pure Rust, with real <text> labels instead of the embedded HTML Mermaid uses, so the output survives conversion to PDF. It supports flowcharts, gitGraph and C4 context diagrams, and rejects anything else with an error naming the line. First release v2026.9.0 on 19 September. Flowcharts landed in v2026.10.2 on 13 October. Here’s mmd’s own gitGraph example, rendered by the released binary:

v0.1v0.2×maindiagramshotfixscaffoldsvg basegitGraphC4docsmerge diagramsreleaserevert

increment is a terminal diff viewer (the command is inc) built around the aligned side-by-side view: corresponding lines level with each other, word-level highlighting, folding you can undo, moved blocks shown as moves, and inc review for walking a branch one commit at a time. It first shipped as v2026.8.0 on 28 August, just before this window, and I never wrote it up. The current release is v2026.10.1.

inc showing a split diff: two syntax-highlighted panes with a shared line-number gutter, the changed word highlighted on each side of a modified line, added lines facing blank space, and unchanged regions folded

symgraph is an MCP server and CLI that indexes a codebase into a graph of symbols and references, so an agent can ask who calls what. It had the largest change of any existing tool. v2026.10.1 shipped the work from a 20 September review, which I wrote about in Making a Code Graph Admit What It Doesn’t Know. The index now records which symgraph version built it and refuses to answer quietly from a stale one. Ambiguous and truncated results say so instead of implying certainty. Failed tool calls are reported as errors rather than as successful text. The two binaries are now one. Reference resolution was also reworked to resolve in tiers rather than rank every candidate for every reference. Then v2026.10.18 kept vendored and minified files out of the dependency graph and added symgraph export, which emits records for a software-analytics pipeline, including a commit’s blast radius.

forge, a modelling language and toolchain that describes architecture in a single .forge file and renders diagrams and documentation from it, shipped a JetBrains preview plugin in 2026.9.8 and the ability to read a model from stdin. In 2026.10.2 it became usable as a library, with views produced as diagram-scene scenes and layouts that stay put between runs.

puml, a PlantUML renderer written in Rust, moved to diagram-scene in 2026.10.2, and sequence diagrams with lost messages now parse.

tropism is a dependency analyser for polyglot repositories that finds import cycles and enforces architecture rules a team has written down. v2026.9.2 implemented the layers rule kind, which had been specified in the design but rejected at parse time. A layer stack is listed top first, and no layer may depend on one above it. v2026.9.1 fixed a worse bug: a ruleset that failed to load was treated as zero rules and passed. It now exits 2. I wrote about tropism in an agent’s workflow in Architecture the Agentic Loop Can Actually Check.

colab is a refactoring tool for mechanical, repo-wide code changes, driven by a small DSL and usable by an agent over MCP. v2026.9.2 went from five languages to twelve, adding C, C++, C#, PHP, Ruby, Kotlin and Swift, and brought each one up to the same floor: an import rewrite, a symbol rename and call rewriting. It also added config-file backends for TOML, JSON and Markdown, so a repository convention such as a new pre-commit hook, a settings key or a managed section of AGENTS.md can be rolled out the same way a code change is: scoped, previewable, idempotent and checkable with --check. The TOML backend keeps comments, and the JSON backend splices in place so key order and formatting survive.

casual-review, a code review tool that stores review comments inside the git repository, changed direction in v2026.9.2. The April post described two halves: a tree-sitter linter (cr check) that flagged only the lines you’d touched, and review comments persisted as git notes. The linter half is gone, along with its dependency stack. cr now adds, lists, replies to and resolves comments anchored to a line range, a file or a commit, stored on refs/notes/casual-review/discuss so they travel with the repository. A stdio MCP server, cr mcp, gives an agent the same operations. If you followed the April post, cr check and cr publish no longer exist. The GitHub repository description still describes the linter, which I need to fix.

bx runs a tool’s release binary straight from GitHub, the way npx or uvx run packages, without needing Node or Python. v2026.9.3 can download release assets from private repositories and skips archive formats it can’t unpack instead of failing. The bx introduction has the background.

Some of the more interesting work this month hasn’t been tagged yet. Unless something ships sooner, it should go out with the monthly releases on 1 November.

brake checks an API contract against its previous version and fails the commit when a change would break a consumer, across OpenAPI, protobuf and GraphQL. On main it now reads a fifth format: a committed snapshot of an MCP server’s tools/list result. Each tool is treated as an endpoint, its input schema as the request and its output schema as the response, so removing a tool or making an argument required is caught by the same rules that catch a removed REST endpoint. brake never starts the server. It also gained four structural lint rules (enum-type-mismatch, enum-duplicate-value, operation-id-duplicate, path-param-undeclared) for defects that break consumers even when there’s no previous version to compare against. Background is in Giving the Consumer a Representative in the Working Tree.

tropism has an export command on main that emits conformance records for the same analytics pipeline symgraph’s export feeds, plus a fix for false missing-dependency reports in Rust when an item is already in scope or a library is renamed.

xpa, an XPath analyser I first wrote in Go in 2020, now has a Rust port with a hand-written XPath 3.1 parser. Before porting, I captured the Go version’s output for 130 expressions as golden files. The Rust version matches every one the Go parser accepted, and differential fuzzing found no disagreements across 25,000 generated expressions. The port also accepts valid XPath that the old ANTLR grammar rejected, and exits non-zero on failure. There’s no release yet.

gb-agent-skills, my Claude Code plugin marketplace, now groups the tools above into plugins by job: code-intelligence (symgraph), architecture (forge and tropism), api-contracts (brake), refactoring (colab) and docs-and-diagrams (adoc). Each plugin is synced from the tool’s own repository and pinned to its release-kit v2 release. Install with /plugin marketplace add grahambrooks/gb-agent-skills. The MCP servers in these plugins are started through bx.

accounting-pattern, a Java implementation of Martin Fowler’s accounting patterns from 2015 and still the most-starred repository I have, gained a TypeScript implementation alongside the Java one, moved to Java 26, and had its build fixed.

gitatlas, a desktop app that finds every git repository on your machine and shows their status on one dashboard, now runs remote git operations off the async runtime and caps credential retries, so a repository with bad credentials no longer stalls the app.

adoc, an AsciiDoc processor in Rust, had its release workflow fixed and now pins the schema dialect it emits.

Everything else in the window (ai-dev-container, astgen, bsv, cic, fingerprint-rs, genie, gitatlas-cli, refactor-dsl, rv, facts, mcp-dep) was dependency updates and the release pipeline. Nothing to read there unless you were waiting on a specific crate bump.