Beagle SCM
July 22, 2026 ยท View on GitHub
Beagle is a 100% git-compatible source code management system for the LLM era. Beagle uses git's storage model and sync protocol as-is. It reworks everything else for the world where effort is cheap and attention is precious. Beagle lets you run many sessions in parallel, track hundreds of worktrees and tickets.
Beagle accepts the fact that LLMs are not compilers and focuses on taming their non-determinism in two ways:
- everything repeatable must be automated,
- building a selection funnel for the LLM-authored code.
The next-level abstraction is not a worktree, nor a set of branches, but a wave of evolution. Let them evolve and speciate, then select, mix, repeat.
Beagle use
Beagle's basic verb vocabulary is HTTP-like and all addressing is URI-based.
- get is clone/pull/checkout;
- post is commit/fast-forward/push;
- patch is merge/rebase/cherry-pick;
- put is stage (also set ref);
- delete is stage deletion (also drop ref);
Most of the time you would probably use the TUI.
Start with be status or be work for an overview.
All Beagle commands start the pager/TUI by default.
: is the command mode (e.g. :status<Enter>).
q or :quit<Enter> is quit.
Beagle features
- This implementation is TUI-centric, any command opens a pager.
- The TUI is browser-like, all things that can be clickable are clickable.
- Both external (e.g. GitHub) and internal (e.g. worktrees) addressing is URI-based.
- Beagle expects lots of worktrees and many agentic sessions to run in parallel.
- Worktrees in turn get organized into a tree-of-life through upstream-fork links. That is essential to keep track of them and propagate the changes.
Build and Installation
The only dependency is JAB the anti-bloat JavaScript runtime. JAB packs a lot of revision-control-specific bindings and APIs.
- Build JAB (cmake) or download it from GitHub, install it in your
$PATH. - You may also want to install a symlink, like
be -> jabto use thebecommand. - Clone the Beagle repo itself.
- JAB picks the sources from
jsrc/dirs in$PWDand up the parent chain (notnode_modules). See thejsrcself-link in this repo; it lets Beagle revision-control itself. cd beagle-extbe status- You may submodule beagle-ext into your project as
jsrc/or make$HOME/jsrcsymlink.
Customization and Speciation
Any user-facing behavior is implemented in JavaScript and customizable.
Users are expected to develop their custom verb/view sets.
Any established workflow should be taken from the LLM's probabilistic hands and automated.
Just put your jsrc/ on a different level than Beagle's if you want to build on top of it.
Creating your own set of commands from scratch is also OK, it just takes longer.
All the revision-control heavy-lifting, source code tokenization and suchlike is all done by libdog through JAB bindings.
Contribution
Beagle is very experimental. All contributions and (especially) feedback are appreciated.
We no longer coded, Mr. Smith. We are grown. Like them.
Fate, it seems, is not without a sense of irony.