> [!CAUTION] > Merging this PR will automatically publish to **PyPI** and create a **GitHub release**. For the full release process, see [`.github/RELEASING.md`](https://github.com/langchain-ai/deepagents/blob/main/.github/RELEASING.md). --- _Release notes preview: keep this section in sync with the package `CHANGELOG.md`. The published GitHub release body is extracted from the merged `CHANGELOG.md` by `release.yml`, not from this PR description._ --- ## [0.1.42](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.1.41...deepagents-code==0.1.42) (2026-07-17) ### Features - Plugins are now generally available. ([#4797](https://github.com/langchain-ai/deepagents/issues/4797)) - Added search to the plugin list and now summarize plugin changes after reloads. ([#4765](https://github.com/langchain-ai/deepagents/issues/4765), [#4767](https://github.com/langchain-ai/deepagents/issues/4767)) - Added Kimi K3 to the OpenRouter model selector. ([#4803](https://github.com/langchain-ai/deepagents/issues/4803)) - Added hidden `connect` and `reconnect` keywords for `/restart`. ([#4807](https://github.com/langchain-ai/deepagents/issues/4807)) - Debug Console thread IDs can now be clicked to copy, with an added LangSmith link. ([#4760](https://github.com/langchain-ai/deepagents/issues/4760)) - Added auto-approve (YOLO) mode to trace metadata. ([#4764](https://github.com/langchain-ai/deepagents/issues/4764)) ### Bug Fixes - Improved plugin marketplace loading and onboarding, including asynchronous marketplace additions and polish for empty marketplace states. ([#4766](https://github.com/langchain-ai/deepagents/issues/4766), [#4759](https://github.com/langchain-ai/deepagents/issues/4759)) - Clarified plugin component discovery and reload status. ([#4774](https://github.com/langchain-ai/deepagents/issues/4774)) - Avoided blocking MCP OAuth token refresh. ([#4770](https://github.com/langchain-ai/deepagents/issues/4770)) - Restored keyboard focus for marketplace details. ([#4763](https://github.com/langchain-ai/deepagents/issues/4763)) - Dismissed the startup tip when submitting an initial prompt with `-m`. ([#4779](https://github.com/langchain-ai/deepagents/issues/4779)) _End release notes preview._ --- > [!NOTE] > A **New Contributors** section is appended to the GitHub release notes automatically at publish time (see [Release Pipeline](https://github.com/langchain-ai/deepagents/blob/main/.github/RELEASING.md#release-pipeline), step 2). --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: langchain-oss-automated-triage[bot] <248757908+langchain-oss-automated-triage[bot]@users.noreply.github.com>
Async Subagent Server
A self-hosted Agent Protocol server that exposes a Deep Agents researcher as an async subagent. Use this as a starting point for hosting your own agent on any infrastructure and connecting it to a Deep Agents supervisor.
The example includes both sides of the pattern:
server.py— the FastAPI server your subagent runs onsupervisor.py— an interactive REPL showing how to connect to it
Prerequisites
ANTHROPIC_API_KEY— requiredTAVILY_API_KEY— optional; stub search is used if not set
Quickstart
1. Install dependencies:
cd examples/async-subagent-server
uv sync
2. Set up your environment:
cp .env.example .env
# fill in ANTHROPIC_API_KEY (and optionally TAVILY_API_KEY)
3. Start the server:
uv run uvicorn server:app --port 2024
4. In another terminal, start the supervisor:
cd examples/async-subagent-server
ANTHROPIC_API_KEY=... uv run python supervisor.py
Try these prompts:
> research the latest developments in quantum computing
> check status of <task-id>
> update <task-id> to focus on commercial applications only
> cancel <task-id>
> list all tasks
Implemented endpoints
These are the Agent Protocol endpoints the Deep Agents async subagent middleware calls (via the LangGraph SDK):
| Endpoint | Purpose |
|---|---|
POST /threads |
Create a thread for a new task |
POST /threads/{thread_id}/runs |
Start or interrupt+restart a run |
GET /threads/{thread_id}/runs/{run_id} |
Poll run status |
GET /threads/{thread_id} |
Fetch thread state (values.messages) |
POST /threads/{thread_id}/runs/{run_id}/cancel |
Cancel a run |
GET /ok |
Health check |
Swap in your own agent
Replace the create_deep_agent call in server.py with your own agent. The Agent Protocol layer stays the same regardless of what the agent does.
_agent = create_deep_agent(
model=ChatAnthropic(model="claude-sonnet-4-5"),
system_prompt="You are a ...",
tools=[your_tool],
)
⚠️ For demonstration purposes only
This example is intended to illustrate the self-hosted async subagent pattern. It does not feature authentication, rate limiting, or other features required for production use.
Resources
- LangChain Academy — Comprehensive, free courses on LangChain libraries and products, made by the LangChain team.
- Code of Conduct — community guidelines and standards