Keep your Claude Code token window alive with periodic pulses
한국어 | English
curl -fsSL https://raw.githubusercontent.com/renechoi/ccpulse/main/install.sh | bashiwr -useb https://raw.githubusercontent.com/renechoi/ccpulse/main/install.ps1 | iexgit clone https://github.com/renechoi/ccpulse.git
cd ccpulse
npm install
npm startClaude Code uses a 5‑hour token window that starts from your first usage:
- First use at 3 PM → Window ends at 8 PM (5 hours)
- First use at 6 AM → Window ends at 11 AM (5 hours)
The Solution: Automatically send a minimal "Hello" pulse at your preferred time (e.g., 6:00 AM) so your 5‑hour window starts when you want (e.g., aligned with working hours).
- 🕐 Schedule Management: Auto-run at your preferred time
- 🎨 GUI Interface: Easy configuration with visual interface
- 🌐 Multi-language: English/Korean support with easy switching
- 📊 Real-time Logs: Monitor execution status
- 🔄 Mock/Real Modes: Test safely before actual execution
- 🖥️ System Tray: Runs quietly in background
- ⚡ Multiple Schedules: Set multiple trigger times
- 🔔 Notifications: Get alerts on successful resets
- Pulse Time: 6:00 AM (example)
- Message: "Hello" (customizable)
- Mode: Start with Mock mode → Switch to Real mode
- Language: Click the language button to switch
# From project directory
npm install
npm start
# (Optional) Double-click desktop shortcut if you created one- macOS:
~/Library/Application Support/ccpulse/ - Linux:
~/.config/ccpulse/ - Windows:
%APPDATA%/ccpulse/
# macOS
launchctl load ~/Library/LaunchAgents/com.claude.ccpulse.plist
# Linux
systemctl --user enable ccpulse.service
# Windows
# Automatically added to startup programsexport CCPULSE_MOCK_MODE=false # Force Real mode
export CCPULSE_AUTO_START=true # Enable auto-start
export CCPULSE_LANGUAGE=en # Set default language (en/ko)Global CLI is not bundled yet. Use the UI or edit schedules in the app.
- Node.js 16.0.0 or higher
- Claude Code installed and configured
- macOS: Terminal automation permission required
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
# Clone and install
git clone https://github.com/renechoi/ccpulse.git
cd ccpulse
npm install
# Run in development mode
npm run dev
# Run tests
npm test
# Build for production
npm run buildMIT License © 2025 renechoi
# Allow Terminal automation access
System Preferences > Privacy & Security > Automation > Terminal ✓# macOS
brew install node
# Ubuntu/Debian
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt-get install -y nodejs
# Windows
# Download from https://nodejs.org# Real-time log monitoring
tail -f ~/.config/ccpulse/logs.txt
# Check last 50 lines
tail -n 50 ~/.config/ccpulse/logs.txtApp doesn't start on macOS
If you see "App can't be opened because it is from an unidentified developer":
xattr -cr /Applications/CCPulse.appSchedule not triggering
- Check if the app is running in system tray
- Verify schedule time in settings
- Ensure Mock mode is disabled for actual execution
- Check logs for any error messages
graph LR
A[User Sets Schedule] --> B[App Waits]
B --> C{Scheduled Time?}
C -->|Yes| D[Execute Claude CLI]
D --> E[Send Pulse Message]
E --> F[Token Window Activated]
F --> G[Log Success]
C -->|No| B
- After sending the message to Claude, CCPulse waits 10 seconds before sending exit.
- Rationale: Claude TUI may need a few seconds to register the first turn; this buffer prevents the session from closing too early.
Made with ❤️ for the Claude community
⭐ Star us on GitHub!


