Show HN: I replaced Beads with a faster, simpler Markdown-based task tracker (github.com)

84 points by wild_egg ↗ HN
I've been running long duration coding agents with Claude Code for about 6 months now. Steve Yegge released Beads back in October and I found that giving Claude tools for proper task tracking was a massive unlock. But Beads grew massively in a short time and every release made it slower and more frustrating to use. I started battling it several times a week as its background daemon took to syncing the wrong things at the wrong times.

Over the holidays I finally ripped it out and wrote ticket as a replacement. It keeps the core concept I actually cared about (graph-based task dependencies) but drops everything else.

ticket a single file bash script built on coreutils managing flat files. You don't need to index everything with SQLite when you have awk. It's just a small plumbing utility that gets out of your way so you can get to work.

Would love feedback on gaps. I built this for my own agent workflows so there are probably use cases I haven't thought about.

28 comments

[ 5.6 ms ] story [ 54.1 ms ] thread
(comment deleted)
I started playing around with beads, but when I got to the phrase "landing the plane" I started looking for simpler alternatives. So far, this looks much closer to what I want (flat files, human readable, basic syntax). Looking forward to putting it through its paces over the next few weeks.
For solo projects I just use `git notes`. It's all in the same place, you can push them, and Claude Code just needs to be told that they exist. It knows how to use them and it's totally fine. They don't have merge logic, though, so don't use them in collaborative projects.
Looks great, well done.

What I do not understand about beads or alternatives such as this is: why not just use github issues? Or is it just the aversion of being tied to github?

My agent team does, easy to tell them so and give them access to suitable gh commands.

This is my question, and why not go a step further and just self host foregjo?

Forgejo is a single go binary and very fast.

You can script it using an API, you have full access to the database which can be sqlite3 or postgres.

Then you get all the benefits of an integrated issue tracker which has a great GUI for humans to review.

I really don't understand the raison-de-etre for beads other than yak shaving, and would really like to.

Oh my lord it's written in bash. That's incredible. Well done! It's good to feel like the new kid sometimes as I approach 30 and ossify technically -- I'm sure this will develop a healthy fanbase of senior engineers, if the one's I've known are anything to go off of.

More relevantly: I've spent way too long rolling my own issue tracking systems (plural!) over the years, and it's good to see someone else share my intuition that dependencies and tagging are by far the most important part of solo-ish issue trackers. You'd be shocked how many massive tech companies publish issue trackers where dependencies are an afterthought (or worse: a paid upgrade).

My only tiny, soft suggestion would be mention "Unix Philosophy" rather than just the MVP link, tho it is indeed cute. As I alluded to above, the former has a dedicated cult behind it already ;)

I feel like using Bash is a double-edged sword. Yes, it's available on every modern unix-like (notably absent from the base system in the *BSDs), but the language (being an sh descendant) is honestly horrible for anything more complex than 200-300 lines of plugging one command into another. Ticket isn't even pure Bash; it embeds several inline, 100+-line AWK scripts, and a giant jq query (an external tool!). All of which is horrible for syntax highlighting, mind you.

These days Python is almost as universally available, and I've seen few systems ship without Perl. Both provide excellent backward compatibility; I have many scripts that still run unchanged on Python 3.6 (2016).

I just asked Claude to create a memory system for itself for one of my projects. It created a file based utility written in Rust on its own. I offered it to use beads but it declined as beads is a task tracker and what we needed was a spec tracker.

Long winded way to say that it’s now easier to just create something to fit your needs… like 3D printing components.

Claude Code already has a built-in task tracker for short/mid term tracking.

Digging the idea and incredibly simple implementation - but do you have a model in mind for clean-up? I've been working with it for an hour and have ~30+ tickets across a series of tasks, which are all just named by ID so no obvious way to purge (I could be missing something obvious).

Also, no concept of tags/labels? Are dependencies your primary means of organization?

Is there a mini tutorial demonstrating best practices for people keen to try but who haven't used agents like this?
I've actually built up a set of Claude Skills for creating and using tickets. Currently overhauling them based on what I've found to be most effective. Will probably publish those in a week or two when I've nailed down what I want there.

I haven't seen any great content around this though. I've gone through a lot of trial and error with different approaches over the last few months.

