Your Claude subscription,
working all week,
on one cheap VPS.
powerqueue turns Linear tickets and GitHub Issues into autonomous Claude Code sessions and keeps them
running around the clock. It paces them so the whole weekly allowance goes to the work
that matters, with fable held for what is critical. Add a Codex or Google
subscription and it spreads the queue across all of them, each paced against its own
budget. It needs nothing but the subscriptions you already pay for and a small box that
stays on, or your laptop.
curl -fsSL https://raw.githubusercontent.com/aleandros/powerqueue/main/install.sh | sh
› why it's cheap
Most of a Claude subscription goes unused: the 5-hour windows reset while you sleep and the best model sits idle until something urgent lands. powerqueue spends that capacity for you and stops at the limit, so the bill is what you already pay. Already paying for Codex or Google AI Pro too? Those allowances join the same queue.
the subscription you have
Sessions run through your normal Claude Code login, so usage counts against Pro or Max, not an API account. No per-token bills, no keys to rotate.
# budget pacing, per tier, per week
fable held for critical work
opus high-priority tickets
sonnet everything else, all weekone small box
The daemon only runs git, tmux and Claude Code. A VPS with a couple of gigabytes of RAM runs several sessions side by side. Your laptop works just as well while it is open.
ssh box
claude # log in once
powerqueue init --permission-mode auto
powerqueue run # or a systemd unitnothing else
One static binary, SQLite, a TOML policy file. No orchestration platform, no cloud account, no agents-as-a-service. Use Linear, GitHub Issues, or both. powerqueue add also queues work by hand.
$ powerqueue budget show
period 43% used, day 3.1 of 7
window 12% of the 5h window
fable 8% of 25% share, 12 tasks ok› how it works
A queue of work. One small VPS. A fresh session for every task.
powerqueue add.powerqueue task complete; the branch is pushed, the worktree removed, the source issue updated.› what you get
One window per task
Each task gets its own git worktree and tmux window. powerqueue attach ENG-412 drops you into the live session.
Budget pacing
Per-tier shares across your weekly period and 5-hour window. Fable is held for critical work early and released as the week ages.
Crash recovery
Dead pane, stale session or rate limit: the daemon backs off and resumes the same Claude session, context intact.
Learns what tasks cost
Token usage from transcripts, CPU and memory from the process tree. Predictions improve with every completed ticket.
Priorities in Markdown
Plain bullet rules, per-ticket overrides, scoring, model mapping. Live reload. Optional Jev decision-model scoring.
Diagnoses itself
doctor checks tools, keys, state and the algorithm, and tells you which knob to turn. --fix repairs what is safe.
Three subscriptions, one queue
Claude Code, Codex CLI and Antigravity CLI, each with its own weekly budget and usage probe. critical: fable | gpt-6.1-sol names the fallback; when one provider is out, the queue moves to the next.
› get it running
one-liner
Detects OS + architecture, drops the binary in /usr/local/bin (or ~/.local/bin). Run it again to update.
curl -fsSL https://raw.githubusercontent.com/aleandros/powerqueue/main/install.sh | shcargo
Rust toolchain required. Builds the latest main.
cargo install --git https://github.com/aleandros/powerqueuepinned
Pin a release or pick the install directory with environment variables.
POWERQUEUE_VERSION=v0.9.0 \
POWERQUEUE_INSTALL_DIR=~/bin \
sh -c "$(curl -fsSL https://raw.githubusercontent.com/aleandros/powerqueue/main/install.sh)"GitHub Issues setup
Use the repository that matches your local checkout. Add the powerqueue label to issues you want the agent to pick up. Automatic closing defaults to off.
powerqueue init --no-linear
powerqueue secrets set github # prompts for your GitHub token
powerqueue config set github.repository '"owner/repo"'
powerqueue config set github.enabled true
powerqueue github test
powerqueue github sync # preview intake
powerqueue runAlready using Linear? Keep it enabled and add the GitHub settings. GitHub configuration and token permissions →
Linear setup and daily use
# Linear setup: key → keychain, team, states, permission mode, priority.toml
powerqueue init
# check tools, keys, state and the algorithm
powerqueue doctor
# start the scheduler (keep it in a tmux window or a service)
powerqueue run
# watch sessions, budget and the queue
powerqueue dashboard
# jump into a task's session, or queue something by hand
powerqueue attach ENG-412
powerqueue add "Rotate the staging certs" --criticality high
› rules and budget
priority.toml
Typed TOML classifies tasks in criticality order and adds matching score deltas. Model lists are preferences the budget may downgrade. Invalid edits keep the last valid policy. Markdown can record intent; only TOML executes.
version = 1
[[criticality]]
level = "critical"
all = [{ field = "label", op = "eq", value = "incident" }]
[[scoring]]
delta = 40
all = [{ field = "label", op = "eq", value = "customer" }]
[[overrides]]
key = "ENG-377"
skip = true
[models]
critical = ["fable"]
high = ["opus"]
normal = ["sonnet"]Existing rules: powerqueue priority migrate --from PRIORITY.md --to priority.toml, then update the configured policy path.
budget policy
Each tier gets a share of the period's weighted tokens and a minimum criticality. Early in the week only critical work touches Fable. Once a tier is under-paced it relaxes one level; in the end game it opens up so nothing is wasted. A rate_limit pauses every tier until the cooldown.
# config.toml
[budget]
period_hours = 168
window_hours = 5
period_weighted_tokens = 80_000_000
endgame_fraction = 0.8
[budget.models.fable]
share = 0.25
min_criticality = "critical"
relax_after_fraction = 0.5
[budget.models.opus]
share = 0.35
min_criticality = "high"
relax_after_fraction = 0.3Calibrate with what /usage shows: powerqueue budget set-reset "in 3d4h" and powerqueue budget set-observed 43%. doctor says when Fable is over- or under-reserved.
› why
Claude Code is great at a ticket, and you are already paying for far more tickets than you run. The chore is everything around them: the worktree, the window, noticing the session died, remembering which model you can still afford this week, cleaning up, moving the issue.
powerqueue does the chore on a box that never sleeps. You keep attach, answer, review, and come back to pushed branches.
needs_attention). For a VPS that nobody watches pick the auto permission mode in init (or bypassPermissions), or pre-approve commands in claude.allowed_tools; change it later with powerqueue config set claude.permission_mode auto. Linear and GitHub Issues are supported independently, including in the same queue. GitHub intake uses repository, label and assignee filters; issue closing is opt-in.
let the queue run.
Spend the subscription you already pay for. Come back to pushed branches, updated tickets and a dashboard that explains what happened.