RFC: Agent model_name: declared, inherited, or both? #337
Apoorvgarg-creator
started this conversation in
Ideas
Replies: 1 comment 2 replies
|
option D sounds like the best route imo, even if users have to learn more wrt using observal, we can keep the functionality. |
2 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
cc @BlazeUp-AI/maintainers — looking for design input.
TL;DR
Today every agent in the registry has a required
model_namefield set at creation time (e.g.,claude-sonnet-4,gemini-2.5-pro). But for most target IDEs that field is silently ignored — the IDE runs whatever model the user has selected in their session. I'd like community input on whethermodel_nameshould stay as-is, become advisory metadata only, or be dropped in favor of "inherit from host IDE."Current behavior
When you
observal pull <agent> --ide <ide>, here's whetheragent.model_nameactually reaches runtime:agent.model_name?~/.kiro/agents/<name>.jsonas themodelfield; Kiro respects it--model sonnet|opus|haiku|inherit)gemini-2.5-pro, the field is dropped and the session's model is usedSo an agent author who picks
gemini-2.5-proand publishes today is, for 5 of 7 supported IDEs, communicating a fact that has no operational effect.Why this is a design question, not just a bug
It's tempting to say "drop the field." But
model_namedoes pull weight beyond runtime:agent.model_nameso you can compare runs across model versionsDropping it loses these. Keeping it as-is means the field is misleading. Renaming/repurposing might land in the middle.
Sub-question: do agents naturally inherit?
Most published agents I've seen elsewhere (Claude Code subagents, Cursor rules, Codex AGENTS.md, Copilot instructions) are prompt + tool packages without a model declaration — they assume the host IDE's model. The host model is the right abstraction for the user: "I picked Opus for this session, my subagents use Opus too."
Kiro is the outlier — it lets each agent pin its own model, which is occasionally useful (a cheap classification subagent on Haiku while the main loop is on Opus).
Options under consideration
Option A — Make
model_nameadvisory metadata onlyrecommended_model/tested_withgemini-2.5-pro; Claude Code will use its session model instead")Option B — Make
model_namea per-install override--modeltoobserval pullfor IDEs that support it (Claude Code, Kiro)Option C — Keep
model_namerequired, enforce per-IDE compatibility at installobserval pull <gemini-agent> --ide claude-codewith a clear errorOption D — Two-layer:
authored_for(advisory) +runtime_model(per-install, optional)authored_foris metadata, locked at registrationruntime_modelis set at install time for IDEs that support itSpecific questions for the community
agent.model_namefor filtering or comparison today? If we made it optional, would that hurt your workflow?--modeloverride, or is that complexity nobody asked for?Context
observal-server/schemas/agent.pyobserval-server/services/agent_config_generator.py--modelfor Claude Code):observal_cli/cmd_pull.pyLooking forward to your thoughts — particularly if you've hit the "authored for model X, but the IDE runs model Y" footgun in practice.
— Apoorv
All reactions