Your 5-hour usage window is anchored to your first message. A tiny scheduled primer opens it early — so your resets line up with your day.
Send one trivial prompt through the official claude CLI at chosen
anchor times on an always-on box. Each primer opens a fresh 5-hour window, so the day's
windows track your schedule instead of whenever your first prompt happened to land.
Three commands, start to finish:
Run on the always-on box that already has the official Claude Code CLI logged in
(the same VPS you develop with). If claude -p "hi" answers there, you're ready.
# copy the example, then edit config.json cp config.example.json config.json # set "timezone" (e.g. "Africa/Johannesburg"), # your "anchor" start (e.g. "05:00"), then "enabled": true
node bin/session-warmer.mjs check # claude installed + logged in? node bin/session-warmer.mjs schedule # 05:00 10:05 15:10 20:15
node bin/session-warmer.mjs install # prints a ready-to-paste cron block crontab -e # paste it, save — done
One small config.json. All clock math is timezone-aware via
Intl — set your IANA timezone and DST is handled automatically.
| Field | Meaning | Default |
|---|---|---|
enabled | Must be true to actually send (opt-in) | false |
dry_run | Log what would be sent, without sending | false |
timezone | IANA tz for all clock math — set this | UTC |
anchor | First primer of the day (HH:MM) | 05:00 |
day_end | Stop priming after this local time | 22:00 |
window_minutes | Claude window length | 300 |
buffer_minutes | Fire this long after a window closes | 5 |
prompt | The trivial primer text | ping… |
| Command | What it does |
|---|---|
check | Verify the CLI is installed and logged in on this box (run first) |
schedule | Print today's primer times (no side effects) |
warm | Fire one primer now (respects enabled + dry_run) — this is what cron runs |
install | Print cron / scheduled-task lines (--cron-only is pipeable) |
status | Show config + the next primer time |
Yes — when the primer goes through the official claude CLI, logged in
on your own box, on your own subscription. It only changes when the window opens;
it never exceeds the 5-hour or weekly cap.
✓ Permitted — a scheduled claude -p primer: the official
CLI is Anthropic's own product, built and documented for scripted, piped and scheduled use.
✗ Not this skill — and never:
Keep it single-user and low-volume (a few tiny prompts a day). Full reasoning & sources → references/tos.md.