Goal Management
Goals transform Myrm from a chat assistant into an autonomous worker. Define an objective, set constraints, and let the agent work independently across multiple turns.Creating a Goal
From the GUI
- Navigate to the Goal panel in the sidebar
- Click New Goal
- Describe the objective (e.g., “Refactor the authentication module to use JWT tokens”)
- Optionally set acceptance criteria, constraints, and budget limits
- Submit — the agent begins planning and executing
From Chat
Simply describe a complex task in natural language. The agent will detect it requires sustained effort and offer to create a goal.Goal Lifecycle
| State | Description |
|---|---|
PENDING_APPROVAL | Waiting for user to approve the execution plan |
ACTIVE | Agent is actively working toward the objective |
PAUSED | Temporarily halted (budget limit or user pause) |
QUEUED | Waiting for the current active goal to finish |
COMPLETED | Objective met and verified |
FAILED | Unable to complete within budget |
CANCELLED | Explicitly cancelled by user |
Budget Control
Every goal has 4 budget dimensions:| Dimension | Description | Example |
|---|---|---|
max_tokens | Maximum total tokens consumed | 500,000 |
max_usd | Maximum dollar spend | $5.00 |
max_time_seconds | Maximum wall-clock time | 3600 (1 hour) |
max_turns | Maximum agent turns | 30 |
Acceptance Criteria
Define what “done” looks like:- Shell verification — Runs test commands (e.g.,
pytest,npm test) and checks results - Semantic verification — LLM-based assessment against your acceptance criteria
Constraints
Hard rules the agent must follow:7-Step Continuation Guard
At the end of every turn, the continuation guard chain determines whether the agent should continue:- Check if the user cancelled
- Check budget limits (all 4 dimensions)
- Check if tools reported completion
- Check semantic completion (LLM judge)
- Check constraint compliance
- Check for stalled progress
- Check if dynamic subgoals are satisfied
Priority Queue
When you create multiple goals, they’re automatically queued:- The first goal runs immediately
- Subsequent goals enter
QUEUEDstate - When the active goal finishes, the next queued goal auto-starts
- Drag-and-drop reordering in the GUI
auto_approve: true to skip the approval step for queued goals, enabling fully unattended execution of goal chains.
Dynamic Subgoals
During execution, you can add new objectives without interrupting the agent:- Open the active goal’s detail panel
- Add a subgoal (e.g., “Also add unit tests for the new module”)
- The subgoal is injected into the agent’s context with highest priority
Objective Hot-Edit
Change the goal’s direction mid-execution:- Open the active goal’s detail panel
- Edit the objective text
- The change is injected as a steering message — the agent adjusts course without losing progress
Execution Summary
After completion, every goal produces aGoalExecutionSummary with:
- Files modified (with diff links)
- Token usage breakdown
- Cost breakdown by model
- Time elapsed
- Turn count
- Completion reason