Biggest thing I can say: plan up front. I frontload basically all of my involvement and have Claude do a ton of research to make a very detailed plan document and then the plan gets decomposed into a graph of tickets. I have some other tooling that orchestrates delegating the tickets to focused Claude Code sessions and they can work through them mostly autonomously for many hours until the work is done.

I have been looking at this problem space, including beads recently.

I wasn't able to find something AI-native that supported subissues, and worked across projects. I require git worktrees on my programming work now, and I want it to be able to handle integration with systems like Linear or even GH issues (which was my preferred ticketing system before CLIs emerged)

The idea is in part, ~I have 15 minutes right now, what is the most important thing to put attention to? Be routed to the project and go immediately to work with a CLI.

I'm using Claude Code and codex for programming and administrative chores now. For example, managing the process of finding and selecting an arborist.

My main personal project, focuses on making Claude Code and Codex conversations useful (https://Contextify.sh). I use uses pure markdown (TODOS.md) for issue management and it is at its limit.

I'm less concerned about the DB's storage location. I don't think it needs to be stored with each project, but each project does need to be able to access it.

I suspect that I'll ultimately want to host it.

I'm curious, and in the spirit of a true MVP - does this need type, assignee, links or the parent relationship? Do you see the agent using them in practice? It seems like a minimal implementation could do without all of those, and I wonder if they're useful to the agent, or are just documentation for humans.

Since these seem more lightweight/ephemeral, it seems like it would be useful to search upwards for the nearest enclosing .tickets directory, so that subsystems could have separate issues.

Great call out. The agents will set those on `create` calls but don't typically reference them afterwards.

I have a fairly robust orchestration layer built on top of this tool that relies heavily on those fields though. But without that, they are a bit noisy.

Mixed feelings on upward search. One of my pain points with beads was that agents would sometimes create a bead outside of the correct directory and get dumped into a global `~/.beads/default.db` and make a mess. They've done that a couple times with ticket but run `tk ready` afterwards, see the new ticket is the only one, realize their mistake, and then relocate the ticket into the correct location. Still thinking on that one.

Vaguely related question, for people who run multiple agents in parallel: how do you do that? do they all work on the same files at the same time? won't that create a terrible mess? or do you like check out the codebase 8 times into separate directories and do a complicated PR flow type thing?
Git worktrees for parallel repo clones on different branches, a worktree setup script that runs when a worktree is created (npm install etc) and vibe-kanban [0] to visually create, monitor and approve parallel work

0 https://www.vibekanban.com/

I would love to have a nix flake to install it easily with nix! Given it's built in bash that should be basically no issue whatsoever.

Thanks a lot for this! I was interested in beads but found the author's approach to software development quite erratic and honestly a bit unprofessional. Yes, LLMs are great, but no they shouldn't be the lead developer.

Beads is an incredibly difficult-to-follow mess for something that is at its core a pretty simple idea. You distilled it to its core, I will absolutely be checking this out :)

There's also Beans, doing MD-based ticketing in your project. It's really good. (Disclaimer: I've contributed a few of the agent rules.)

https://github.com/hmans/beans

> Beans is an issue tracker for you, your team, and your coding agents. Instead of tracking tasks in a separate application, Beans stores them right alongside your code. You can use the beans CLI to interact with your tasks, but more importantly, so can your favorite coding agent! > > This gives your robot friends a juicy upgrade: now they get a complete view of your project, make suggestions for what to work on next, track their progress, create bug issues for problems they find, and more.

Much, MUCH less invasive than beads (basically just a CLI tool and a `.beans.yml` & `.beans/` in your project, and a joy to work with. CLI, TUI, labels, status, types (epic, feature, task etc.), GraphQL query interface (agents love that).

It's good.

Wouldn’t it make perfect sense to wrap this in a Claude Skill instead of distributing as a separate package?
Anyone thinking of adding a feature or separate tool for exporting existing gitlab/github issues to this Ticket or Beads? Looks like in the Agentic Era having issues/tickets managed using this kind of tools and kept in folders side by side with code and documents is much more desirable than separating them to web based git servers
why do all these projects assume i want to store this stuff in my current repo?
I just added a cli Interface to my existing tool kanban-tui.

Now I can let the agent create tasks and work on them via cli and I can monitor or add new tasks on the fly on the TauI without needing to interrupt the agent. Using sqlite backend, if you use it as a local skill, it doesnt create files in your repo

„uvx kanban-tui skill init“ to get the skill and get started.