deepagents-cli 0.1.1__tar.gz → 0.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. {deepagents_cli-0.1.1 → deepagents_cli-0.2.0}/.gitignore +2 -0
  2. {deepagents_cli-0.1.1 → deepagents_cli-0.2.0}/CHANGELOG.md +26 -1
  3. {deepagents_cli-0.1.1 → deepagents_cli-0.2.0}/PKG-INFO +69 -22
  4. deepagents_cli-0.2.0/README.md +111 -0
  5. {deepagents_cli-0.1.1 → deepagents_cli-0.2.0}/deepagents_cli/_version.py +1 -1
  6. {deepagents_cli-0.1.1 → deepagents_cli-0.2.0}/deepagents_cli/config.py +43 -0
  7. deepagents_cli-0.2.0/deepagents_cli/deploy/__init__.py +17 -0
  8. deepagents_cli-0.2.0/deepagents_cli/deploy/api_client.py +358 -0
  9. deepagents_cli-0.2.0/deepagents_cli/deploy/commands.py +1058 -0
  10. deepagents_cli-0.2.0/deepagents_cli/deploy/mcp_resolver.py +122 -0
  11. deepagents_cli-0.2.0/deepagents_cli/deploy/payload.py +156 -0
  12. deepagents_cli-0.2.0/deepagents_cli/deploy/project.py +566 -0
  13. deepagents_cli-0.2.0/deepagents_cli/deploy/state.py +111 -0
  14. {deepagents_cli-0.1.1 → deepagents_cli-0.2.0}/deepagents_cli/main.py +20 -14
  15. deepagents_cli-0.2.0/examples/deploy-content-writer/.env.example +8 -0
  16. deepagents_cli-0.2.0/examples/deploy-content-writer/AGENTS.md +21 -0
  17. deepagents_cli-0.2.0/examples/deploy-content-writer/agent.json +8 -0
  18. deepagents_cli-0.2.0/examples/deploy-content-writer/tools.json +13 -0
  19. {deepagents_cli-0.1.1 → deepagents_cli-0.2.0}/pyproject.toml +3 -28
  20. deepagents_cli-0.2.0/tests/unit_tests/deploy/fixtures/__init__.py +0 -0
  21. deepagents_cli-0.2.0/tests/unit_tests/deploy/fixtures/projects/.gitkeep +0 -0
  22. deepagents_cli-0.2.0/tests/unit_tests/deploy/fixtures/projects/bare/AGENTS.md +3 -0
  23. deepagents_cli-0.2.0/tests/unit_tests/deploy/fixtures/projects/bare/agent.json +4 -0
  24. deepagents_cli-0.2.0/tests/unit_tests/deploy/fixtures/projects/bare/expected_payload.json +5 -0
  25. deepagents_cli-0.2.0/tests/unit_tests/deploy/fixtures/projects/subagent_with_local_skills/AGENTS.md +1 -0
  26. deepagents_cli-0.2.0/tests/unit_tests/deploy/fixtures/projects/subagent_with_local_skills/agent.json +1 -0
  27. deepagents_cli-0.2.0/tests/unit_tests/deploy/fixtures/projects/subagent_with_local_skills/expected_payload.json +21 -0
  28. deepagents_cli-0.2.0/tests/unit_tests/deploy/fixtures/projects/subagent_with_local_skills/subagents/researcher/AGENTS.md +1 -0
  29. deepagents_cli-0.2.0/tests/unit_tests/deploy/fixtures/projects/subagent_with_local_skills/subagents/researcher/agent.json +1 -0
  30. deepagents_cli-0.2.0/tests/unit_tests/deploy/fixtures/projects/subagent_with_local_skills/subagents/researcher/skills/note/SKILL.md +5 -0
  31. deepagents_cli-0.2.0/tests/unit_tests/deploy/fixtures/projects/subagent_with_local_skills/subagents/researcher/tools.json +1 -0
  32. deepagents_cli-0.2.0/tests/unit_tests/deploy/fixtures/projects/with_skills/AGENTS.md +1 -0
  33. deepagents_cli-0.2.0/tests/unit_tests/deploy/fixtures/projects/with_skills/agent.json +1 -0
  34. deepagents_cli-0.2.0/tests/unit_tests/deploy/fixtures/projects/with_skills/expected_payload.json +15 -0
  35. deepagents_cli-0.2.0/tests/unit_tests/deploy/fixtures/projects/with_skills/skills/summarize/SKILL.md +8 -0
  36. deepagents_cli-0.2.0/tests/unit_tests/deploy/fixtures/projects/with_skills/skills/summarize/examples.md +2 -0
  37. deepagents_cli-0.2.0/tests/unit_tests/deploy/fixtures/projects/with_subagents/AGENTS.md +1 -0
  38. deepagents_cli-0.2.0/tests/unit_tests/deploy/fixtures/projects/with_subagents/agent.json +1 -0
  39. deepagents_cli-0.2.0/tests/unit_tests/deploy/fixtures/projects/with_subagents/expected_payload.json +16 -0
  40. deepagents_cli-0.2.0/tests/unit_tests/deploy/fixtures/projects/with_subagents/subagents/researcher/AGENTS.md +1 -0
  41. deepagents_cli-0.2.0/tests/unit_tests/deploy/fixtures/projects/with_subagents/subagents/researcher/agent.json +1 -0
  42. deepagents_cli-0.2.0/tests/unit_tests/deploy/fixtures/projects/with_subagents/subagents/researcher/tools.json +1 -0
  43. deepagents_cli-0.2.0/tests/unit_tests/deploy/fixtures/projects/with_tools/AGENTS.md +1 -0
  44. deepagents_cli-0.2.0/tests/unit_tests/deploy/fixtures/projects/with_tools/agent.json +1 -0
  45. deepagents_cli-0.2.0/tests/unit_tests/deploy/fixtures/projects/with_tools/expected_payload.json +17 -0
  46. deepagents_cli-0.2.0/tests/unit_tests/deploy/fixtures/projects/with_tools/tools.json +13 -0
  47. deepagents_cli-0.2.0/tests/unit_tests/deploy/test_agents_command.py +122 -0
  48. deepagents_cli-0.2.0/tests/unit_tests/deploy/test_api_client.py +446 -0
  49. deepagents_cli-0.2.0/tests/unit_tests/deploy/test_config.py +89 -0
  50. deepagents_cli-0.2.0/tests/unit_tests/deploy/test_deploy_command.py +439 -0
  51. deepagents_cli-0.2.0/tests/unit_tests/deploy/test_init_command.py +100 -0
  52. deepagents_cli-0.2.0/tests/unit_tests/deploy/test_mcp_resolver.py +118 -0
  53. deepagents_cli-0.2.0/tests/unit_tests/deploy/test_mcp_servers_command.py +731 -0
  54. deepagents_cli-0.2.0/tests/unit_tests/deploy/test_payload.py +103 -0
  55. deepagents_cli-0.2.0/tests/unit_tests/deploy/test_project.py +477 -0
  56. deepagents_cli-0.2.0/tests/unit_tests/deploy/test_state.py +84 -0
  57. deepagents_cli-0.2.0/uv.lock +2083 -0
  58. deepagents_cli-0.1.1/README.md +0 -49
  59. deepagents_cli-0.1.1/deepagents_cli/deploy/__init__.py +0 -27
  60. deepagents_cli-0.1.1/deepagents_cli/deploy/bundler.py +0 -583
  61. deepagents_cli-0.1.1/deepagents_cli/deploy/commands.py +0 -733
  62. deepagents_cli-0.1.1/deepagents_cli/deploy/config.py +0 -863
  63. deepagents_cli-0.1.1/deepagents_cli/deploy/context_hub.py +0 -341
  64. deepagents_cli-0.1.1/deepagents_cli/deploy/frontend_dist/assets/anonymous-B9UzAXQd.js +0 -1
  65. deepagents_cli-0.1.1/deepagents_cli/deploy/frontend_dist/assets/clerk-5xHgyQyG.js +0 -23
  66. deepagents_cli-0.1.1/deepagents_cli/deploy/frontend_dist/assets/highlighted-body-OFNGDK62-rX-7qT8o.js +0 -1
  67. deepagents_cli-0.1.1/deepagents_cli/deploy/frontend_dist/assets/index-DM3gptpu.js +0 -205
  68. deepagents_cli-0.1.1/deepagents_cli/deploy/frontend_dist/assets/index-Ddy7F6KI.css +0 -1
  69. deepagents_cli-0.1.1/deepagents_cli/deploy/frontend_dist/assets/supabase-S6NACDgm.js +0 -44
  70. deepagents_cli-0.1.1/deepagents_cli/deploy/frontend_dist/index.html +0 -16
  71. deepagents_cli-0.1.1/deepagents_cli/deploy/frontend_dist/logo-dark.svg +0 -12
  72. deepagents_cli-0.1.1/deepagents_cli/deploy/frontend_dist/logo-light.svg +0 -12
  73. deepagents_cli-0.1.1/deepagents_cli/deploy/templates.py +0 -1163
  74. deepagents_cli-0.1.1/examples/deploy-content-writer/.env.example +0 -2
  75. deepagents_cli-0.1.1/examples/deploy-content-writer/user/context.md +0 -15
  76. deepagents_cli-0.1.1/examples/deploy-content-writer/user/preferences.md +0 -11
  77. deepagents_cli-0.1.1/frontend/.nvmrc +0 -1
  78. deepagents_cli-0.1.1/frontend/index.html +0 -15
  79. deepagents_cli-0.1.1/frontend/package-lock.json +0 -6142
  80. deepagents_cli-0.1.1/frontend/package.json +0 -34
  81. deepagents_cli-0.1.1/frontend/postcss.config.js +0 -5
  82. deepagents_cli-0.1.1/frontend/public/logo-dark.svg +0 -12
  83. deepagents_cli-0.1.1/frontend/public/logo-light.svg +0 -12
  84. deepagents_cli-0.1.1/frontend/src/App.tsx +0 -342
  85. deepagents_cli-0.1.1/frontend/src/ThemeProvider.tsx +0 -66
  86. deepagents_cli-0.1.1/frontend/src/auth/anonymous.tsx +0 -45
  87. deepagents_cli-0.1.1/frontend/src/auth/clerk.tsx +0 -138
  88. deepagents_cli-0.1.1/frontend/src/auth/loader.tsx +0 -26
  89. deepagents_cli-0.1.1/frontend/src/auth/supabase.tsx +0 -236
  90. deepagents_cli-0.1.1/frontend/src/auth/types.ts +0 -22
  91. deepagents_cli-0.1.1/frontend/src/components/AppHeader.tsx +0 -70
  92. deepagents_cli-0.1.1/frontend/src/components/FilePanels.tsx +0 -148
  93. deepagents_cli-0.1.1/frontend/src/components/MessageList.tsx +0 -177
  94. deepagents_cli-0.1.1/frontend/src/components/SubagentActivity.tsx +0 -262
  95. deepagents_cli-0.1.1/frontend/src/components/ThreadPicker.tsx +0 -162
  96. deepagents_cli-0.1.1/frontend/src/components/TodosPanel.tsx +0 -54
  97. deepagents_cli-0.1.1/frontend/src/components/ToolCallCard.tsx +0 -136
  98. deepagents_cli-0.1.1/frontend/src/components/toolcalls/FileToolCard.tsx +0 -126
  99. deepagents_cli-0.1.1/frontend/src/components/toolcalls/SearchCard.tsx +0 -107
  100. deepagents_cli-0.1.1/frontend/src/components/toolcalls/ThinkCard.tsx +0 -60
  101. deepagents_cli-0.1.1/frontend/src/components/toolcalls/TodosCard.tsx +0 -63
  102. deepagents_cli-0.1.1/frontend/src/components/toolcalls/index.ts +0 -51
  103. deepagents_cli-0.1.1/frontend/src/constants.ts +0 -15
  104. deepagents_cli-0.1.1/frontend/src/index.css +0 -220
  105. deepagents_cli-0.1.1/frontend/src/main.tsx +0 -20
  106. deepagents_cli-0.1.1/frontend/src/runtimeConfig.ts +0 -75
  107. deepagents_cli-0.1.1/frontend/src/types.ts +0 -22
  108. deepagents_cli-0.1.1/frontend/src/vite-env.d.ts +0 -1
  109. deepagents_cli-0.1.1/frontend/tsconfig.json +0 -19
  110. deepagents_cli-0.1.1/frontend/vite.config.ts +0 -25
  111. deepagents_cli-0.1.1/tests/integration_tests/test_context_hub.py +0 -206
  112. deepagents_cli-0.1.1/tests/integration_tests/test_deploy_hub.py +0 -191
  113. deepagents_cli-0.1.1/tests/unit_tests/deploy/test_bundler.py +0 -757
  114. deepagents_cli-0.1.1/tests/unit_tests/deploy/test_commands.py +0 -227
  115. deepagents_cli-0.1.1/tests/unit_tests/deploy/test_config.py +0 -711
  116. deepagents_cli-0.1.1/tests/unit_tests/deploy/test_context_hub.py +0 -535
  117. deepagents_cli-0.1.1/tests/unit_tests/deploy/test_frontend_bundle.py +0 -433
  118. deepagents_cli-0.1.1/tests/unit_tests/deploy/test_frontend_config.py +0 -182
  119. deepagents_cli-0.1.1/uv.lock +0 -4031
  120. {deepagents_cli-0.1.1 → deepagents_cli-0.2.0}/DEV.md +0 -0
  121. {deepagents_cli-0.1.1 → deepagents_cli-0.2.0}/Makefile +0 -0
  122. {deepagents_cli-0.1.1 → deepagents_cli-0.2.0}/THREAT_MODEL.md +0 -0
  123. {deepagents_cli-0.1.1 → deepagents_cli-0.2.0}/deepagents_cli/__init__.py +0 -0
  124. {deepagents_cli-0.1.1 → deepagents_cli-0.2.0}/deepagents_cli/__main__.py +0 -0
  125. {deepagents_cli-0.1.1 → deepagents_cli-0.2.0}/deepagents_cli/model_config.py +0 -0
  126. {deepagents_cli-0.1.1 → deepagents_cli-0.2.0}/deepagents_cli/py.typed +0 -0
  127. {deepagents_cli-0.1.1 → deepagents_cli-0.2.0}/examples/deploy-content-writer/skills/blog-post/SKILL.md +0 -0
  128. {deepagents_cli-0.1.1 → deepagents_cli-0.2.0}/examples/deploy-content-writer/skills/social-media/SKILL.md +0 -0
  129. {deepagents_cli-0.1.1 → deepagents_cli-0.2.0}/examples/skills/arxiv-search/SKILL.md +0 -0
  130. {deepagents_cli-0.1.1 → deepagents_cli-0.2.0}/examples/skills/arxiv-search/arxiv_search.py +0 -0
  131. {deepagents_cli-0.1.1 → deepagents_cli-0.2.0}/examples/skills/langgraph-docs/SKILL.md +0 -0
  132. {deepagents_cli-0.1.1 → deepagents_cli-0.2.0}/examples/skills/skill-creator/SKILL.md +0 -0
  133. {deepagents_cli-0.1.1 → deepagents_cli-0.2.0}/examples/skills/skill-creator/scripts/init_skill.py +0 -0
  134. {deepagents_cli-0.1.1 → deepagents_cli-0.2.0}/examples/skills/skill-creator/scripts/quick_validate.py +0 -0
  135. {deepagents_cli-0.1.1 → deepagents_cli-0.2.0}/examples/skills/web-research/SKILL.md +0 -0
  136. {deepagents_cli-0.1.1 → deepagents_cli-0.2.0}/images/cli.png +0 -0
  137. {deepagents_cli-0.1.1 → deepagents_cli-0.2.0}/scripts/check_imports.py +0 -0
  138. {deepagents_cli-0.1.1 → deepagents_cli-0.2.0}/scripts/debug_server.sh +0 -0
  139. {deepagents_cli-0.1.1 → deepagents_cli-0.2.0}/scripts/install.sh +0 -0
  140. {deepagents_cli-0.1.1 → deepagents_cli-0.2.0}/tests/README.md +0 -0
  141. {deepagents_cli-0.1.1 → deepagents_cli-0.2.0}/tests/integration_tests/__init__.py +0 -0
  142. {deepagents_cli-0.1.1 → deepagents_cli-0.2.0}/tests/integration_tests/conftest.py +0 -0
  143. {deepagents_cli-0.1.1 → deepagents_cli-0.2.0}/tests/unit_tests/__init__.py +0 -0
  144. {deepagents_cli-0.1.1 → deepagents_cli-0.2.0}/tests/unit_tests/conftest.py +0 -0
  145. {deepagents_cli-0.1.1 → deepagents_cli-0.2.0}/tests/unit_tests/deploy/__init__.py +0 -0
  146. {deepagents_cli-0.1.1 → deepagents_cli-0.2.0}/tests/unit_tests/test_version.py +0 -0
