Overview
Unlike traditional AI assistants that wait for you to prompt them, NanoClaw Pro checks in on you at scheduled times throughout the day. This proactive behavior helps you stay organized, surface unresolved tasks, and build better habits.How It Works
Proactive check-ins are implemented using NanoClaw’s built-in task scheduler (src/task-scheduler.ts:242). Each check-in is a scheduled task that runs as a full agent with access to all tools and memory.
Check-ins run in your main channel’s context, giving them access to your memory system and the ability to send messages directly to you.
Morning Check-in (9am)
Every morning at 9am, NanoClaw Pro sends you three questions:Implementation Details
The morning check-in is a cron task created using themcp__nanoclaw__schedule_task tool:
- Reads your profile from
~/memory/context/profile.md - Searches memory using qmd to find what you’re currently working on
- Personalizes the message based on your specific projects and context
Dynamic Reminder Detection
After you respond, the morning check-in automatically scans for time-sensitive mentions:Birthday Reminders
“my friend’s birthday is monday” → creates a reminder for Sunday
Deadline Tracking
“i have a deadline friday” → creates a check-in for Thursday
Follow-ups
“remind me to follow up with X” → schedules a follow-up task
Events
“meeting at 3pm” → creates a reminder 30 minutes before
Dynamic reminders are created automatically using
mcp__nanoclaw__schedule_task — you don’t need to explicitly ask for a reminder.Afternoon Wrap-up (4pm)
At 4pm daily, NanoClaw Pro surfaces anything that needs follow-up:What Happens During Wrap-up
- Reviews today’s conversations to find unresolved items
- Creates scheduled tasks for tomorrow based on your responses
- Offers to draft emails/messages — you just describe them out loud
- Updates memory by appending to
~/memory/notes/daily-log.md - Embeds new memory by running
qmd update && qmd embed
Configuration
Customizing Check-in Times
Check-in times are configured when you run/proactive-agent. The skill asks for your timezone and creates cron tasks accordingly.
To change check-in times after setup:
Customizing Message Style
The default style is casual and lowercase. You can customize this by updating your group’sCLAUDE.md:
Disabling Check-ins
To pause check-ins temporarily:Technical Implementation
Task Execution Flow
When a check-in task becomes due:- Scheduler loop (
src/task-scheduler.ts:250) polls every 60 seconds for due tasks - Task is enqueued in the group’s message queue (
src/task-scheduler.ts:265) - Container spawns with the task prompt as input (
src/container-runner.ts:258) - Agent executes with access to:
- Memory system (qmd)
- File operations (Read/Write/Edit)
- Message sending (
mcp__nanoclaw__send_message) - Task creation (
mcp__nanoclaw__schedule_task)
- Result is sent to your channel via
sendMessage(src/task-scheduler.ts:189) - Next run scheduled using
computeNextRun()(src/task-scheduler.ts:31)
Preventing Drift
Interval-based tasks anchor to the scheduled time, not execution time, to prevent cumulative drift:Best Practices
Respond Thoughtfully
Check-ins build your memory over time. Detailed responses help the agent learn your patterns and preferences.
Use Natural Language
Mention time-sensitive things casually — “my meeting is thursday” works better than structured data.
Review Task List Weekly
Check
@Andy list all tasks weekly to remove outdated reminders.Update Your Profile
Keep
~/memory/context/profile.md current with your active projects and preferences.Troubleshooting
Check-ins Not Arriving
Check if tasks are scheduled:Check-ins Too Generic
Solution: Update your memory and profile:Wrong Timezone
Check current timezone setting:Related Features
- Memory System - How check-ins use qmd to personalize questions
- Scheduled Tasks - Technical details on task scheduling
- Multi-Channel Support - Receive check-ins on any connected channel