App-karr

 view release on metacpan or  search on metacpan

bin/karr  view on Meta::CPAN

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 F</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 C<raudssus/karr:user> instead. That
image defaults to uid and gid C<1000:1000> and is intended as the predictable
base for downstream custom images. Custom fixed-user derivatives can override
C<KARR_UID> and C<KARR_GID> at build time.

=head1 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:

docker/karr-entrypoint.sh  view on Meta::CPAN

#!/bin/sh
set -eu

target_uid="${KARR_UID:-}"
target_gid="${KARR_GID:-}"

if [ -z "$target_uid" ] || [ -z "$target_gid" ]; then
    if [ -d /work ]; then
        work_uid="$(stat -c '%u' /work)"
        work_gid="$(stat -c '%g' /work)"
    else
        work_uid=1000
        work_gid=1000
    fi

    : "${target_uid:=$work_uid}"
    : "${target_gid:=$work_gid}"
fi

: "${target_uid:=1000}"
: "${target_gid:=1000}"

mkdir -p /home/karr

if [ "$target_uid" = "0" ] && [ "$target_gid" = "0" ]; then
    export HOME=/root
    exec karr "$@"
fi

chown "$target_uid:$target_gid" /home/karr
export HOME=/home/karr

exec gosu "$target_uid:$target_gid" karr "$@"

lib/App/karr.pm  view on Meta::CPAN

=back

=head1 DOCKER RUNTIME

Perl installation remains the normal development path, but Docker is a
first-class runtime option for vendoring C<karr> into other repositories or
tooling environments.

The default C<raudssus/karr:latest> image starts as root only long enough to
inspect the mounted F</work> directory and then drops to the matching numeric
uid and gid before running C<karr>. This prevents root-owned project files when
the image is used through a shell alias. The companion C<raudssus/karr:user>
image is the fixed-user variant for environments that prefer a predictable
non-root runtime without that auto-adjustment.

See L<karr> and F<README.md> for the shell alias form and operator-focused
examples.

=head1 PROGRAMMATIC USAGE

Although the distribution is centered on the CLI, the lower-level modules are



( run in 0.900 second using v1.01-cache-2.11-cpan-5735350b133 )