Problem
Model/provider selection (Gemini, Claude Haiku/Sonnet, GPT-4o, etc.) is currently only
configurable through config/artemis.jsonc, on a per-node basis (planner, operator,
step summarizer, memory chunking, etc.). There is no way to choose which agent LLM a
task should run with from the Web Console (uv run artemis ui).
The Console Overview (Model & Replay panel) only displays the Flash/Pro execution
profile status — it does not expose a control for the underlying LLM provider/model.
Changing the model today means:
- Editing
config/artemis.jsonc by hand.
- Restarting the server (
uv run artemis restart) for the change to take effect.
This makes it impractical to run different tasks with different models in the same
session (e.g. a cheap/fast model for routine regression tasks, a stronger model for
complex exploratory tasks), and it interrupts any in-flight work when the server restarts.
Why this should be possible without a restart
Based on #95, model resolution already happens dynamically per call via
get_llm(ctx, name="operator")-style lookups rather than being cached once at process
startup. This suggests the underlying architecture already resolves models contextually,
and the missing piece is simply exposing that resolution as a per-task/per-session
override instead of only reading from the static global config file.
Proposed Solution
- Add an optional
model / provider parameter to task dispatch, both:
- In the Web Console's Prompt Dock (a lightweight dropdown/selector next to the
prompt input, defaulting to the currently configured node), and
- In the
ArtemisClient.run(...) SDK call / mobile_run_task MCP tool, mirroring
the existing default_profile (flash/pro) parameter pattern.
- When provided, this override should flow into the task's
ctx at dispatch time and
take precedence over the static artemis.jsonc default for that task only — no
server restart, no global config mutation, no effect on other in-flight or future
tasks.
- Surface the resolved model (not just the Flash/Pro profile) in the Task Queue &
Dashboard / session history, so it's clear after the fact which LLM a given task
actually ran with (related to the session-model-visibility gap discussed separately).
Related
Scope note
This is a feature request, not a bug report — the current behavior (config-file-only,
restart-required) is not documented as broken, just limited. Keeping the initial scope
small (a single optional override parameter, not a full settings UI) should make this
tractable as a first pass.
Problem
Model/provider selection (Gemini, Claude Haiku/Sonnet, GPT-4o, etc.) is currently only
configurable through
config/artemis.jsonc, on a per-node basis (planner, operator,step summarizer, memory chunking, etc.). There is no way to choose which agent LLM a
task should run with from the Web Console (
uv run artemis ui).The Console Overview (Model & Replay panel) only displays the Flash/Pro execution
profile status — it does not expose a control for the underlying LLM provider/model.
Changing the model today means:
config/artemis.jsoncby hand.uv run artemis restart) for the change to take effect.This makes it impractical to run different tasks with different models in the same
session (e.g. a cheap/fast model for routine regression tasks, a stronger model for
complex exploratory tasks), and it interrupts any in-flight work when the server restarts.
Why this should be possible without a restart
Based on #95, model resolution already happens dynamically per call via
get_llm(ctx, name="operator")-style lookups rather than being cached once at processstartup. This suggests the underlying architecture already resolves models contextually,
and the missing piece is simply exposing that resolution as a per-task/per-session
override instead of only reading from the static global config file.
Proposed Solution
model/providerparameter to task dispatch, both:prompt input, defaulting to the currently configured node), and
ArtemisClient.run(...)SDK call /mobile_run_taskMCP tool, mirroringthe existing
default_profile(flash/pro) parameter pattern.ctxat dispatch time andtake precedence over the static
artemis.jsoncdefault for that task only — noserver restart, no global config mutation, no effect on other in-flight or future
tasks.
Dashboard / session history, so it's clear after the fact which LLM a given task
actually ran with (related to the session-model-visibility gap discussed separately).
Related
fixing this at the config layer highlighted that model resolution is already
per-call/contextual, which is what makes a per-task override feasible without a restart.
models are configured as a provider target.
Scope note
This is a feature request, not a bug report — the current behavior (config-file-only,
restart-required) is not documented as broken, just limited. Keeping the initial scope
small (a single optional override parameter, not a full settings UI) should make this
tractable as a first pass.