Persistent Goals
Persistent goals let you set a standing objective and have Mona work toward it across multiple turns, checking in with you at key milestones.
Setting a goal
/goal "Refactor the authentication module to use JWT tokens instead of session cookies. Maintain backward compatibility for the legacy API."
Mona will:
- Break the goal into subtasks
- Work through them one by one
- Ask for clarification when blocked
- Report progress at each milestone
Goal lifecycle
Active
Mona actively works on the goal, making changes and reporting progress:
Mona: ✅ Subtask 1 complete — Created JWT utility module
Mona: 🔄 Working on subtask 2 — Updating auth middleware
Blocked
When Mona needs input:
Mona: ⏸️ Blocked on subtask 3 — Should the legacy API return 401 or 403 for invalid tokens?
Reply to unblock:
Return 401 for missing/invalid tokens, 403 for valid tokens with insufficient permissions.
Complete
When all subtasks are done:
Mona: ✅ Goal complete — Authentication module refactored
- JWT tokens implemented
- Legacy API compatibility maintained
- Tests updated and passing
Managing goals
List active goals
monoclaw goals list
Pause a goal
/goal pause
Resume a goal
/goal resume
Abandon a goal
/goal abandon
Goal configuration
# ~/.monoclaw/config.yaml
goals:
max_concurrent: 3
check_in_interval: 5 # Turns between check-ins
auto_save: true
Best practices
- Be specific — Vague goals lead to vague results
- Set boundaries — Define what's out of scope
- Review check-ins — Don't let Mona go too far without validation
- One major goal at a time — Multiple concurrent goals can conflict
- Use with skills — Load relevant skills before setting the goal
Comparison with cron
| Persistent Goals | Cron Jobs | |
|---|---|---|
| Trigger | User-initiated | Time-based |
| Duration | Hours to days | Minutes |
| Interaction | High (frequent check-ins) | Low (fire and forget) |
| Best for | Complex projects | Routine monitoring |