claude-warmup

Keep a Claude 5-hour window always running, so you never wait the full 5 hours

Claude Pro and Max limits reset 5 hours after the first message of a window. Usually that first message is yours, so a full 5-hour clock starts the moment you sit down. claude-warmup starts a new window the moment the last one ends, so the clock is always already running. Whenever you start, the next reset is less than 5 hours away. It also shows your session and weekly usage.

$ claude-warmup
Claude Warmup v0.3.0

Usage  checked 08:42 · claude /usage
  Current session (5h)  █████░░░░░░░░░░░░░░░  23%  resets 11:00 (in 2h 17m)
  Weekly · all models   ████████░░░░░░░░░░░░  41%  resets Tue 10:00

Auto warm-up
  Status      ● on (launchd, checks every 5 min)
  Last ping   06:00 ✓ haiku · window until 11:00
  Next ping   ~11:00, right after the current window resets

Why keep the Claude 5-hour window running?

Claude's session limit is counted in 5-hour windows that begin with the first message after the last window ended. If nothing is running, your own first message starts a fresh 5-hour clock: start at 9:00, hit the limit at noon, and you wait until 14:00. If a window is already running when you arrive, part of those 5 hours has already passed.

Your limits do not grow. You just stop starting from a full 5-hour wait, whenever you sit down.

What makes it different

You can warm up the window with a fixed cron job or a hosted CI runner too. claude-warmup is built to need less trust and less guessing.

claude-warmupFixed-time cron or CI job
Where it runsYour own computer or serverOften a hosted runner, with your Claude token copied into its secrets
Your credentialsNever read or copied. The official claude CLI keeps them.Token has to be exported and stored elsewhere
When it pingsOnly when no window is open, checked every 5 minutesAt fixed times, even if a window is already running
Cost of a check0 tokens (local /usage)Each run is a real message
Usage viewSession, weekly and per-model usage with reset timesNone
SetupTwo commands on macOS, Linux or WindowsFork, tokens, secrets and a cron expression

How it works

  1. The OS scheduler (launchd, systemd or cron, Task Scheduler) runs a check every 5 minutes.
  2. If the current window is still running, the check does nothing. No Claude call at all.
  3. Otherwise it reads usage with Claude Code's local /usage command: 0 tokens, $0.
  4. Only when no window is active does it send hi to haiku through the official claude CLI, with tools, MCP and hooks turned off.
  5. It records when the new window ends and sleeps until then. "Every 5 hours" follows the real window, not a clock.

Never reads credentials

Sign-in stays with the official Claude Code CLI. API-key variables are stripped, so nothing is billed to an API key.

Zero dependencies

Plain Node.js 18+, small enough to read in one sitting. MIT licensed.

Working hours

Limit pings to 06:00-23:00, weekdays, or any days you choose.

Peak time

Set your busiest time, e.g. 14:00 or 11:30 weekdays, and windows line up so one resets right then.

Install

You need Node.js 18+ and the Claude Code CLI, logged in with a Pro or Max subscription.

npm install -g github:jungtaejoon/claude-warmup
claude-warmup install

Choose the hours to keep windows running, for example from early morning to late night:

claude-warmup config hours 06:00-23:00

Run it on a free server

Computer not on all day? Put it on any always-on Linux machine: a free cloud VM such as Oracle Cloud Always Free, a cheap VPS or a Raspberry Pi. The window belongs to your account, so any machine can send the ping.

curl -fsSLO https://raw.githubusercontent.com/jungtaejoon/claude-warmup/main/scripts/server-setup.sh && bash server-setup.sh --timezone America/New_York

It installs Node.js, Claude Code and claude-warmup into ~/.local, walks you through a browserless login and turns on a systemd timer. Server guide

FAQ

When does the Claude 5-hour usage limit reset?

5 hours after the first message of a window. If that first message is yours at 9:00, the reset is at 14:00. With claude-warmup a window is already running when you start, so the reset comes sooner. More in the Claude usage limit reset guide.

Can I make the reset land at my busiest time?

Yes. claude-warmup config peak 11:30 weekdays lines the windows up so one resets right at 11:30. A day is 24 hours and windows are 5, so 4 hours a day are left with no window: choose where with config gap 03:00 (here 02:30–06:30). Windows then run 06:30–11:30–16:30–21:30–02:30. A window you start yourself at another time can't be moved; things line up again after it ends.

Does this give me more Claude usage?

No. Same limits. You just rarely wait the full 5 hours.

How much usage does the warm-up cost?

Almost none. Checks use the local /usage command (0 tokens). The ping is one short haiku message per window.

Can I run it while my computer is off?

Yes, on a server. See Run it on a free server.

Does it read my Claude password or token?

No. The official claude CLI handles all sign-in.

Is this allowed?

It is a tiny request made with your own account through the official Claude Code CLI. Read Anthropic's terms and decide for yourself.