# PluginManagerScreen

> **Class** in `deepagents_code`

📖 [View in docs](https://reference.langchain.com/python/deepagents-code/tui/modals/plugin_manager/PluginManagerScreen)

Arrow-key navigable plugin manager for `/plugins`.

Closing runs the optional `check_reload_required` callback while this screen
stays mounted. Changed plugin state transitions in place to a reload prompt
and dismisses with `"reload"` or `"later"`; a failed or timed-out check
dismisses with `"check_failed"`; unchanged state, or no callback at all,
dismisses with `None` and shows nothing.

## Signature

```python
PluginManagerScreen(
    self,
    *,
    mcp_server_info: Sequence[MCPServerInfo] = (),
    mcp_connecting: bool = False,
    loaded_plugin_ids: AbstractSet[str] | None = None,
    on_auto_update_enabled: Callable[[], None] | None = None,
    check_reload_required: Callable[[], Awaitable[bool | None]] | None = None,
)
```

## Parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `mcp_server_info` | `Sequence[MCPServerInfo]` | No | Live MCP server metadata from the running session, used to show connection status for plugins that declare MCP servers. (default: `()`) |
| `mcp_connecting` | `bool` | No | Whether MCP connection status is still loading. (default: `False`) |
| `loaded_plugin_ids` | `AbstractSet[str] \| None` | No | Plugin ids loaded into the current session. Plugins whose enabled state differs from this set (enabled but not loaded, or disabled but still loaded) are shown as pending reload. (default: `None`) |
| `on_auto_update_enabled` | `Callable[[], None] \| None` | No | Called after auto-update is enabled. (default: `None`) |
| `check_reload_required` | `Callable[[], Awaitable[bool \| None]] \| None` | No | Awaited on close to decide whether plugin state changed since the manager opened. `True` shows the inline reload prompt, `False` closes silently, and `None` means the check failed. When omitted, the manager closes without prompting. (default: `None`) |

## Extends

- `ModalScreen[PluginManagerResult]`

## Constructors

```python
__init__(
    self,
    *,
    mcp_server_info: Sequence[MCPServerInfo] = (),
    mcp_connecting: bool = False,
    loaded_plugin_ids: AbstractSet[str] | None = None,
    on_auto_update_enabled: Callable[[], None] | None = None,
    check_reload_required: Callable[[], Awaitable[bool | None]] | None = None,
) -> None
```

| Name | Type |
|------|------|
| `mcp_server_info` | `Sequence[MCPServerInfo]` |
| `mcp_connecting` | `bool` |
| `loaded_plugin_ids` | `AbstractSet[str] \| None` |
| `on_auto_update_enabled` | `Callable[[], None] \| None` |
| `check_reload_required` | `Callable[[], Awaitable[bool \| None]] \| None` |


## Properties

- `BINDINGS`
- `CSS_PATH`
- `AUTO_FOCUS`

## Methods

- [`compose()`](https://reference.langchain.com/python/deepagents-code/tui/modals/plugin_manager/PluginManagerScreen/compose)
- [`on_mount()`](https://reference.langchain.com/python/deepagents-code/tui/modals/plugin_manager/PluginManagerScreen/on_mount)
- [`on_unmount()`](https://reference.langchain.com/python/deepagents-code/tui/modals/plugin_manager/PluginManagerScreen/on_unmount)
- [`on_resize()`](https://reference.langchain.com/python/deepagents-code/tui/modals/plugin_manager/PluginManagerScreen/on_resize)
- [`update_connection_state()`](https://reference.langchain.com/python/deepagents-code/tui/modals/plugin_manager/PluginManagerScreen/update_connection_state)
- [`check_action()`](https://reference.langchain.com/python/deepagents-code/tui/modals/plugin_manager/PluginManagerScreen/check_action)
- [`on_key()`](https://reference.langchain.com/python/deepagents-code/tui/modals/plugin_manager/PluginManagerScreen/on_key)
- [`on_plugin_tab_selected()`](https://reference.langchain.com/python/deepagents-code/tui/modals/plugin_manager/PluginManagerScreen/on_plugin_tab_selected)
- [`action_reload_plugins()`](https://reference.langchain.com/python/deepagents-code/tui/modals/plugin_manager/PluginManagerScreen/action_reload_plugins)
- [`action_cancel()`](https://reference.langchain.com/python/deepagents-code/tui/modals/plugin_manager/PluginManagerScreen/action_cancel)
- [`action_focus_search()`](https://reference.langchain.com/python/deepagents-code/tui/modals/plugin_manager/PluginManagerScreen/action_focus_search)
- [`action_arrow_next_tab()`](https://reference.langchain.com/python/deepagents-code/tui/modals/plugin_manager/PluginManagerScreen/action_arrow_next_tab)
- [`action_arrow_previous_tab()`](https://reference.langchain.com/python/deepagents-code/tui/modals/plugin_manager/PluginManagerScreen/action_arrow_previous_tab)
- [`action_next_tab()`](https://reference.langchain.com/python/deepagents-code/tui/modals/plugin_manager/PluginManagerScreen/action_next_tab)
- [`action_previous_tab()`](https://reference.langchain.com/python/deepagents-code/tui/modals/plugin_manager/PluginManagerScreen/action_previous_tab)
- [`action_cursor_down()`](https://reference.langchain.com/python/deepagents-code/tui/modals/plugin_manager/PluginManagerScreen/action_cursor_down)
- [`action_cursor_up()`](https://reference.langchain.com/python/deepagents-code/tui/modals/plugin_manager/PluginManagerScreen/action_cursor_up)
- [`on_option_list_option_selected()`](https://reference.langchain.com/python/deepagents-code/tui/modals/plugin_manager/PluginManagerScreen/on_option_list_option_selected)
- [`on_input_changed()`](https://reference.langchain.com/python/deepagents-code/tui/modals/plugin_manager/PluginManagerScreen/on_input_changed)
- [`on_input_submitted()`](https://reference.langchain.com/python/deepagents-code/tui/modals/plugin_manager/PluginManagerScreen/on_input_submitted)

---

[View source on GitHub](https://github.com/langchain-ai/deepagents/blob/2069079e09546060f5b52b2cd4f0e3c813e820f3/libs/code/deepagents_code/tui/modals/plugin_manager/__init__.py#L89)