# agent-shell `agent-shell` is a Flutter package for embeddable agent interaction surfaces. It is not a product app. It provides the shared shell that IOP, NomadCode, and future host apps can compose with their own capability packs. ## Purpose - Render agent messages, tool calls, and approval prompts. - Provide capability and event interfaces that host apps can wire to their own backends. - Stay product-agnostic: no IOP, NomadCode, WebView, workflow, or Control Plane dependency lives here. - Fit into different workbench layouts, including NomadCode's right rail and IOP's left rail. ## Package Boundary ```text agent_shell AgentShell widget AgentMessage / AgentToolCall models AgentCapability / AgentCommand / AgentEvent interfaces Tool call and approval UI primitives iop_console_flutter IOP-specific capability pack IOP Control Plane / Edge / Node integration nomadcode_app NomadCode workbench shell NomadCode WebView/workflow capability pack optional IOP composition package ``` ## Example ```dart AgentShell( messages: messages, busy: isRunning, onSubmit: (text) => agentRuntime.send(text), onToolAction: (action) => agentRuntime.handleToolAction(action), ) ``` ## Intended Composition IOP standalone: ```text iop/apps/client -> iop_console_flutter -> agent_shell ``` NomadCode without IOP: ```text nomadcode/apps/client -> nomadcode workbench shell -> agent_shell ``` NomadCode with IOP: ```text nomadcode optional composition layer -> nomadcode workbench shell -> iop_console_flutter -> agent_shell ``` The IOP import must stay in the optional composition layer so the default NomadCode build can succeed without IOP dependencies.