Repository navigation
powerqueue v0.10.0
Sessions can run inside containers (or anywhere the daemon's powerqueue
binary cannot run); see docs/containers.md.
Added
claude.binary,codex.binaryandgemini.binaryare command templates:
a command line split like a shell would, with per-task placeholders
({key},{slug},{task_id},{session_id},{worktree},
{task_dir},{repo},{attempt},{model}), e.g.docker exec -it --env-file {task_dir}/env -w {worktree} pq-{slug} claude. A plain
program still works as before.config validatereports unbalanced
quotes and unknown placeholders;doctor,service statusand the
usage probes use the template's program, and skip the login check with a
note when the command is per-task.<provider>.shim = true: the launcher writes a POSIX shell shim to
<task dir>/bin/powerqueueand points the hooks, Claude Code's status
line, Codex'snotifyand the prompt's completion protocol at it. The
shim writes one file per call into<task dir>/inbox/; the daemon drains
it every tick (newinboxphase before the hooks) and applies the
messages aspowerqueue hook/task complete/task blockwould
(eventsinbox.complete,inbox.block,inbox.error,inbox.rejected;
doctorreports parked unreadable messages). Claude sessions get
Bash(<shim> task *)in--allowedTools; prompt templates can use
{{powerqueue}}.POWERQUEUE_BINin the session environment names thepowerqueue
command the session should run (the host binary, or the shim) unless the
provider'senvsets it.repo.setupgetsPOWERQUEUE_TASK_SLUG,POWERQUEUE_TASK_DIR,
POWERQUEUE_DATA_DIRandPOWERQUEUE_STATE_DIR;cleanup.rungets
POWERQUEUE_TASK_SLUG.claude.env.CLAUDE_CONFIG_DIRis also where the daemon reads transcripts
and seeds workspace trust (likecodex.env.CODEX_HOMEfor rollouts), so a
config directory mounted into a container at the same path works on both
sides.- docs/containers.md, docs/examples/Dockerfile.agent (Claude Code + Codex
on Node 22) and docs/examples/agent-container.sh (up/down/exec
for a per-task container); end-to-end tests of the shim on the host and,
withPOWERQUEUE_E2E_DOCKER=1, of Claude and Codex sessions through
docker exec.
Fixed
- A task completed by
powerqueue task completewhose session exited
between the hook and probe phases of one tick was released without
cleanup (no push, nocleanup.run, no source-issue update): the probe
marked the session exited andfinalize_terminalnever saw it. The
session is now left live forfinalize_terminal(event
session.pane_gone).