curl -LsSf https://langch.in/dcode | bash
# With model provider extras
# OpenAI, Anthropic, and Gemini are included by default
DEEPAGENTS_CODE_EXTRAS="nvidia,ollama" curl -LsSf https://langch.in/dcode | bash
Run:
dcode
The fastest way to start using Deep Agents. deepagents-code is a pre-built coding agent in your terminal — similar to Claude Code or Cursor — powered by any LLM that supports tool calling. One install command and you're up and running, no code required.
What deepagents-code adds on top of the SDK:
See our Releases and Versioning policies.
As an open-source project in a rapidly developing field, we are extremely open to contributions, whether it be in the form of a new feature, improved infrastructure, or better documentation.
For detailed information on how to contribute, see the Contributing Guide.
This project was primarily inspired by Claude Code, and initially was largely an attempt to see what made Claude Code general purpose, and make it even more so.
Adapter for rendering agent output to Textual widgets.
Represents a queued user message awaiting processing.
Textual message carrying an external prompt or command.
An action deferred until the current busy state resolves.
Session state for the Textual app.
Main Textual application for deepagents-code.
Posted by the background server-startup worker on success.
Posted by the background server-startup worker on failure.
Result from running the Textual application.
Stable identifiers for notification actions dispatched by the app.
One button/action row in the notification modal.
Typed payload for a missing-dependency notification.
Typed payload for an update-available notification.
A single notice waiting for user action.
In-memory store of pending notifications.
Middleware that provides an ask_user tool for interactive questioning.
A persisted API key credential.
A persisted OAuth subscription credential.
Result of a credential write that may have warnings to surface.
A dangerous Unicode character found in text.
Safety analysis output for a URL string.
Raised when the HITL interrupt loop exceeds _MAX_HITL_ITERATIONS rounds.
Mutable state accumulated while iterating over the agent stream.
Best-effort background LangSmith thread URL lookup state.
Full configuration payload passed from the app to the server subprocess.
User-facing OAuth interaction surface shared by CLI and TUI.
Default OAuthInteraction that drives the flow via stdin/stdout.
Discriminator for ConfigResolutionError reasons.
Structured error returned when a login target cannot be resolved.
Successful resolution of a merged MCP config for login.
Resolved server config plus enough context for error messages.
Explicit user/project path context for project-sensitive behavior.
Complete set of semantic colors for one theme variant.
Metadata for a registered theme.
Metadata for a custom subagent loaded from filesystem.
Extends agent state with per-checkpoint facts restored on resume.
Persists per-checkpoint resume facts after each model call.
A single choice option for a multiple choice question.
A question to ask the user.
Request payload sent via interrupt when asking the user questions.
Widget result when the user submits answers.
Widget result when the user cancels the prompt.
A transport-independent event delivered from outside the TUI.
Source of external events for the Textual app.
Line-delimited JSON event source over a local Unix domain socket.
State for local context middleware.
Inject local context (git state, project structure, etc.) into the system prompt.
Runtime context passed via context= to the LangGraph graph.
Classification that controls whether a command can skip the message queue.
A single slash-command definition.
A single autocomplete entry for the slash-command controller.
Swap the model or per-call settings from runtime.context.
Character set mode for TUI display.
Character glyphs for TUI display.
Global settings and environment detection for deepagents-code.
Mutable session state shared across the app, adapter, and agent.
Base class for typed LangSmith project URL lookup failures.
The langsmith package is not installed.
The LangSmith project URL lookup exceeded its hard timeout.
The LangSmith SDK call raised — auth, 404, network, etc.
Result of creating a chat model, bundling the model with its metadata.
Deterministic chat model for integration tests.
Raised when installed extras cannot be determined safely.
Install status for one optional dependency extra.
Data used to render HITL previews.
Line and byte level metrics for a file operation.
Track a single filesystem tool call.
Collect file operation metrics during an interaction.
Parsed MCP server config entry.
File-backed TokenStorage under ~/.deepagents/.state/mcp-tokens/.
Raised when an MCP server needs interactive re-authentication.
Manages a langgraph dev server subprocess.
Unified parse result for dropped-path payload detection.
Track pasted images and videos in the current conversation.
Successful offload result.
Offload was a no-op — conversation is within the retention budget.
Raised when the model cannot be created for offloading.
Represents a pasted image with its base64 encoding.
Represents a pasted video with its base64 encoding.
Metadata for a single MCP tool.
Metadata for a configured MCP server and its tools.
An MCP configuration file is malformed or structurally invalid.
Lazy, per-server cache of persistent MCP sessions.
OSC 9;4 progress states.
Client that talks to a LangGraph server over HTTP+SSE.
Raised when model configuration or creation fails.
Raised when no credentials are configured for any default-resolvable provider.
Raised when neither the app nor init_chat_model can infer a provider.
Raised when a provider is selected but its API key env var is unset.
Raised when a provider is selected but its LangChain package is not installed.
Credential readiness state for a model provider.
Origin of a CONFIGURED credential, used to discriminate display.
Credential readiness information for a provider.
A model specification in provider:model format.
Profile data for a model with override tracking.
Configuration for a model provider.
Parsed model configuration from config.toml.
Coalesced thread-selector configuration read from a single TOML parse.
Validate shell commands against an allow-list without HITL interrupts.
Token stats for a single model within a session.
Stats accumulated over a single agent turn (or full session).
Thread metadata returned by list_threads.
Base error for sandbox provider operations.
Raised when the requested sandbox cannot be found.
Interface for creating and deleting sandbox backends.
Structured prompt and checkpoint metadata for a skill invocation.
Extended skill metadata for CLI display, adds source tracking.
GitHub-hosted MCP: RFC 8628 Device Authorization Grant.
Outcome of a provider's pre-handshake run_login step.
Base class for provider-specific OAuth dispatch.
Fallback provider for spec-compliant MCP servers with no quirks.
Slack-hosted MCP: loopback Authorization Code with a public client.
Welcome banner displayed at startup.
Types of messages in the chat.
Status of a tool call.
In-memory message data for virtualization.
Manages message data and widget window for virtualization.
A clickable thread option in the selector.
Message sent when a thread option is clicked.
Emit scroll changes so the parent can refresh the overflow indicator.
Message sent when the controls pane scroll position changes.
Confirmation modal shown before deleting a thread.
Scope dropdown overlay that consumes option navigation while focused.
Scope dropdown that keeps focus contained while its menu is open.
Modal dialog for browsing and resuming threads.
Soft-wrapping text input for free-form ask-user questions.
Posted when the user presses Enter to submit the answer.
Interactive widget for asking the user questions.
Message sent when user submits all answers.
Message sent when user cancels the ask_user prompt.
Modal dialog for switching between available agents.
Dismissal payload identifying which action the user picked.
Posted when a notification row is clicked with the mouse.
Posted when the user picks SUPPRESS from a notification's detail modal.
Modal listing pending notifications with drill-in details.
Animated spinner using charset-appropriate frames.
Animated loading indicator with status text and elapsed time.
Strategy for building a tool's HITL approval widget.
Renderer for write_file tool - shows full file content.
Renderer for task tool — interrupt description provides full context.
Renderer for edit_file tool - shows unified diff.
Outcome of an AuthPromptScreen interaction.
Confirmation overlay shown before clearing a stored credential.
Modal that captures and persists an API key for one provider.
Modal that lists configured providers and lets the user manage keys.
A selectable tool item in the MCP viewer.
Read-only modal for a failed MCP server's error details.
A selectable server-header row in the MCP viewer.
Modal viewer for active MCP servers and their tools.
Approval menu using standard Textual patterns.
Message sent when user makes a decision.
Posted when the changelog row is clicked with the mouse.
Modal dedicated to the update-available notification.
Raised by MCPLoginScreen.action_cancel when the user cancels the flow.
Modal that renders the OAuth login flow and collects user input.
Widget for displaying a unified diff with syntax highlighting.
Modal dialog for managing startup warning preferences.
Base class for tool approval widgets.
Generic approval widget for unknown tools.
Approval widget for write_file - shows file content with syntax highlighting.
Approval widget for edit_file - shows clean diff with colors.
Modal dialog for theme selection with live preview.
A clickable completion option in the autocomplete popup.
Message sent when a completion option is clicked.
Popup widget that displays completion suggestions as clickable options.
Message sent when a completion option is clicked.
TextArea subclass with custom key handling for chat input.
Message sent when text is submitted.
Request previous history entry.
Request next history entry.
Message sent when paste payload resolves to file paths.
Posted when the user presses a printable key or backspace.
Chat input widget with prompt, multi-line text, autocomplete, and history.
Message sent when input is submitted.
Message sent when input mode changes.
Posted when the user presses a printable key or backspace in the input.
Result of handling a key event in the completion system.
Protocol for views that can display completion suggestions.
Protocol for completion controllers.
Controller for / slash command completion.
Controller for @ file completion with fuzzy matching from project root.
Manages multiple completion controllers, delegating to the active one.
A label that displays a model name, right-aligned with smart truncation.
Status bar showing mode, auto-approve, cwd, git branch, tokens, and model.
First-step onboarding screen that asks for the user's name.
Onboarding screen that summarizes installed optional integrations.
Modal asking whether to restart the server after an MCP login.
Confirmation overlay for /mcp reconnect --force with no pending login.
Manages command history with file persistence.
Posted when an _ActionOption is clicked with the mouse.
Modal displaying a single notification's title, body, and actions.
A clickable model option in the selector.
Message sent when a model option is clicked.
Full-screen modal for model selection.
Modal that shows self-update progress and a bounded log tail.
Result of formatting tool output for display.
Widget displaying a user message.
Widget displaying a queued (pending) user message in grey.
Widget displaying a skill invocation with collapsible body.
Widget displaying an assistant message with markdown support.
Widget displaying a tool call with collapsible output.
Widget displaying a diff with syntax highlighting.
Widget displaying an error message.
Widget displaying an app message.
Widget displaying a summarization completion notification.
Format an auth manager badge for a provider.
Format a model selector provider-header indicator.
Print a model-usage stats table to a Rich console.
Execute a task with output directed to Textual UI.
Persist theme preference to ~/.deepagents/config.toml.
Persist a [ui.terminal_themes][term_program] = name entry.
Run the Textual application.
Copy text to the system clipboard.
Copy selected text from app widgets to clipboard.
Check for updates using only a fresh local cache entry.
Fetch the latest deepagents-code version from PyPI, with caching.
Return the cached ISO-8601 upload time for version, or None.
Return a human-readable age for version (e.g., 'released 3d ago').
Return ", released Nd ago" for version, or "" when unknown.
Return " (released Nd ago)" for version, or "" when unknown.
Return " (N days old)" for installed versions at least a week old.
Return the ISO-8601 upload time for deepagents SDK version.
Return a human-readable age for SDK version (e.g., 'released 3d ago').
Return ", released Nd ago" for SDK version, or "" when unknown.
Return whether the user should be notified about version latest.
Record that the user was notified about version latest.
Clear the "already notified" marker so the update modal re-opens next launch.
Check whether a newer version of deepagents-code is available.
Detect how deepagents-code was installed.
Return the shell command to upgrade deepagents-code.
Remove old update logs while preserving the newest recent logs.
Return a new timestamped update log path and clean stale logs.
Attempt to upgrade deepagents-code using the detected install method.
Return whether extra is safe to embed in package-extra syntax.
Return whether package is safe to embed in a --with install command.
Return the shell command that adds a package to the dcode tool env.
Return the uv command that installs the exact set of dcode extras.
Return the shell command that adds extra to the installed dcode tool.
Return the canonical action hint for editable installs missing an extra.
Return the canonical action hint for editable installs needing a package.
Add extra to the installed dcode tool environment.
Add an arbitrary package to the installed dcode tool environment.
Return whether update checks are enabled.
Return whether auto-update is enabled.
Persist the auto-update preference to config.toml.
Return the last version the user saw the "what's new" banner for.
Record that the user has seen the "what's new" banner for version.
Return True if this is the first launch on a newer version.
Check if optional dependencies are installed.
Check for recommended external tools and return missing tool names.
Build a PendingNotification for a missing optional tool.
Format a missing-tool warning for non-interactive console output.
Parse command line arguments.
Run the Textual TUI interface (async version).
Read piped stdin and merge it into the parsed CLI arguments.
Entry point for console script.
Truncate a string value if it exceeds max_length.
Format tool calls for display with tool-specific smart formatting.
Convert ToolMessage content into a printable string.
Return all stored credentials keyed by provider name.
Return the stored API key for provider, or None if unset.
Return the base URL paired with provider's stored key, or None.
Persist an API key for provider.
Remove a stored credential for provider.
Return providers that currently have a stored credential, sorted.
Detect deceptive or hidden Unicode code points in text.
Remove known dangerous/invisible Unicode characters from text.
Neutralize control characters and deceptive Unicode in untrusted text.
Render hidden Unicode characters as explicit markers.
Summarize Unicode issues for warning messages.
Join safety warnings into a display string with overflow indicator.
Check a URL for suspicious Unicode and domain spoofing patterns.
Flatten nested dict/list structures into key-path/string pairs.
Return whether a key path suggests URL-like content.
Run a single task non-interactively and exit.
Restore iTerm2 cursor guide when launch-time profile state required it.
Attach a file handler to target when DEEPAGENTS_CODE_DEBUG is set.
Resolve an MCP config dict for login without printing anything.
Pull server out of a resolved config and validate its shape.
Build the CLI-style hint string for skipped untrusted project configs.
Format a duration in seconds into a human-readable string.
Read macOS's "24-Hour Time" preference (AppleICUForce24HourTime).
Whether the system is configured for a 24-hour clock.
Format a message timestamp for display.
Read the server project context from environment transport data.
Find the project root by looking for git metadata.
Find project-specific AGENTS.md file(s).
Search the web using Tavily for current information and documentation.
Fetch content from a URL and convert HTML to markdown format.
Add a --json flag to an argparse parser.
Write a JSON envelope to stdout and flush.
Return the read-only theme registry, building it on first access.
Rebuild the theme registry from disk.
Return custom CSS variable defaults for the given mode.
Return the ThemeColors for the active Textual theme.
Return the first-run onboarding marker path.
Return whether the user has completed onboarding.
Persist that onboarding has completed.
Persist the optional onboarding name into user agent memory.
Return whether onboarding should open at interactive startup.
List subagents from user and/or project directories.
Resolve editor command from environment.
Open current_text in an external editor.
Return the default per-process Unix socket path.
Decode one newline-delimited JSON external event.
Concatenate all section functions into the full detection script.
Compute a SHA-256 fingerprint over sorted, concatenated config contents.
Check whether a project's MCP config is trusted with the given fingerprint.
Persist trust for a project's MCP config.
Remove trust for a project's MCP config.
Start a LangGraph server and return a connected remote agent client.
Async context manager that starts a server and guarantees cleanup.
Return whether the attached terminal should be treated as kitty-aware.
Fire matching hook commands with payload serialized as JSON on stdin.
Schedule dispatch_hook as a background task with a strong reference.
Return the set of server names the user has disabled.
Return True when server_name is in the disabled set.
Add or remove server_name from the persistent disabled set.
Locate the effective git metadata directory for a path.
Locate the repository root for a path.
Read the current git branch from repository metadata.
Fall back to git rev-parse for unusual repository layouts.
Resolve the current git branch with a filesystem-first strategy.
Create the agent graph from environment-based configuration.
Extract skill name and args from a /skill:<name> command.
Build autocomplete entries for discovered skills.
Register the dcode mcp command group.
Handle dcode mcp login <server>.
Handle dcode mcp config.
Return the longest mode prefix and mode for text, if any.
Get the glyph set for the current charset mode.
Reset the glyphs cache (for testing).
Check whether the terminal is in ASCII charset mode.
Return the terminal-appropriate label for the newline keyboard shortcut.
Get the appropriate banner for the current charset mode.
Build the LangGraph stream config dict.
Parse shell allow-list from string.
Check if a command contains dangerous shell patterns.
Check if a shell command is in the allow-list.
Resolve the LangSmith project name if tracing is configured.
Fetch the LangSmith project URL, raising on any failure.
Fetch the LangSmith project URL, returning None on any failure.
Build a full LangSmith thread URL if tracing is configured.
Reset the LangSmith URL cache (for testing).
Get the default coding agent instructions.
Auto-detect provider from model name.
Create a chat model.
Validate that the model has required capabilities for deepagents.
Move legacy state entries from config_dir into state_dir.
Render the installable extras grouped by category as plain text.
Return installed optional dependencies grouped by extra.
Return extras with at least one installed dependency.
Return installed and missing optional dependencies grouped by extra.
Return the installable extra that declares a package.
Check that langchain-quickjs is installed for the --interpreter flag.
Render an ExtrasStatus mapping as column-aligned plain text.
Render an ExtrasStatus mapping as a markdown fragment.
Compute a unified diff between before and after content.
Convert a virtual/relative path to a physical filesystem path.
Format a path for display.
Collect summary info and diff for HITL approvals.
Return whether env var name is set to a recognizably truthy value.
Resolve ${VAR} env-var references in header values.
Construct an OAuthClientProvider for an MCP server.
Return a token-safe single-line summary of an OAuth-login exception.
Find an MCPReauthRequiredError anywhere inside exc's tree.
Drive OAuth login for server_name, persisting tokens on success.
Build the server base URL.
Generate a langgraph.json config file for langgraph dev.
Poll a LangGraph server health endpoint until it responds.
Extract @file mentions and return the text with resolved file paths.
Parse a paste payload that may contain dragged-and-dropped file paths.
Parse dropped-path payload variants through one entrypoint.
Parse and resolve a single pasted path payload.
Extract and resolve a leading pasted path token from input text.
Normalize pasted text that may represent a single filesystem path.
Format offload retention settings into a human-readable limit string.
Write messages to backend storage before offloading.
Execute the offload workflow: summarize old messages and free context.
Argparse type for integer arguments that must be >= 1.
Show top-level help information.
Show help information for the list subcommand.
Show help information for the agents subcommand.
Show help information for the reset subcommand.
Show help information for the skills subcommand.
Show help information for the skills list subcommand.
Show help information for the skills create subcommand.
Show help information for the skills info subcommand.
Show help information for the skills delete subcommand.
Show help information for the update subcommand.
Show help information for the mcp subcommand.
Show help information for the mcp login subcommand.
Show help information for the mcp config subcommand.
Show help information for the threads subcommand.
Show help information for the threads delete subcommand.
Show help information for the threads list subcommand.
Attempt to read an image from the system clipboard.
Read and encode an image file from disk.
Read and encode a video file from disk.
Try to load a file as an image first, then as a video.
Encode raw bytes to a base64 string.
Create multimodal message content with text, images, and videos.
Load and validate MCP configuration from a JSON file.
Find MCP config files from standard locations.
Split discovered config paths into user-level and project-level configs.
Extract stdio server entries from a parsed MCP config.
Return (name, kind, summary) for every server in a project config.
Merge multiple MCP config dicts by server name.
Load an MCP config file, returning None on any error.
Load an MCP config file, returning (config, error).
Load MCP tools from a configuration file.
Resolve MCP config and load tools.
Best-effort write of a terminal control sequence.
Write an OSC <command>;<payload> sequence.
Set the terminal's OSC 9;4 progress indicator.
Clear the terminal's progress indicator.
Set the terminal's dynamic default background color with OSC 11.
Reset the terminal's dynamic default background color with OSC 111.
Render an exception from RemoteAgent.astream for the UI.
Return whichever env var name actually carries the resolved value.
Look up an env var with DEEPAGENTS_CODE_ prefix override.
Reset module-level caches so the next call recomputes from scratch.
Get available models dynamically from installed LangChain provider packages.
Load upstream profiles merged with config.toml overrides.
Resolve the credential value for provider from any configured source.
Return credential readiness details for a provider.
Check if credentials are available for a provider.
Return the env var name that holds credentials for a provider.
Return the canonical base-URL env var name for a provider.
Return the env var that supplies a provider's endpoint when none is stored.
Export this provider's stored key and endpoint into os.environ.
Log when a provider's key and endpoint resolve from different env tiers.
Update the default model in config file.
Remove the default model from the config file.
Check if a warning key is suppressed in the config file.
Add a warning key to the suppression list in the config file.
Remove a warning key from the suppression list in the config file.
Load all thread-selector settings from one config file read.
Clear the cached ThreadConfig so the next load re-reads disk.
Load thread column visibility from config file.
Save thread column visibility to config file.
Load the relative-time display preference for thread timestamps.
Save the relative-time display preference for thread timestamps.
Load the sort order preference for the thread selector.
Save the sort order preference for the thread selector.
Update the recently used model in config file.
Read the most-recent-first list of provider:model specs.
Promote model_spec to the front of the recent-models MRU list.
Update the recently used agent in config file.
Read [agents].recent from the config file.
Update the default agent in config file.
Remove the default agent from the config file.
Read [agents].default from the config file.
Load async subagent definitions from config.toml.
Return a sorted list of available agent names from ~/.deepagents/.
List all available agents.
Reset an agent to default or copy from another agent.
Build the ### Model Identity section for the system prompt.
Get the base system prompt for the agent.
Create a CLI-configured agent with flexible options.
Format a token count into a human-readable short string.
Format ISO timestamp for display (e.g., 'Dec 30, 6:10pm').
Format ISO timestamp as relative time (e.g., '5m ago', '2h ago').
Format a filesystem path for display.
Get path to global database.
Generate a new thread ID as a full UUID7 string.
List threads from checkpoints table.
Populate message_count for an existing thread list.
Populate checkpoint-derived fields for an existing thread list.
Prewarm thread selector cache for faster /threads open.
Get cached recent threads, if available.
Apply cached message counts onto thread rows when freshness matches.
Apply cached initial prompts onto thread rows when freshness matches.
Populate initial_prompt for thread rows in the background.
Get most recent thread_id, optionally filtered by agent.
Get agent_name for a thread.
Check if a thread exists in checkpoints.
Find threads whose IDs start with the given prefix.
Delete thread checkpoints.
Get AsyncSqliteSaver for the global database.
Read the thread listing limit from DA_CLI_RECENT_THREADS.
CLI handler for deepagents threads list.
CLI handler for: deepagents threads delete.
Report a server graph startup failure to the parent app process.
Create or connect to a sandbox of the specified provider.
Get the default working directory for a given sandbox provider.
Check that the required packages for a sandbox provider are installed.
Discover skills and build pre-resolved containment roots.
Build the wrapped prompt and persisted metadata for a skill.
Setup the skills subcommand parser with all its subcommands.
Execute skills subcommands based on parsed arguments.
List skills from built-in, user, and/or project directories.
Read the full raw SKILL.md content for a skill.
Return the provider policy that owns server_url.
Build a footer shown while waiting for the server to connect.
Build the footer shown at the bottom of the welcome banner.
Get the renderer for a tool by name.
Yield per-line Static widgets for a unified diff.
Open url in a browser and toast on failure.
Open the URL from a Rich link style on click, if present.
Deep Agents Code - Interactive AI coding assistant.
Shared provider auth status formatting.
Textual UI adapter for agent execution.
Textual UI application.
Registry of pending actionable notifications.
Clipboard utilities.
Update lifecycle for deepagents-code.
Main entry point and loop.
Ask user middleware for interactive question-answering during agent execution.
Formatting utilities for tool call display in the app.
User-level credential storage for model providers.
Unicode security helpers for deceptive text and URL checks.
Non-interactive execution mode.
iTerm2 cursor guide workaround for Textual alternate-screen rendering.
UI-agnostic interaction interface for MCP OAuth login.
UI-agnostic helpers for resolving an MCP login target.
Lightweight text-formatting helpers.
Utilities for project root detection and project-specific configuration.
Custom tools for the agent.
Machine-readable JSON output helpers for CLI subcommands.
LangChain brand colors and semantic constants for the app.
First-run onboarding state for the interactive TUI.
Subagent loader for app.
External editor support for composing prompts.
Middleware that persists per-checkpoint state needed to resume a thread.
External event ingress for the Textual app.
Normalize empty ls/glob tool output for the model.
Middleware for injecting local context into system prompt.
Trust store for project-level MCP server configurations.
Server lifecycle orchestration for the app.
Terminal capability detection.
Lightweight hook dispatch for external tool integration.
Persistent store of MCP server names the user has disabled.
Server-side graph entry point for langgraph dev.
Unified slash-command registry.
CLI commands of the MCP module.
Middleware for runtime model selection via LangGraph runtime context.
Configuration, constants, and model creation.
One-time migration of legacy state files into ~/.deepagents/.state/.
Inspect optional-dependency install status for the running distribution.
Helpers for tracking file operations and computing diffs for display.
OAuth login flow and token storage for MCP servers.
LangGraph server lifecycle management for the app.
Input handling utilities including image/video tracking and file mention parsing.
Business logic for the /offload command.
Help screens and argparse utilities for the app.
Utilities for handling image and video media from clipboard and files.
MCP (Model Context Protocol) tools loader.
Best-effort writer for terminal escape/control sequences.
Remote agent client — thin wrapper around LangGraph's RemoteGraph.
Model configuration management.
Agent management and creation.
Thread management using LangGraph's built-in checkpoint persistence.
Integrations for external systems used by the Deep Agents Code.
Sandbox provider interface used by Deep Agents Code.
Sandbox lifecycle management with provider abstraction.
Skills module for Deep Agents Code.
Helpers for loading and formatting skill invocations.
CLI commands for skill management.
Skill loader for CLI commands.
Provider-specific MCP OAuth dispatch.
GitHub-hosted MCP OAuth provider.
Policy interface for provider-specific MCP OAuth quirks.
Slack-hosted MCP OAuth provider.
Textual widgets for deepagents-code.
Welcome banner widget.
Message store for virtualized chat history.
Interactive thread selector screen for /threads command.
Ask user widget for interactive questions during agent execution.
Interactive agent selector screen for /agents command.
Notification center modal for pending actionable notices.
Loading widget with animated spinner for agent activity.
Tool renderers for approval widgets - registry pattern.
TUI screens for managing stored model-provider credentials.
Read-only MCP server and tool viewer modal.
Approval widget for HITL - using standard Textual patterns.
Dedicated modal for the update-available notification.
In-TUI MCP OAuth login modal.
Enhanced diff widget for displaying unified diffs.
Notification settings screen for /notifications command.
Tool-specific approval widgets for HITL display.
Interactive theme selector screen for /theme command.
Chat input widget for deepagents-code with autocomplete and history support.
Autocomplete system for @ mentions and / commands.
Status bar widget.
Onboarding screens for the interactive TUI.
Confirmation modal shown after a successful MCP login.
Command history manager for input persistence.
Generic detail modal for a single pending notification.
Interactive model selector screen for /model command.
Progress modal for app self-update installs.
Message widgets.
Built-in skills that ship with the Deep Agents Code.