MonoClaw

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:

  1. Break the goal into subtasks
  2. Work through them one by one
  3. Ask for clarification when blocked
  4. 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 GoalsCron Jobs
TriggerUser-initiatedTime-based
DurationHours to daysMinutes
InteractionHigh (frequent check-ins)Low (fire and forget)
Best forComplex projectsRoutine monitoring