Three ways to let the agent work without you answering each step. All of them respect deny rules and organisation governance, and none of them can give an approval that needs a person.
Goals: unattended work toward an objective
neuralinverse --goal "migrate the date helpers from moment to date-fns" --max-cost 5 --max-time 60
neuralinverse --goal-resume <id>
The agent keeps a goal file in .neuralinverse/goals/<id>.md (objective, plan, progress log, next steps) and keeps working turn after turn until it declares the goal complete, or a budget or iteration limit is reached. Declaring completion requires the project's checks to pass, when there are any.
| Option or setting | Default | Meaning |
|---|---|---|
--goal <objective> | Start a goal run | |
--goal-resume <id> | Continue a goal run | |
--checkpoint-every <k> | 0 (off) | Commit progress to ni/goal/<id> every k iterations, without touching your branch |
--max-cost <usd>, --max-time <minutes> | Stop at an estimated cost or a run time | |
goals.maxIterations | 25 | Iteration limit |
goals.checkpointEvery | The same as --checkpoint-every | |
goals.continuationPrompt | built in | The base of the prompt that continues the goal at each iteration |
Goals run in auto-edit mode by default and always respect deny rules. full-auto must be passed explicitly with --mode full-auto.
Team runs: parallel agents on separate branches
neuralinverse team "add CSV export to the reports page, with tests"
- Plan. A coordinator splits the goal into independent tasks with dependencies (
team.maxTasks, default 6, at most 20). - Work. Helper agents run in parallel (
team.concurrency, default 3, at most 8), each in its own git worktree onni/team/<run>/<task>, running the project's checks and committing their work. - Integrate. Branches are merged in dependency order into
ni/team/<run>/integration; conflicts go to a resolver agent and are checked again. - Review. A reviewer reads the combined diff; blocking findings get one fix round.
- Report. Tasks, branches, check results and findings.
Your current branch is never changed. Review the integration branch yourself, or pass --apply to merge it; it asks for confirmation and is refused unless the run fully succeeded and your tree is clean.
| Option | Meaning |
|---|---|
--apply | Merge the integration branch after confirmation |
--allow-dirty | Base the run on a snapshot of uncommitted work without touching your working tree. Without it, a team run refuses to start with uncommitted changes |
--max-tasks <n> | Override team.maxTasks |
--concurrency <n> | Override team.concurrency |
The agent can also start a team run itself through the team tool for large, separable tasks. "team": { "enabled": false } turns that off.
Schedules
neuralinverse schedule add "0 6 * * 1-5" --goal "update dependencies and fix anything that breaks" --cwd ~/work/api
neuralinverse schedule list
neuralinverse schedule remove <id>
neuralinverse schedule run <id> # run now
neuralinverse schedule daemon # run due jobs while this process is alive
neuralinverse schedule install # write a launchd, systemd or Task Scheduler entry
Cron expressions use five fields (minute, hour, day of month, month, day of week) with ranges, steps, lists and names, evaluated in local time; --utc uses UTC. schedule install writes the service file for your operating system and prints the single command that activates it. Nothing is loaded for you. The installed entry runs neuralinverse schedule tick, which runs the jobs that are due and then exits.
Scheduled runs are non-interactive: anything that needs a person, such as flashing hardware or an approval governance asks for, is refused. See Non-interactive use and CI.