App-karr
view release on metacpan or search on metacpan
docs/superpowers/specs/2026-03-19-v0004-release-design.md view on Meta::CPAN
```
**Command:** `karr log [--agent NAME] [--task ID] [--last N] [--json]`
Reads all `refs/karr/log/*` refs, merges entries, sorts by `ts`, applies filters. Default: last 20 entries.
### 9. Docker: Git identity fallback
**File:** `Dockerfile`
```dockerfile
ENV GIT_AUTHOR_NAME="karr"
ENV GIT_AUTHOR_EMAIL="karr@localhost"
ENV GIT_COMMITTER_NAME="karr"
ENV GIT_COMMITTER_EMAIL="karr@localhost"
```
Overridable via `-e` flags on `docker run`.
### 10. Fix: Changes file â remove "experimental"
Replace "experimental" with stable language. Git sync via refs/karr/* is a core feature.
## AI Agent Integration Scenarios
### Scenario 1: Claude Code Session â Solo Agent
One agent, one repo. The simplest case.
```bash
# Setup (once)
docker run --rm -v $(pwd):/work raudssus/karr init --name "my-project"
docker run --rm -v $(pwd):/work raudssus/karr skill install
# Agent session starts, skill is loaded automatically
# Agent checks what's available:
karr pick --claim $(karr agentname) --status todo --move in-progress --json
# Agent works on the task...
# Agent hands off:
karr handoff 5 --claim swift-fox --note "Implemented auth module, tests pass" -t
# Agent marks done:
karr move 5 done --claim swift-fox
```
**Integration hint:** Add a Claude Code hook that runs `karr context --write-to AGENTS.md` on session start, so the agent always sees the current board state.
### Scenario 2: Multiple Claude Code Instances â Parallel Agents
Three agents on the same repo, each in a separate terminal/worktree.
```bash
# Agent A picks first available task:
karr pick --claim agent-a --move in-progress --json
# â picks task 3 (highest priority unclaimed)
# Agent B picks next available (task 3 is now claimed):
karr pick --claim agent-b --move in-progress --json
# â picks task 7 (next highest, task 3 locked by agent-a)
# Agent C picks:
karr pick --claim agent-c --move in-progress --json
# â picks task 12
# Agent A finishes, hands off:
karr handoff 3 --claim agent-a --note "done" -t
# Sync pushes â agents B and C see updated board on next sync
# Agent B checks what's blocked:
karr list --status review --json
```
**Integration hint:** Use `karr pick --claim $NAME --tags backend` to let agents specialize by domain. Tag tasks with `backend`, `frontend`, `docs` etc.
### Scenario 3: Cross-Repo Agent Coordination
Human manages GitHub Issues. Bridge agent transfers selected issues to karr. Worker agents pick and execute.
```
GitHub Issues karr board Agent work
ââââââââââââââââ bridge ââââââââââââââââââââ pick ââââââââââââââââ
â Issue #42 â ââagentâââ â Task 1 (backlog) â âââââââ â Agent works â
â Issue #43 â ââagentâââ â Task 2 (backlog) â â on task 1 â
â Issue #44 â â Task 3 (todo) â â â
ââââââââââââââââ ââââââââââââââââââââ ââââââââââââââââ
```
```bash
# Bridge agent (runs periodically or via hook):
ISSUES=$(gh issue list --repo owner/repo --label agent-ready --json number,title)
# For each issue:
karr create "$TITLE" --priority high --body "See: owner/repo#42" --tags github
# Worker agent:
karr pick --claim worker-1 --move in-progress --json
# Agent reads task body, sees "See: owner/repo#42"
# Agent works on the issue, creates PR
# Agent hands off:
karr handoff 1 --claim worker-1 --note "PR #99 created" -t
```
**Integration hint:** The bridge is NOT part of karr â it's a simple script or Claude Code hook. karr stays source-agnostic. The task body carries the link back to the original issue.
### Scenario 4: Continuous Agent Loop with Docker
A persistent agent container that polls for work, executes, and reports.
```bash
#!/bin/bash
# agent-loop.sh â runs inside Docker or as a cron job
NAME="docker-agent-$(hostname)"
while true; do
# Sync first
karr sync --pull
# Try to pick a task
TASK=$(karr pick --claim "$NAME" --status todo --move in-progress --json 2>/dev/null)
if [ -z "$TASK" ]; then
sleep 30
continue
fi
TASK_ID=$(echo "$TASK" | jq -r '.id')
TASK_TITLE=$(echo "$TASK" | jq -r '.title')
echo "Working on task $TASK_ID: $TASK_TITLE"
( run in 0.485 second using v1.01-cache-2.11-cpan-2398b32b56e )