@@ -138,6 +138,8 @@ celerybeat.pid
138
138
  # Environments
139
139
  .env
140
140
  .envrc
141
+ env.local
142
+ *.env.local
141
143
  .venv
142
144
  env/
143
145
  venv/
@@ -1,8 +1,33 @@
1
+ <!-- markdownlint-disable MD024 -->
2
+
1
3
  # Deep Agents CLI Changelog
2
4
 
3
- From 0.1.0 onward, `deepagents-cli` only contains `deploy`, `dev`, and `init`.
5
+ From 0.2.0 onward, `deepagents-cli` exposes `init`, `deploy`, `agents`, and
6
+ `mcp-servers` against the Managed Deep Agents `/v1/deepagents/*` API.
4
7
  The coding agent (interactive TUI & headless CLI) moved to [`deepagents-code`](https://github.com/langchain-ai/deepagents/blob/main/libs/code/CHANGELOG.md).
5
8
 
9
+ ## [0.2.0](https://github.com/langchain-ai/deepagents/compare/deepagents-cli==0.1.2...deepagents-cli==0.2.0) (2026-06-01)
10
+
11
+
12
+ ### ⚠ BREAKING CHANGES
13
+
14
+ * **cli:** `deepagents deploy` now targets the Managed Deep Agents API; `deepagents dev`, `deepagents.toml`, and the `--config`/`--dry-run` flags are removed. Run `deepagents init` to re-scaffold (`agent.json` + `tools.json`). See [PR](https://github.com/langchain-ai/deepagents/pull/3609) for the full migration guide.
15
+
16
+ ### Features
17
+
18
+ * **cli:** migrate deepagents deploy to use managed deep agents api [AB-2470] ([#3609](https://github.com/langchain-ai/deepagents/issues/3609)) ([72aef52](https://github.com/langchain-ai/deepagents/commit/72aef52542a3fd4a7eebcb3dba40e28adf1aa044))
19
+
20
+
21
+ ### Bug Fixes
22
+
23
+ * **sdk:** stable `HumanMessage` IDs across resumed threads ([#3591](https://github.com/langchain-ai/deepagents/issues/3591)) ([82c3194](https://github.com/langchain-ai/deepagents/commit/82c31947f9dc938ffc71e1cea96d162a39aec3a1))
24
+
25
+ ## [0.1.2](https://github.com/langchain-ai/deepagents/compare/deepagents-cli==0.1.1...deepagents-cli==0.1.2) (2026-05-21)
26
+
27
+ ### Bug Fixes
28
+
29
+ * Expand `${VAR}` in `mcp.json` header values ([#3523](https://github.com/langchain-ai/deepagents/issues/3523)) ([6cfc5f9](https://github.com/langchain-ai/deepagents/commit/6cfc5f9004271c23c486a0b05e8f9f0002e75e2b))
30
+
6
31
  ## [0.1.1](https://github.com/langchain-ai/deepagents/compare/deepagents-cli==0.1.0...deepagents-cli==0.1.1) (2026-05-18)
7
32
 
8
33
  ### Features
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: deepagents-cli
3
- Version: 0.1.1
3
+ Version: 0.2.0
4
4
  Summary: Deployment tooling for Deep Agents - bundle, run, and ship agents to LangGraph Platform.
5
5
  Project-URL: Homepage, https://docs.langchain.com/oss/python/deepagents/overview
6
6
  Project-URL: Documentation, https://reference.langchain.com/python/deepagents/
@@ -27,25 +27,10 @@ Requires-Python: <4.0,>=3.11
27
27
  Requires-Dist: deepagents>=0.6.1
28
28
  Requires-Dist: httpx<1.0.0,>=0.28.1
29
29
  Requires-Dist: langchain<2.0.0,>=1.3.0
30
- Requires-Dist: langgraph-cli[inmem]<1.0.0,>=0.4.24
31
- Requires-Dist: langgraph-runtime-inmem<1.0.0,>=0.28.1
32
30
  Requires-Dist: langgraph-sdk<1.0.0,>=0.3.13
33
31
  Requires-Dist: langgraph<2.0.0,>=1.2.0
34
32
  Requires-Dist: langsmith>=0.8.0
35
33
  Requires-Dist: python-dotenv<2.0.0,>=1.2.2
36
- Provides-Extra: agentcore
37
- Requires-Dist: langchain-agentcore-codeinterpreter>=0.0.2; extra == 'agentcore'
38
- Provides-Extra: all-sandboxes
39
- Requires-Dist: langchain-agentcore-codeinterpreter>=0.0.2; extra == 'all-sandboxes'
40
- Requires-Dist: langchain-daytona>=0.0.5; extra == 'all-sandboxes'
41
- Requires-Dist: langchain-modal>=0.0.3; extra == 'all-sandboxes'
42
- Requires-Dist: langchain-runloop>=0.0.4; extra == 'all-sandboxes'
43
- Provides-Extra: daytona
44
- Requires-Dist: langchain-daytona>=0.0.5; extra == 'daytona'
45
- Provides-Extra: modal
46
- Requires-Dist: langchain-modal>=0.0.3; extra == 'modal'
47
- Provides-Extra: runloop
48
- Requires-Dist: langchain-runloop>=0.0.4; extra == 'runloop'
49
34
  Description-Content-Type: text/markdown
50
35
 
51
36
  # Deep Agents CLI — Deployment Tooling
@@ -55,16 +40,27 @@ Description-Content-Type: text/markdown
55
40
  [![PyPI - Downloads](https://img.shields.io/pepy/dt/deepagents-cli)](https://pypistats.org/packages/deepagents-cli)
56
41
  [![Twitter](https://img.shields.io/twitter/url/https/twitter.com/langchain_oss.svg?style=social&label=Follow%20%40LangChain)](https://x.com/langchain_oss)
57
42
 
43
+ > [!IMPORTANT]
44
+ > **The interactive coding agent moved.** As of `deepagents-cli==0.1.0`, this package contains only the deployment subcommands (`init`, `dev`, `deploy`). The interactive REPL — previously launched via `deepagents` — now ships as [`deepagents-code`](https://docs.langchain.com/deepagents-code) (`dcode`).
45
+ >
46
+ > ```bash
47
+ > curl -LsSf https://langch.in/dcode | bash
48
+ > dcode
49
+ > ```
50
+
58
51
  ## Install
59
52
 
60
53
  ```bash
61
54
  uv tool install deepagents-cli
62
55
  ```
63
56
 
64
- Or with optional sandbox providers:
57
+ You'll need a LangSmith API key with access to the Managed Deep Agents private
58
+ preview ([waitlist](https://www.langchain.com/langsmith-managed-deep-agents-waitlist)).
59
+ Export it before running any command, or put it in a repo `.env` or
60
+ `~/.deepagents/.env`:
65
61
 
66
62
  ```bash
67
- uv tool install 'deepagents-cli[all-sandboxes]'
63
+ export LANGSMITH_API_KEY="..."
68
64
  ```
69
65
 
70
66
  ## Usage
@@ -73,13 +69,64 @@ uv tool install 'deepagents-cli[all-sandboxes]'
73
69
  # Scaffold a new project folder
74
70
  deepagents init my-agent
75
71
 
76
- # Run a local langgraph dev server against the project
77
- cd my-agent && deepagents dev
72
+ # Register any MCP servers you intend to use (one-time, per workspace)
73
+ deepagents mcp-servers add --url https://tools.langchain.com \
74
+ --header X-Api-Key=$LANGSMITH_API_KEY \
75
+ --name Fleet
76
+
77
+ # init scaffolds an empty tools.json. Add tools that reference a registered
78
+ # MCP server's URL (otherwise the agent has no tools), e.g. the Fleet server
79
+ # registered above:
80
+ # { "name": "read_url_content", "mcp_server_url": "https://tools.langchain.com",
81
+ # "mcp_server_name": "Fleet", "display_name": "read_url_content" }
78
82
 
79
- # Bundle and ship to LangSmith Deployment
80
- deepagents deploy
83
+ # Upsert the project as a managed agent on /v1/deepagents/*
84
+ cd my-agent && deepagents deploy
81
85
  ```
82
86
 
87
+ `deepagents init` scaffolds an empty `tools.json`, an example skill under
88
+ `skills/`, and an example subagent under `subagents/`; edit or remove them to
89
+ suit your agent. `tools.json` starts empty because every tool must reference an
90
+ MCP server that is already registered in the workspace
91
+ (`deepagents mcp-servers add`) — so a freshly scaffolded project deploys
92
+ without first registering a server.
93
+
94
+ New agents default to the `default` backend — switch `agent.json`'s
95
+ `backend.type` to `thread_scoped_sandbox` (or `agent_scoped_sandbox`) to opt
96
+ into a managed sandbox. The CLI does not create or run sandboxes locally;
97
+ sandbox lifecycle is handled by the Managed Deep Agents platform.
98
+
99
+ ### Project layout
100
+
101
+ ```text
102
+ my-agent/
103
+ agent.json # name, description, backend, runtime.model, permissions
104
+ AGENTS.md # system prompt
105
+ tools.json # tools the agent can call (optional)
106
+ skills/<name>/SKILL.md # frontmatter-tagged skills (optional)
107
+ subagents/<name>/ # delegated subagent definitions (optional)
108
+ ```
109
+
110
+ ### Other commands
111
+
112
+ ```bash
113
+ deepagents agents list # list workspace agents
114
+ deepagents agents get <agent_id> # show one agent
115
+ deepagents agents delete <agent_id> # delete an agent
116
+
117
+ deepagents mcp-servers list # list workspace MCP servers
118
+ deepagents mcp-servers add --url URL # register a server
119
+ deepagents mcp-servers get <id|name|url> # show one server
120
+ deepagents mcp-servers tools <id|name|url> # list a server's tools
121
+ deepagents mcp-servers update <id|name|url> # update server URL or headers
122
+ deepagents mcp-servers delete <id|name|url> # remove a server
123
+ deepagents mcp-servers connect <id|name|url> # start OAuth for a server
124
+ ```
125
+
126
+ `get`, `update`, `delete`, and `connect` accept an MCP server's id, exact name,
127
+ or URL — a non-id value is resolved against `mcp-servers list` (URLs are matched
128
+ ignoring case and trailing slash).
129
+
83
130
  ## 📖 Resources
84
131
 
85
132
  - **[CLI Documentation](https://docs.langchain.com/oss/python/deepagents/cli/overview)**
@@ -0,0 +1,111 @@
1
+ # Deep Agents CLI — Deployment Tooling
2
+
3
+ [![PyPI - Version](https://img.shields.io/pypi/v/deepagents-cli?label=%20)](https://pypi.org/project/deepagents-cli/#history)
4
+ [![PyPI - License](https://img.shields.io/pypi/l/deepagents-cli)](https://opensource.org/licenses/MIT)
5
+ [![PyPI - Downloads](https://img.shields.io/pepy/dt/deepagents-cli)](https://pypistats.org/packages/deepagents-cli)
6
+ [![Twitter](https://img.shields.io/twitter/url/https/twitter.com/langchain_oss.svg?style=social&label=Follow%20%40LangChain)](https://x.com/langchain_oss)
7
+
8
+ > [!IMPORTANT]
9
+ > **The interactive coding agent moved.** As of `deepagents-cli==0.1.0`, this package contains only the deployment subcommands (`init`, `dev`, `deploy`). The interactive REPL — previously launched via `deepagents` — now ships as [`deepagents-code`](https://docs.langchain.com/deepagents-code) (`dcode`).
10
+ >
11
+ > ```bash
12
+ > curl -LsSf https://langch.in/dcode | bash
13
+ > dcode
14
+ > ```
15
+
16
+ ## Install
17
+
18
+ ```bash
19
+ uv tool install deepagents-cli
20
+ ```
21
+
22
+ You'll need a LangSmith API key with access to the Managed Deep Agents private
23
+ preview ([waitlist](https://www.langchain.com/langsmith-managed-deep-agents-waitlist)).
24
+ Export it before running any command, or put it in a repo `.env` or
25
+ `~/.deepagents/.env`:
26
+
27
+ ```bash
28
+ export LANGSMITH_API_KEY="..."
29
+ ```
30
+
31
+ ## Usage
32
+
33
+ ```bash
34
+ # Scaffold a new project folder
35
+ deepagents init my-agent
36
+
37
+ # Register any MCP servers you intend to use (one-time, per workspace)
38
+ deepagents mcp-servers add --url https://tools.langchain.com \
39
+ --header X-Api-Key=$LANGSMITH_API_KEY \
40
+ --name Fleet
41
+
42
+ # init scaffolds an empty tools.json. Add tools that reference a registered
43
+ # MCP server's URL (otherwise the agent has no tools), e.g. the Fleet server
44
+ # registered above:
45
+ # { "name": "read_url_content", "mcp_server_url": "https://tools.langchain.com",
46
+ # "mcp_server_name": "Fleet", "display_name": "read_url_content" }
47
+
48
+ # Upsert the project as a managed agent on /v1/deepagents/*
49
+ cd my-agent && deepagents deploy
50
+ ```
51
+
52
+ `deepagents init` scaffolds an empty `tools.json`, an example skill under
53
+ `skills/`, and an example subagent under `subagents/`; edit or remove them to
54
+ suit your agent. `tools.json` starts empty because every tool must reference an
55
+ MCP server that is already registered in the workspace
56
+ (`deepagents mcp-servers add`) — so a freshly scaffolded project deploys
57
+ without first registering a server.
58
+
59
+ New agents default to the `default` backend — switch `agent.json`'s
60
+ `backend.type` to `thread_scoped_sandbox` (or `agent_scoped_sandbox`) to opt
61
+ into a managed sandbox. The CLI does not create or run sandboxes locally;
62
+ sandbox lifecycle is handled by the Managed Deep Agents platform.
63
+
64
+ ### Project layout
65
+
66
+ ```text
67
+ my-agent/
68
+ agent.json # name, description, backend, runtime.model, permissions
69
+ AGENTS.md # system prompt
70
+ tools.json # tools the agent can call (optional)
71
+ skills/<name>/SKILL.md # frontmatter-tagged skills (optional)
72
+ subagents/<name>/ # delegated subagent definitions (optional)
73
+ ```
74
+
75
+ ### Other commands
76
+
77
+ ```bash
78
+ deepagents agents list # list workspace agents
79
+ deepagents agents get <agent_id> # show one agent
80
+ deepagents agents delete <agent_id> # delete an agent
81
+
82
+ deepagents mcp-servers list # list workspace MCP servers
83
+ deepagents mcp-servers add --url URL # register a server
84
+ deepagents mcp-servers get <id|name|url> # show one server
85
+ deepagents mcp-servers tools <id|name|url> # list a server's tools
86
+ deepagents mcp-servers update <id|name|url> # update server URL or headers
87
+ deepagents mcp-servers delete <id|name|url> # remove a server
88
+ deepagents mcp-servers connect <id|name|url> # start OAuth for a server
89
+ ```
90
+
91
+ `get`, `update`, `delete`, and `connect` accept an MCP server's id, exact name,
92
+ or URL — a non-id value is resolved against `mcp-servers list` (URLs are matched
93
+ ignoring case and trailing slash).
94
+
95
+ ## 📖 Resources
96
+
97
+ - **[CLI Documentation](https://docs.langchain.com/oss/python/deepagents/cli/overview)**
98
+ - **[Changelog](https://github.com/langchain-ai/deepagents/blob/main/libs/cli/CHANGELOG.md)**
99
+ - **[Source code](https://github.com/langchain-ai/deepagents/tree/main/libs/cli)**
100
+ - **[Deep Agents SDK](https://github.com/langchain-ai/deepagents)** — underlying agent harness
101
+ - **[Deep Agents Code](https://pypi.org/project/deepagents-code/)** — coding agent
102
+
103
+ ## 📕 Releases & Versioning
104
+
105
+ See our [Releases](https://docs.langchain.com/oss/python/release-policy) and [Versioning](https://docs.langchain.com/oss/python/versioning) policies.
106
+
107
+ ## 💁 Contributing
108
+
109
+ 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.
110
+
111
+ For detailed information on how to contribute, see the [Contributing Guide](https://docs.langchain.com/oss/python/contributing/overview).
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Keep the `x-release-please-version` annotation — release-please uses it to
4
4
  # bump `__version__` in sync with `pyproject.toml` on every release PR.
5
- __version__ = "0.1.1" # x-release-please-version
5
+ __version__ = "0.2.0" # x-release-please-version
6
6
 
7
7
  DOCS_URL = "https://docs.langchain.com/oss/python/deepagents/cli"
8
8
  """URL for `deepagents-cli` documentation."""
@@ -3,10 +3,25 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  import logging
6
+ import os
6
7
  import sys
7
8
  from pathlib import Path
8
9
 
9
10
  logger = logging.getLogger(__name__)
11
+ _PROJECT_DOTENV_BLOCKED_ENV_KEYS = (
12
+ "LANGSMITH_ENDPOINT",
13
+ "LANGCHAIN_ENDPOINT",
14
+ "HTTP_PROXY",
15
+ "HTTPS_PROXY",
16
+ "ALL_PROXY",
17
+ "NO_PROXY",
18
+ "http_proxy",
19
+ "https_proxy",
20
+ "all_proxy",
21
+ "no_proxy",
22
+ "SSL_CERT_FILE",
23
+ "SSL_CERT_DIR",
24
+ )
10
25
 
11
26
 
12
27
  def _stderr(msg: str) -> None:
@@ -40,6 +55,30 @@ def _find_dotenv_from_start_path(start_path: Path) -> Path | None:
40
55
  return None
41
56
 
42
57
 
58
+ def _snapshot_blocked_project_env() -> dict[str, str | None]:
59
+ return {key: os.environ.get(key) for key in _PROJECT_DOTENV_BLOCKED_ENV_KEYS}
60
+
61
+
62
+ def _restore_env(snapshot: dict[str, str | None]) -> None:
63
+ for key, value in snapshot.items():
64
+ if value is None:
65
+ os.environ.pop(key, None)
66
+ else:
67
+ os.environ[key] = value
68
+
69
+
70
+ def _warn_if_project_blocked_env_changed(snapshot: dict[str, str | None]) -> None:
71
+ changed = [key for key, value in snapshot.items() if os.environ.get(key) != value]
72
+ if not changed:
73
+ return
74
+ keys = ", ".join(sorted(changed))
75
+ _stderr(
76
+ f"ignoring {keys} from project .env. Set endpoint overrides in your "
77
+ "shell environment or ~/.deepagents/.env; proxy/TLS settings are "
78
+ "ignored for managed API requests.",
79
+ )
80
+
81
+
43
82
  try:
44
83
  _GLOBAL_DOTENV_PATH = Path.home() / ".deepagents" / ".env"
45
84
  except RuntimeError:
@@ -92,10 +131,12 @@ def _load_dotenv(*, start_path: Path) -> bool:
92
131
 
93
132
  dotenv_path = _find_dotenv_from_start_path(start_path)
94
133
  if dotenv_path is not None:
134
+ blocked_env = _snapshot_blocked_project_env()
95
135
  try:
96
136
  loaded = (
97
137
  dotenv.load_dotenv(dotenv_path=dotenv_path, override=False) or loaded
98
138
  )
139
+ _warn_if_project_blocked_env_changed(blocked_env)
99
140
  except (OSError, ValueError) as exc:
100
141
  _stderr(
101
142
  f"could not read project .env at {dotenv_path}: {exc}. "
@@ -107,6 +148,8 @@ def _load_dotenv(*, start_path: Path) -> bool:
107
148
  dotenv_path,
108
149
  exc_info=True,
109
150
  )
151
+ finally:
152
+ _restore_env(blocked_env)
110
153
 
111
154
  try:
112
155
  if _GLOBAL_DOTENV_PATH.is_file() and dotenv.load_dotenv(
@@ -0,0 +1,17 @@
1
+ """Deploy commands for the Managed Deep Agents (`/v1/deepagents/*`) surface."""
2
+
3
+ from deepagents_cli.deploy.commands import (
4
+ execute_agents_command,
5
+ execute_deploy_command,
6
+ execute_init_command,
7
+ execute_mcp_servers_command,
8
+ setup_deploy_parsers,
9
+ )
10
+
11
+ __all__ = [
12
+ "execute_agents_command",
13
+ "execute_deploy_command",
14
+ "execute_init_command",
15
+ "execute_mcp_servers_command",
16
+ "setup_deploy_parsers",
17
+ ]