anymo Docs
Features

Goals

A goal is a finish line, not a prompt: "the report exists and cites three sources". Anymo keeps starting turns until an independent judge agrees the condition is met. The agent's own opinion of its work never counts.

How it works

Each goal turn is a complete run. When it finishes, a separate evaluator, a fresh model completion with no tools, reads the conversation and answers one question: is the condition met? It returns yes or no with a short reason.

  • Yes: the goal completes and the loop stops.
  • No: the reason is fed into the next turn as guidance, so each turn starts knowing exactly what was still missing.

Separating the judge from the worker is the whole trick. A worker grading itself says "done" early; an evaluator that can only read the record does not.

Setting a goal

  1. Type the condition

    In the composer: /goal the report exists and cites three sources. Write conditions as observable outcomes, things the evaluator can check from the conversation, rather than instructions.

  2. Watch the goal bar

    A slim bar docks above the composer: ◎ Goal · condition · elapsed, with pause, edit, clear, and expand controls. It stays visible across screens while the goal is active.

  3. Let it work

    Turns run one after another, each a full run with the same approval gates as everything else. A goal never weakens permissions: in manual mode every turn's tool calls still ask.

The same engine is available headlessly:

sh
anymo goal "the report exists and cites three sources" --workspace anymo-demo
anymo goal                  # bare: show condition, elapsed, turns, token spend, latest reason
anymo goal pause            # honored after the current turn
anymo goal resume           # counters reset, condition kept
anymo goal clear            # aliases: stop|off|reset|none|cancel

Options: --provider mock|http, --permission auto|manual|plan, --reasoning low|medium|high|xhigh|max, --max-turns <n>.

Pause, resume, replace, clear

  • One goal per session. Setting a new one replaces the old.
  • Pause stops after the current turn finishes and is evaluated; a turn is never killed halfway. Paused goals show "Paused goal" in the bar with the same controls.
  • Resume starts a fresh driving session: the condition is kept, but turn, token, and elapsed counters reset.
  • Clear removes the goal entirely; stop, off, reset, none, and cancel all mean clear.

Bounding long goals

Conditions can be up to 4,000 characters, and a good long-running goal states its own stop rules in the condition: "…or stop after 20 turns or 2 hours". Combined with --max-turns and the evaluator's turn-by-turn feedback, a goal cannot become an unbounded loop. Scheduled goal loops in Automations add hard stop clauses: max turns, max duration, and max cost.

Checking on a goal

Expand the goal bar, or run bare anymo goal, for the full status: the condition, elapsed time, turns evaluated, token spend, and the evaluator's latest reason. The reasons read like a progress report of what is still missing, because that is exactly what they are.

Frequently asked questions

I paused and it kept going for a minute. Why?

Pause and clear are honored at turn boundaries. The current turn finishes and gets evaluated, then the loop stops. This is deliberate: killing a turn mid-flight would leave half-applied work.

What model judges the condition?

A fresh, cheap completion against your configured provider, with no tools. It sees the conversation, not the worker's internal state.

Goal or automation?

A goal drives turns now, until done. An automation runs on a schedule, and can carry its own goal condition for "keep trying nightly until this is true".