directory tag manager · written in crystal

Put your directories on the cutting board.

Tag the folders you actually live in — then jump, list, and run across the whole pile at once.

Read the docs brew install hahwul/doma/doma

one static binary · zero runtime deps · MIT

why a cutting board

I kept losing track of where things lived — twelve Crystal repos in one folder, seven shell experiments in another, the security write-ups elsewhere. cd's history wasn't enough; fuzzy finders forgot what mattered the moment I cleared the terminal. So I wrote a cutting board: pin the directories I care about, label them with whatever tags make sense (crystal, work/proj-a, reading-this-week), and let the tool do the recall.

On the board

three moves · one workflow
  1. Tag

    Label the directories you actually live in — by language, client, or this week's spike. Tags can be permanent, or expire on a TTL.

    $ doma add ~/Projects/doma -t crystal -t cli
  2. Jump

    One tag, one keystroke. A built-in TUI picker opens when more than one directory matches, and the shell wrapper makes it actually cd.

    $ doma cd crystal
  3. Fan out

    List paths by tag and pipe them into anything — build, grep, sync — across the whole pile at once.

    $ doma list -t crystal --paths | xargs -I{} sh -c 'cd {} && shards build'
a quick taste
single static binary built-in TUI picker TTL tags & marks shell wrapper AI skill for coding agents
도마 /do·ma/ — noun · Korean

the cutting board — the workbench where ingredients get gathered, grouped, and chopped before going into the pan. the metaphor stuck.