NAME
karr - Kanban Assignment & Responsibility Registry
VERSION
version 0.102
SYNOPSIS
karr init --name "My Project"
karr create "Fix login bug" --priority high
karr move 1 in-progress --claim swift-fox
karr board
karr backup > karr-backup.yml
DESCRIPTION
karr is the primary command line interface for App::karr. It manages a Git-native kanban board whose canonical state lives in refs/karr/*, plus optional helper payloads in non-protected refs outside that namespace.
Run it from inside a Git repository. Commands discover the repository root, pull the current board refs, materialize a temporary board view for the command run, and then write changes back to Git refs. In normal use this means you can interact with shared task state without checking a persistent karr/ directory into the work tree.
The script is the best starting point when you want to understand the CLI as a user. For architecture notes, Docker background, and Perl-facing examples, see App::karr.
CLI WORKFLOW
A typical session looks like this:
Create the board once with App::karr::Cmd::Init.
Add and inspect tasks with App::karr::Cmd::Create, App::karr::Cmd::List, App::karr::Cmd::Show, and App::karr::Cmd::Board.
Progress work with App::karr::Cmd::Move, App::karr::Cmd::Edit, App::karr::Cmd::Pick, and App::karr::Cmd::Handoff.
Export, restore, or remove board state with App::karr::Cmd::Backup, App::karr::Cmd::Restore, and App::karr::Cmd::Destroy.
COMMANDS
Board Setup And Configuration
-
Creates the initial board in
refs/karr/*and can install the bundled project skill for Claude Code. -
Shows or updates writable board settings such as the board name, defaults, and claim timeout.
-
Generates a compact board summary for embedding into files such as AGENTS.md.
-
Installs, checks, updates, or prints the bundled skill file for Claude Code, Codex, and Cursor.
Task Lifecycle
-
Creates a new task card.
-
Lists tasks with filters for status, priority, tags, claims, and text search.
-
Shows the full task document for one task id.
-
Updates task metadata, body text, claims, and blocked state.
-
Moves tasks between statuses, including relative moves with
--nextand--prev. -
Deletes task refs permanently.
-
Soft-deletes tasks by moving them to the archived status.
Board Flow And Coordination
-
Shows the grouped board view.
-
Finds the next suitable task and claims it for an agent.
-
Moves work into review and optionally appends a timestamped note.
-
Prints activity log entries from
refs/karr/log/*. -
Generates short random agent names for multi-agent workflows.
-
Explicitly pulls or pushes
refs/karr/*when you want to inspect or control sync separately.
Snapshot And Recovery
-
Exports the entire
refs/karr/*namespace as YAML. -
Replaces the current board refs from a YAML snapshot. This is intentionally destructive and requires explicit confirmation flags.
-
Deletes the whole board namespace from the repository.
Helper Refs
-
Stores arbitrary helper payloads in allowed refs outside protected namespaces.
-
Fetches one helper ref and prints only its payload to standard output.
DOCKER USAGE
The CLI works well through the published Docker image. A common alias is:
alias karr='docker run --rm -it -w /work -e HOME=/home/karr \
-v "$(pwd):/work" \
-v "$HOME/.gitconfig:/home/karr/.gitconfig:ro" \
-v "$HOME/.claude:/home/karr/.claude" \
-v "$HOME/.codex:/home/karr/.codex" \
raudssus/karr:latest'
That keeps the current repository mounted at /work and lets the default image adapt its runtime uid and gid to the owner of the mounted workspace. The CLI syntax stays the same after that:
karr board
karr skill install --agent codex --global --force
If you prefer a fixed non-root runtime, use raudssus/karr:user instead. That image defaults to uid and gid 1000:1000 and is intended as the predictable base for downstream custom images. Custom fixed-user derivatives can override KARR_UID and KARR_GID at build time.
EXAMPLES
Initialize a new board and install the project-local Claude Code skill:
karr init --name "HandyIntelligence Prototype" --claude-skill
Claim and start the next task for a generated agent:
NAME=$(karr agentname)
karr pick --claim "$NAME" --move in-progress
Export the board before trying a destructive restore:
karr backup > karr-backup.yml
karr restore --yes < karr-backup.yml
SEE ALSO
App::karr, App::karr::Task, App::karr::BoardStore, App::karr::Git, App::karr::Cmd::Init, App::karr::Cmd::Skill, App::karr::Cmd::Backup, App::karr::Cmd::Restore
SUPPORT
Issues
Please report bugs and feature requests on GitHub at https://github.com/Getty/p5-app-karr/issues.
IRC
Join #ai on irc.perl.org or message Getty directly.
CONTRIBUTING
Contributions are welcome! Please fork the repository and submit a pull request.
AUTHOR
Torsten Raudssus <torsten@raudssus.de>
COPYRIGHT AND LICENSE
This software is copyright (c) 2026 by Torsten Raudssus <torsten@raudssus.de> https://raudssus.de/.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.