Goals
Goals are long-running objectives that persist across multiple Syntic Code sessions. Where a single prompt describes one task, a goal describes an outcome that may take many runs, many days, and many intermediate steps to reach. Amara treats a goal as durable context: it tracks progress, remembers what has already been tried, and picks up where it left off rather than starting over each time.
What a goal is for
Use a goal when the work is too large or too open-ended for one session. Migrating a codebase to a new framework, driving test coverage to a target, or steadily reducing a backlog of lint warnings are all natural goals. The agent breaks the objective into steps, works on them incrementally — often driven by a schedule — and maintains a record of state so each session is informed by the last.
Defining a goal
A goal has a name, a description of the desired end state, and optional success criteria that tell Amara when it is done:
syntic goal create \
--name typescript-migration \
--description "Convert the src/ directory from JavaScript to TypeScript." \
--done-when "All files under src/ are .ts and 'npm run typecheck' passes."You can then run the goal on demand or attach it to a schedule so it advances automatically:
syntic goal run typescript-migration
syntic goal status typescript-migration # progress and remaining workProgress and continuity
Each time a goal runs, Amara reviews the accumulated state, chooses the next meaningful increment, and updates the record before stopping. Progress is checkpointed so you can inspect the history, roll back a bad step using checkpointing, or intervene manually in an interactive session. When the success criteria are met, the goal is marked complete and stops consuming scheduled runs.