Align your Claude window
to your working hours.

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.

official Claude CLI timezone-aware zero dependencies never bypasses limits

How it works

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:

Demo: check, schedule, warm

Setup — 1, 2, 3

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.

1 Set your timezone & start time

# 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

2 Check the box & preview the plan

node bin/session-warmer.mjs check     # claude installed + logged in?
node bin/session-warmer.mjs schedule  # 05:00  10:05  15:10  20:15

3 Schedule it

node bin/session-warmer.mjs install   # prints a ready-to-paste cron block
crontab -e                            # paste it, save — done

Configuration

One small config.json. All clock math is timezone-aware via Intl — set your IANA timezone and DST is handled automatically.

FieldMeaningDefault
enabledMust be true to actually send (opt-in)false
dry_runLog what would be sent, without sendingfalse
timezoneIANA tz for all clock math — set thisUTC
anchorFirst primer of the day (HH:MM)05:00
day_endStop priming after this local time22:00
window_minutesClaude window length300
buffer_minutesFire this long after a window closes5
promptThe trivial primer textping…

Commands

CommandWhat it does
checkVerify the CLI is installed and logged in on this box (run first)
schedulePrint today's primer times (no side effects)
warmFire one primer now (respects enabled + dry_run) — this is what cron runs
installPrint cron / scheduled-task lines (--cron-only is pipeable)
statusShow config + the next primer time

Is this allowed?

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:

  • extracting or copying OAuth tokens between machines
  • spoofing or impersonating the Claude Code client
  • routing the primer through the Agent SDK with subscription auth, or any third-party harness

Keep it single-user and low-volume (a few tiny prompts a day). Full reasoning & sources → references/tos.md.