Operations Runbook
Procedures for operating Lite Claw in production.Token Rotation
Google OAuth Client Secret
When rotating the OAuth client secret:Token Encryption Key
Incident Response
Suspected Token Compromise
If you suspect OAuth tokens have been compromised:Revoke in Google
Go to Google Account Security and revoke the app’s access.
Claim Code Abuse
If you see unauthorized claim attempts:Heartbeat Troubleshooting
Quick Checks
- Verify cron services are running and calling
pnpm heartbeat:run - Check user timezone in
user_profiles.timezone - Check schedule in
heartbeat_jobs.schedule_cron
Log Interpretation
| Log Entry | Meaning | Action |
|---|---|---|
sent | Heartbeat delivered | None (success) |
skippedNotDue | Not time yet | None (expected) |
skippedDuplicate | Already sent this slot | None (Redis dedup working) |
failed | Execution error | Investigate immediately |
Common Issues
Heartbeats not sending
Heartbeats not sending
- Check cron service is deployed and running
- Verify
HEARTBEAT_JOB_TYPEis set correctly - Check user has heartbeats enabled (
/heartbeats) - Verify timezone is set in user profile
Duplicate heartbeats
Duplicate heartbeats
- Check Redis connection (
UPSTASH_REDIS_REST_URL) - Verify slot key TTL is working
- Check for multiple cron service instances
Wrong time delivery
Wrong time delivery
- Check
user_profiles.timezonevalue - Verify server time vs user expectation
- Check cron expression in
heartbeat_jobs.schedule_cron
Monitoring
Key Metrics
| Metric | Alert Threshold | Notes |
|---|---|---|
claim_failed_invalid_code | > 5/hour | Possible brute force |
heartbeat.failed | > 0 | Investigate immediately |
| OAuth token refresh failures | > 0 | Token may be revoked |
| Worker restarts | > 3/hour | Crash loop |
Recommended Checks
Daily:- Scan error logs for exceptions
- Check heartbeat delivery counts
- Review OAuth token refresh success rate
- Check claim attempt patterns
- Verify cron job execution history