-
Notifications
You must be signed in to change notification settings - Fork 22
feat: add model selection for AI agents #382
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Add the ability to specify AI models via: - CLI flag: `-a claude:opus` colon syntax - Settings: Default models per agent in `.rover/settings.json` - Init flow: Model selection prompts during `rover init` Model priority (highest to lowest): 1. CLI flag (`-a claude:opus`) 2. User settings (`defaults.models.claude`) 3. Agent built-in default Changes: - Update user-settings schema to v1.1 with models field - Add agentModel field to task-description schema - Create agent-parser.ts utility for parsing agent:model syntax - Create agent-models.ts with model definitions per agent - Update task.ts to parse colon syntax and pass model through - Update init.ts with model selection prompts - Update docker.ts and podman.ts to pass --agent-model flag 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add "Inherit (use agent default)" as first option in model selection - With --yes flag, use inherit behavior (no models saved) - Fix -a option to not consume task description 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Update agent package to actually pass the model flag to underlying CLI tools: - Add model field to Agent interface and BaseAgent class - Update createAgent() to accept model parameter - Update toolArguments() in all agents to include --model flag: - Claude: --model - Gemini: --model - Qwen: --model - Codex: --model - Cursor: --model - Update Runner to pass model when creating agent This completes the model selection feature by ensuring the model flows all the way from CLI → task → container → agent CLI. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add the ability to specify different AI tools and models for each workflow step via CLI option and settings: - Add `-o, --step-agent <step:tool:model>` CLI option for runtime overrides - Add per-step workflow config in settings (v1.2 schema) - Add opt-in per-step configuration during `rover init` - Add "Other" option for custom model names in init prompts - Update Codex and Cursor with proper model options Priority order: 1. CLI --step-agent (per-step runtime override) 2. CLI -a (applies to all steps) 3. Settings defaults.workflows config 4. Workflow YAML defaults Example usage: rover task -a claude:sonnet -o implement:claude:opus "feature" 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add the ability to specify different AI tools and models for each workflow step via CLI option and settings: - Add `-o, --step-agent <step:tool:model>` CLI option for runtime overrides - Add per-step workflow config in settings (v1.2 schema) - Add opt-in per-step configuration during `rover init` - Add "Other" option for custom model names in init prompts - Update Codex and Cursor with proper model options Priority order: 1. CLI --step-agent (per-step runtime override) 2. CLI -a (applies to all steps) 3. Settings defaults.workflows config 4. Workflow YAML defaults Example usage: rover task -a claude:sonnet -o implement:claude:opus "feature" 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Model selection now only prompts for the selected default agent
instead of all available agents with multiple models
- Fixed "Other (enter custom model)" option by using plain string
choices instead of {name, value} objects to avoid enquirer
returning display name instead of value
- Applied same fix to per-step workflow tool/model selection
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fixed workflow name display (was showing undefined for workflow.id) - Now shows formatted workflow name (e.g., "SWE", "Tech Writer") - Added workflow description from YAML (e.g., "Complete software engineering workflow with adaptive complexity handling") - Changed tree connector from ├── to └── for the last instruction line 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
When workflows use different agents for different steps (via per-step agent configuration), the container now installs ALL required agents instead of just the default agent. This enables workflows like: - Step 1: Use Claude for context analysis - Step 2: Use Gemini for implementation Changes: - SetupBuilder now accepts array of agents instead of single agent - entrypoint.sh loops through all agents to install each one - Docker/Podman sandboxes collect unique agents from task.agent and task.stepAgents, mount credentials for all, and pass env vars for all - MCP servers are configured for all agents 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add a useCases field to workflow schema and display it during init to help users understand what each workflow is for. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
Hey @dataforxyz, Thank you for the PR and all the work here. This is a feature we discussed in the past, so it makes sense to introduce it in Rover 😄. Overall, the end goal is to allow you to select the specific model you want to use, offering multiple ways to define it:
And different granularity levels:
All these combinations cover different use cases and they will provide a lot of flexibility to users. Currently, we are working on moving all task metadata and project workspaces to a central location. As part of these changes, we are updating some configuration files like user settings and task descriptions. I foresee some conflicts between this PR and that workstream. To miminize them and simplify the merge process, I would ask you to split this PR into smaller ones that we can merge individually. The list of items in the summary seems to me a reasonable way to split this PR: PR: Support agent:model format
Easy to merge with the current workstream 👍 PR: Configure user model preferences
This file will contain the project configuration (current rover.json) and will be optional in v2. For user-specific configuration, [SKIP] PR: Configure models during project initialization
The However, I like the idea of the syntax you introduce to override steps in the project configuration. We can document this process and work on a different CLI experience to set it. PR: Override workflow steps configuration without having to create a separate workflow
You will be able to add custom workflows in the next version. Based on this, you can export the default What's the use case you have in mind for this feature? Would it be enough to create a more specific workflow for you? Thank you! We are happy to help you going through all these changes. Feel free to reach you to us here or in our Discord server. I created a specific forum thread there for these changes in case you want a more direct communication :) |
Mount arrays come as pairs ['-v', 'path1', '-v', 'path2']. Using Set on the array incorrectly removed duplicate '-v' flags, causing "invalid reference format" container errors. Now deduplicates by mount path while preserving all -v flags. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Updated to current available models: - Codex: gpt-5.1-codex-max (default), gpt-5.1-codex, gpt-5.1-codex-mini, gpt-5.2, gpt-5.1 - Gemini: flash (default), pro, flash-lite 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Cursor: auto (default), sonnet-4.5, opus-4.5, gemini-3-*, gpt-5.*, grok - Qwen: coder-model (only relevant option) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Summary
This PR adds comprehensive model and agent selection capabilities to Rover:
Features
Model selection via
-aflag: Specify agent and model usingagent:modelsyntaxPer-step agent/model overrides via
-oflag: Override the tool and model for specific workflow stepsrover task -a claude:sonnet -o plan:claude:opus -o implement:claude:haiku "task"Enhanced
rover init: Interactive model selection with current model lists for each agentAutomatic agent installation: When using per-step overrides with different agents, all required agents are automatically installed in the container
Updated Model Lists
Bug Fixes
Test Plan
-a claude:haiku- basic model selection-a claude:sonnet- different model-o plan:claude:opus -o implement:claude:haiku- per-step overrides with same agentrover initshows correct model options🤖 Generated with Claude Code