Summary
Allow users to specify which LLM model a subagent or task should use directly in the prompt, without having to change global configuration.
Motivation
Currently, all agents/tasks run using the globally configured model. There is no way to mix models within a single session or workflow. Being able to target specific models per task opens up powerful patterns:
- Use a cheaper/faster model for simple subtasks (e.g. writing docs, summarizing)
- Use a more capable model for complex reasoning or analysis
- Experiment with different models side-by-side within the same session
Proposed UX
The user should be able to express model selection naturally in the prompt, for example:
Do task X using model Y. Analyze X using model Y and use model Z to write the documentation.
Nibble should parse the model hint and route the subagent or task to the specified model.
Proposed Behavior
- When a user specifies a model in a task description (e.g. "using model Y"), Nibble (or the coordinator) should honour that hint when spawning the subagent for that task
- The model name/alias should match the same identifiers used in
nibble.json / models config (e.g. claude-sonnet-4-5, gpt-4o, gemini-2.5-pro)
- If the specified model is not found or unavailable, fall back to the default model and warn the user
- The feature should work both for:
- Coordinator-spawned subagents (task agent)
- Explicit user prompts directing a subtask to a specific model
Examples
`
Single model override
Refactor internal/agent/agent.go using claude-opus-4-5.
Multiple model overrides in one prompt
Analyze the performance bottlenecks using gemini-2.5-pro and use gpt-4o-mini to write the summary.
Named model alias
Write the unit tests for internal/hooks using the fast model.
`
Open Questions
- Should model hints be parsed by the coder agent's LLM (semantic parsing) or via explicit syntax (e.g.
@model:name)?
- Should there be a shorthand syntax in addition to natural language (e.g.
[model=claude-opus])?
- How should this interact with provider authentication — skip the task if the model's provider is not configured?
## Summary
Allow users to specify which LLM model a subagent or task should use directly in the prompt, without having to change global configuration.
## Motivation
Currently, all agents/tasks run using the globally configured model. There is no way to mix models within a single session or workflow. Being able to target specific models per task opens up powerful patterns:
- Use a cheaper/faster model for simple subtasks (e.g. writing docs, summarizing)
- Use a more capable model for complex reasoning or analysis
- Experiment with different models side-by-side within the same session
## Proposed UX
The user should be able to express model selection naturally in the prompt, for example:
`
Do task X using model Y.
Analyze X using model Y and use model Z to write the documentation.
`
Nibble should parse the model hint and route the subagent or task to the specified model.
## Proposed Behavior
- When a user specifies a model in a task description (e.g. "using model Y"), Nibble (or the coordinator) should honour that hint when spawning the subagent for that task
- The model name/alias should match the same identifiers used in `nibble.json` / `models` config (e.g. `claude-sonnet-4-5`, `gpt-4o`, `gemini-2.5-pro`)
- If the specified model is not found or unavailable, fall back to the default model and warn the user
- The feature should work both for:
- Coordinator-spawned subagents (task agent)
- Explicit user prompts directing a subtask to a specific model
## Examples
`
# Single model override
Refactor internal/agent/agent.go using claude-opus-4-5.
# Multiple model overrides in one prompt
Analyze the performance bottlenecks using gemini-2.5-pro and use gpt-4o-mini to write the summary.
# Named model alias
Write the unit tests for internal/hooks using the fast model.
`
## Open Questions
- Should model hints be parsed by the coder agent's LLM (semantic parsing) or via explicit syntax (e.g. `@model:name`)?
- Should there be a shorthand syntax in addition to natural language (e.g. `[model=claude-opus]`)?
- How should this interact with provider authentication — skip the task if the model's provider is not configured?