# ModelSelectorScreen

> **Class** in `deepagents_code`

📖 [View in docs](https://reference.langchain.com/python/deepagents-code/widgets/model_selector/ModelSelectorScreen)

Full-screen modal for model selection.

Displays available models grouped by provider with keyboard navigation
and search filtering. Current model is highlighted.

Returns (model_spec, provider) tuple on selection, or None on cancel.

## Signature

```python
ModelSelectorScreen(
    self,
    current_model: str | None = None,
    current_provider: str | None = None,
    cli_profile_override: dict[str, Any] | None = None,
    *,
    curated: bool = False,
    title: str | None = None,
    description: str | Content | None = None,
    result_callback: Callable[[tuple[str, str] | None], None] | None = None,
)
```

## Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `current_model` | `str \| None` | No | The currently active model name (to highlight). (default: `None`) |
| `current_provider` | `str \| None` | No | The provider of the current model. (default: `None`) |
| `cli_profile_override` | `dict[str, Any] \| None` | No | Extra profile fields from `--profile-override`.  Merged on top of upstream + config.toml profiles so that app overrides appear with `*` markers in the detail footer. (default: `None`) |
| `curated` | `bool` | No | Whether to show a short, profile-ranked model subset. (default: `False`) |
| `title` | `str \| None` | No | Optional title override for the selector. (default: `None`) |
| `description` | `str \| Content \| None` | No | Optional description shown below the title. (default: `None`) |
| `result_callback` | `Callable[[tuple[str, str] \| None], None] \| None` | No | Optional callback for selector results when the screen is displayed without a `push_screen` result callback. (default: `None`) |

## Extends

- `ModalScreen[tuple[str, str] | None]`

## Constructors

```python
__init__(
    self,
    current_model: str | None = None,
    current_provider: str | None = None,
    cli_profile_override: dict[str, Any] | None = None,
    *,
    curated: bool = False,
    title: str | None = None,
    description: str | Content | None = None,
    result_callback: Callable[[tuple[str, str] | None], None] | None = None,
) -> None
```

| Name | Type |
|------|------|
| `current_model` | `str \| None` |
| `current_provider` | `str \| None` |
| `cli_profile_override` | `dict[str, Any] \| None` |
| `curated` | `bool` |
| `title` | `str \| None` |
| `description` | `str \| Content \| None` |
| `result_callback` | `Callable[[tuple[str, str] \| None], None] \| None` |


## Properties

- `BINDINGS`
- `CSS`
- `pending_install_extra`

## Methods

- [`compose()`](https://reference.langchain.com/python/deepagents-code/widgets/model_selector/ModelSelectorScreen/compose)
- [`on_mount()`](https://reference.langchain.com/python/deepagents-code/widgets/model_selector/ModelSelectorScreen/on_mount)
- [`on_input_changed()`](https://reference.langchain.com/python/deepagents-code/widgets/model_selector/ModelSelectorScreen/on_input_changed)
- [`on_input_submitted()`](https://reference.langchain.com/python/deepagents-code/widgets/model_selector/ModelSelectorScreen/on_input_submitted)
- [`on_model_option_clicked()`](https://reference.langchain.com/python/deepagents-code/widgets/model_selector/ModelSelectorScreen/on_model_option_clicked)
- [`action_move_up()`](https://reference.langchain.com/python/deepagents-code/widgets/model_selector/ModelSelectorScreen/action_move_up)
- [`action_move_down()`](https://reference.langchain.com/python/deepagents-code/widgets/model_selector/ModelSelectorScreen/action_move_down)
- [`action_tab_complete()`](https://reference.langchain.com/python/deepagents-code/widgets/model_selector/ModelSelectorScreen/action_tab_complete)
- [`action_page_up()`](https://reference.langchain.com/python/deepagents-code/widgets/model_selector/ModelSelectorScreen/action_page_up)
- [`action_page_down()`](https://reference.langchain.com/python/deepagents-code/widgets/model_selector/ModelSelectorScreen/action_page_down)
- [`action_select()`](https://reference.langchain.com/python/deepagents-code/widgets/model_selector/ModelSelectorScreen/action_select)
- [`action_set_default()`](https://reference.langchain.com/python/deepagents-code/widgets/model_selector/ModelSelectorScreen/action_set_default)
- [`action_toggle_recommended()`](https://reference.langchain.com/python/deepagents-code/widgets/model_selector/ModelSelectorScreen/action_toggle_recommended)
- [`action_cancel()`](https://reference.langchain.com/python/deepagents-code/widgets/model_selector/ModelSelectorScreen/action_cancel)

---

[View source on GitHub](https://github.com/langchain-ai/deepagents/blob/0412009c5441bef8d75a427e1da8909e33ab5b56/libs/code/deepagents_code/widgets/model_selector.py#L210)