deepagents-code 0.0.1__tar.gz → 0.1.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 (245) hide show
  1. deepagents_code-0.1.0/CHANGELOG.md +10 -0
  2. deepagents_code-0.1.0/DEV.md +92 -0
  3. deepagents_code-0.1.0/Makefile +91 -0
  4. deepagents_code-0.1.0/PKG-INFO +204 -0
  5. deepagents_code-0.1.0/README.md +71 -0
  6. deepagents_code-0.1.0/THREAT_MODEL.md +478 -0
  7. deepagents_code-0.1.0/deepagents_code/__init__.py +36 -0
  8. deepagents_code-0.1.0/deepagents_code/__main__.py +6 -0
  9. deepagents_code-0.1.0/deepagents_code/_ask_user_types.py +90 -0
  10. deepagents_code-0.1.0/deepagents_code/_cli_context.py +27 -0
  11. deepagents_code-0.1.0/deepagents_code/_constants.py +14 -0
  12. deepagents_code-0.1.0/deepagents_code/_debug.py +52 -0
  13. deepagents_code-0.1.0/deepagents_code/_env_vars.py +182 -0
  14. deepagents_code-0.1.0/deepagents_code/_git.py +236 -0
  15. deepagents_code-0.1.0/deepagents_code/_server_config.py +399 -0
  16. deepagents_code-0.1.0/deepagents_code/_session_stats.py +114 -0
  17. deepagents_code-0.1.0/deepagents_code/_testing_models.py +144 -0
  18. deepagents_code-0.1.0/deepagents_code/_textual_patches.py +66 -0
  19. deepagents_code-0.1.0/deepagents_code/_version.py +26 -0
  20. deepagents_code-0.1.0/deepagents_code/agent.py +1286 -0
  21. deepagents_code-0.1.0/deepagents_code/app.py +8709 -0
  22. deepagents_code-0.1.0/deepagents_code/app.tcss +334 -0
  23. deepagents_code-0.1.0/deepagents_code/ask_user.py +301 -0
  24. deepagents_code-0.1.0/deepagents_code/auth_store.py +363 -0
  25. deepagents_code-0.1.0/deepagents_code/built_in_skills/__init__.py +5 -0
  26. deepagents_code-0.1.0/deepagents_code/built_in_skills/remember/SKILL.md +118 -0
  27. deepagents_code-0.1.0/deepagents_code/built_in_skills/skill-creator/SKILL.md +383 -0
  28. deepagents_code-0.1.0/deepagents_code/built_in_skills/skill-creator/scripts/init_skill.py +366 -0
  29. deepagents_code-0.1.0/deepagents_code/built_in_skills/skill-creator/scripts/quick_validate.py +158 -0
  30. deepagents_code-0.1.0/deepagents_code/clipboard.py +155 -0
  31. deepagents_code-0.1.0/deepagents_code/command_registry.py +358 -0
  32. deepagents_code-0.1.0/deepagents_code/config.py +2567 -0
  33. deepagents_code-0.1.0/deepagents_code/configurable_model.py +201 -0
  34. deepagents_code-0.1.0/deepagents_code/default_agent_prompt.md +12 -0
  35. deepagents_code-0.1.0/deepagents_code/editor.py +142 -0
  36. deepagents_code-0.1.0/deepagents_code/event_bus.py +411 -0
  37. deepagents_code-0.1.0/deepagents_code/extras_info.py +260 -0
  38. deepagents_code-0.1.0/deepagents_code/file_ops.py +473 -0
  39. deepagents_code-0.1.0/deepagents_code/formatting.py +28 -0
  40. deepagents_code-0.1.0/deepagents_code/hooks.py +209 -0
  41. deepagents_code-0.1.0/deepagents_code/input.py +787 -0
  42. deepagents_code-0.1.0/deepagents_code/integrations/__init__.py +1 -0
  43. deepagents_code-0.1.0/deepagents_code/integrations/sandbox_factory.py +899 -0
  44. deepagents_code-0.1.0/deepagents_code/integrations/sandbox_provider.py +71 -0
  45. deepagents_code-0.1.0/deepagents_code/iterm_cursor_guide.py +176 -0
  46. deepagents_code-0.1.0/deepagents_code/local_context.py +738 -0
  47. deepagents_code-0.1.0/deepagents_code/main.py +2241 -0
  48. deepagents_code-0.1.0/deepagents_code/mcp_auth.py +712 -0
  49. deepagents_code-0.1.0/deepagents_code/mcp_commands.py +204 -0
  50. deepagents_code-0.1.0/deepagents_code/mcp_providers/__init__.py +23 -0
  51. deepagents_code-0.1.0/deepagents_code/mcp_providers/_registry.py +39 -0
  52. deepagents_code-0.1.0/deepagents_code/mcp_providers/base.py +99 -0
  53. deepagents_code-0.1.0/deepagents_code/mcp_providers/github.py +91 -0
  54. deepagents_code-0.1.0/deepagents_code/mcp_providers/slack.py +130 -0
  55. deepagents_code-0.1.0/deepagents_code/mcp_tools.py +1532 -0
  56. deepagents_code-0.1.0/deepagents_code/mcp_trust.py +167 -0
  57. deepagents_code-0.1.0/deepagents_code/media_utils.py +478 -0
  58. deepagents_code-0.1.0/deepagents_code/model_config.py +2749 -0
  59. deepagents_code-0.1.0/deepagents_code/non_interactive.py +1197 -0
  60. deepagents_code-0.1.0/deepagents_code/notifications.py +244 -0
  61. deepagents_code-0.1.0/deepagents_code/offload.py +402 -0
  62. deepagents_code-0.1.0/deepagents_code/onboarding.py +188 -0
  63. deepagents_code-0.1.0/deepagents_code/output.py +69 -0
  64. deepagents_code-0.1.0/deepagents_code/project_utils.py +231 -0
  65. deepagents_code-0.1.0/deepagents_code/remote_client.py +537 -0
  66. deepagents_code-0.1.0/deepagents_code/server.py +558 -0
  67. deepagents_code-0.1.0/deepagents_code/server_graph.py +230 -0
  68. deepagents_code-0.1.0/deepagents_code/server_manager.py +454 -0
  69. deepagents_code-0.1.0/deepagents_code/sessions.py +1302 -0
  70. deepagents_code-0.1.0/deepagents_code/skills/__init__.py +18 -0
  71. deepagents_code-0.1.0/deepagents_code/skills/commands.py +1083 -0
  72. deepagents_code-0.1.0/deepagents_code/skills/invocation.py +103 -0
  73. deepagents_code-0.1.0/deepagents_code/skills/load.py +196 -0
  74. deepagents_code-0.1.0/deepagents_code/state_migration.py +136 -0
  75. deepagents_code-0.1.0/deepagents_code/subagents.py +173 -0
  76. deepagents_code-0.1.0/deepagents_code/system_prompt.md +243 -0
  77. deepagents_code-0.1.0/deepagents_code/terminal_capabilities.py +115 -0
  78. deepagents_code-0.1.0/deepagents_code/terminal_escape.py +287 -0
  79. deepagents_code-0.1.0/deepagents_code/textual_adapter.py +1544 -0
  80. deepagents_code-0.1.0/deepagents_code/theme.py +867 -0
  81. deepagents_code-0.1.0/deepagents_code/token_state.py +31 -0
  82. deepagents_code-0.1.0/deepagents_code/tool_display.py +298 -0
  83. deepagents_code-0.1.0/deepagents_code/tools.py +159 -0
  84. deepagents_code-0.1.0/deepagents_code/ui.py +537 -0
  85. deepagents_code-0.1.0/deepagents_code/unicode_security.py +516 -0
  86. deepagents_code-0.1.0/deepagents_code/update_check.py +977 -0
  87. deepagents_code-0.1.0/deepagents_code/widgets/__init__.py +9 -0
  88. deepagents_code-0.1.0/deepagents_code/widgets/_links.py +96 -0
  89. deepagents_code-0.1.0/deepagents_code/widgets/agent_selector.py +420 -0
  90. deepagents_code-0.1.0/deepagents_code/widgets/approval.py +599 -0
  91. deepagents_code-0.1.0/deepagents_code/widgets/ask_user.py +485 -0
  92. deepagents_code-0.1.0/deepagents_code/widgets/auth.py +632 -0
  93. deepagents_code-0.1.0/deepagents_code/widgets/autocomplete.py +703 -0
  94. deepagents_code-0.1.0/deepagents_code/widgets/chat_input.py +2181 -0
  95. deepagents_code-0.1.0/deepagents_code/widgets/diff.py +248 -0
  96. deepagents_code-0.1.0/deepagents_code/widgets/history.py +188 -0
  97. deepagents_code-0.1.0/deepagents_code/widgets/launch_init.py +363 -0
  98. deepagents_code-0.1.0/deepagents_code/widgets/loading.py +208 -0
  99. deepagents_code-0.1.0/deepagents_code/widgets/mcp_viewer.py +432 -0
  100. deepagents_code-0.1.0/deepagents_code/widgets/message_store.py +742 -0
  101. deepagents_code-0.1.0/deepagents_code/widgets/messages.py +2142 -0
  102. deepagents_code-0.1.0/deepagents_code/widgets/model_selector.py +1177 -0
  103. deepagents_code-0.1.0/deepagents_code/widgets/notification_center.py +399 -0
  104. deepagents_code-0.1.0/deepagents_code/widgets/notification_detail.py +257 -0
  105. deepagents_code-0.1.0/deepagents_code/widgets/notification_settings.py +170 -0
  106. deepagents_code-0.1.0/deepagents_code/widgets/status.py +457 -0
  107. deepagents_code-0.1.0/deepagents_code/widgets/theme_selector.py +347 -0
  108. deepagents_code-0.1.0/deepagents_code/widgets/thread_selector.py +2227 -0
  109. deepagents_code-0.1.0/deepagents_code/widgets/tool_renderers.py +148 -0
  110. deepagents_code-0.1.0/deepagents_code/widgets/tool_widgets.py +274 -0
  111. deepagents_code-0.1.0/deepagents_code/widgets/update_available.py +311 -0
  112. deepagents_code-0.1.0/deepagents_code/widgets/update_progress.py +281 -0
  113. deepagents_code-0.1.0/deepagents_code/widgets/welcome.py +489 -0
  114. deepagents_code-0.1.0/examples/skills/arxiv-search/SKILL.md +33 -0
  115. deepagents_code-0.1.0/examples/skills/arxiv-search/arxiv_search.py +61 -0
  116. deepagents_code-0.1.0/examples/skills/langgraph-docs/SKILL.md +28 -0
  117. deepagents_code-0.1.0/examples/skills/skill-creator/SKILL.md +385 -0
  118. deepagents_code-0.1.0/examples/skills/skill-creator/scripts/init_skill.py +311 -0
  119. deepagents_code-0.1.0/examples/skills/skill-creator/scripts/quick_validate.py +152 -0
  120. deepagents_code-0.1.0/examples/skills/web-research/SKILL.md +77 -0
  121. deepagents_code-0.1.0/images/tui.png +0 -0
  122. deepagents_code-0.1.0/pyproject.toml +285 -0
  123. deepagents_code-0.1.0/scripts/check_imports.py +32 -0
  124. deepagents_code-0.1.0/scripts/debug_server.sh +66 -0
  125. deepagents_code-0.1.0/scripts/install.sh +439 -0
  126. deepagents_code-0.1.0/tests/README.md +11 -0
  127. deepagents_code-0.1.0/tests/integration_tests/__init__.py +0 -0
  128. deepagents_code-0.1.0/tests/integration_tests/benchmarks/__init__.py +0 -0
  129. deepagents_code-0.1.0/tests/integration_tests/benchmarks/test_codspeed_import_benchmarks.py +185 -0
  130. deepagents_code-0.1.0/tests/integration_tests/benchmarks/test_startup_benchmarks.py +339 -0
  131. deepagents_code-0.1.0/tests/integration_tests/conftest.py +39 -0
  132. deepagents_code-0.1.0/tests/integration_tests/test_acp_mode.py +117 -0
  133. deepagents_code-0.1.0/tests/integration_tests/test_compact_resume.py +204 -0
  134. deepagents_code-0.1.0/tests/integration_tests/test_sandbox_factory.py +349 -0
  135. deepagents_code-0.1.0/tests/integration_tests/test_sandbox_operations.py +1179 -0
  136. deepagents_code-0.1.0/tests/unit_tests/__init__.py +0 -0
  137. deepagents_code-0.1.0/tests/unit_tests/conftest.py +171 -0
  138. deepagents_code-0.1.0/tests/unit_tests/skills/__init__.py +1 -0
  139. deepagents_code-0.1.0/tests/unit_tests/skills/test_commands.py +1338 -0
  140. deepagents_code-0.1.0/tests/unit_tests/skills/test_load.py +856 -0
  141. deepagents_code-0.1.0/tests/unit_tests/skills/test_skills_json.py +154 -0
  142. deepagents_code-0.1.0/tests/unit_tests/test_agent.py +2406 -0
  143. deepagents_code-0.1.0/tests/unit_tests/test_agent_friendly.py +605 -0
  144. deepagents_code-0.1.0/tests/unit_tests/test_agent_selector.py +466 -0
  145. deepagents_code-0.1.0/tests/unit_tests/test_app.py +8292 -0
  146. deepagents_code-0.1.0/tests/unit_tests/test_approval.py +641 -0
  147. deepagents_code-0.1.0/tests/unit_tests/test_args.py +581 -0
  148. deepagents_code-0.1.0/tests/unit_tests/test_ask_user.py +779 -0
  149. deepagents_code-0.1.0/tests/unit_tests/test_ask_user_middleware.py +221 -0
  150. deepagents_code-0.1.0/tests/unit_tests/test_auth_store.py +266 -0
  151. deepagents_code-0.1.0/tests/unit_tests/test_auth_widgets.py +390 -0
  152. deepagents_code-0.1.0/tests/unit_tests/test_autocomplete.py +592 -0
  153. deepagents_code-0.1.0/tests/unit_tests/test_charset.py +360 -0
  154. deepagents_code-0.1.0/tests/unit_tests/test_chat_input.py +2869 -0
  155. deepagents_code-0.1.0/tests/unit_tests/test_clipboard.py +274 -0
  156. deepagents_code-0.1.0/tests/unit_tests/test_command_registry.py +221 -0
  157. deepagents_code-0.1.0/tests/unit_tests/test_compact_tool.py +40 -0
  158. deepagents_code-0.1.0/tests/unit_tests/test_config.py +3004 -0
  159. deepagents_code-0.1.0/tests/unit_tests/test_configurable_model.py +609 -0
  160. deepagents_code-0.1.0/tests/unit_tests/test_debug.py +69 -0
  161. deepagents_code-0.1.0/tests/unit_tests/test_editor.py +274 -0
  162. deepagents_code-0.1.0/tests/unit_tests/test_end_to_end.py +435 -0
  163. deepagents_code-0.1.0/tests/unit_tests/test_env_vars.py +135 -0
  164. deepagents_code-0.1.0/tests/unit_tests/test_event_bus.py +445 -0
  165. deepagents_code-0.1.0/tests/unit_tests/test_exception_handling.py +252 -0
  166. deepagents_code-0.1.0/tests/unit_tests/test_extras_info.py +240 -0
  167. deepagents_code-0.1.0/tests/unit_tests/test_file_ops.py +120 -0
  168. deepagents_code-0.1.0/tests/unit_tests/test_formatting.py +66 -0
  169. deepagents_code-0.1.0/tests/unit_tests/test_git.py +264 -0
  170. deepagents_code-0.1.0/tests/unit_tests/test_history.py +233 -0
  171. deepagents_code-0.1.0/tests/unit_tests/test_hooks.py +357 -0
  172. deepagents_code-0.1.0/tests/unit_tests/test_imports.py +29 -0
  173. deepagents_code-0.1.0/tests/unit_tests/test_input_parsing.py +414 -0
  174. deepagents_code-0.1.0/tests/unit_tests/test_iterm_cursor_guide.py +256 -0
  175. deepagents_code-0.1.0/tests/unit_tests/test_launch_init.py +336 -0
  176. deepagents_code-0.1.0/tests/unit_tests/test_links.py +42 -0
  177. deepagents_code-0.1.0/tests/unit_tests/test_loading.py +86 -0
  178. deepagents_code-0.1.0/tests/unit_tests/test_local_context.py +1541 -0
  179. deepagents_code-0.1.0/tests/unit_tests/test_main.py +1214 -0
  180. deepagents_code-0.1.0/tests/unit_tests/test_main_acp_mode.py +190 -0
  181. deepagents_code-0.1.0/tests/unit_tests/test_main_args.py +1032 -0
  182. deepagents_code-0.1.0/tests/unit_tests/test_mcp_auth.py +967 -0
  183. deepagents_code-0.1.0/tests/unit_tests/test_mcp_commands.py +332 -0
  184. deepagents_code-0.1.0/tests/unit_tests/test_mcp_tools.py +2277 -0
  185. deepagents_code-0.1.0/tests/unit_tests/test_mcp_trust.py +112 -0
  186. deepagents_code-0.1.0/tests/unit_tests/test_mcp_viewer.py +197 -0
  187. deepagents_code-0.1.0/tests/unit_tests/test_media_utils.py +733 -0
  188. deepagents_code-0.1.0/tests/unit_tests/test_message_store.py +867 -0
  189. deepagents_code-0.1.0/tests/unit_tests/test_messages.py +1342 -0
  190. deepagents_code-0.1.0/tests/unit_tests/test_model_config.py +4341 -0
  191. deepagents_code-0.1.0/tests/unit_tests/test_model_selector.py +1314 -0
  192. deepagents_code-0.1.0/tests/unit_tests/test_model_switch.py +1122 -0
  193. deepagents_code-0.1.0/tests/unit_tests/test_non_interactive.py +1562 -0
  194. deepagents_code-0.1.0/tests/unit_tests/test_notification_center.py +312 -0
  195. deepagents_code-0.1.0/tests/unit_tests/test_notification_detail.py +133 -0
  196. deepagents_code-0.1.0/tests/unit_tests/test_notifications.py +204 -0
  197. deepagents_code-0.1.0/tests/unit_tests/test_offload.py +1506 -0
  198. deepagents_code-0.1.0/tests/unit_tests/test_offload_dict_messages.py +335 -0
  199. deepagents_code-0.1.0/tests/unit_tests/test_onboarding.py +241 -0
  200. deepagents_code-0.1.0/tests/unit_tests/test_output.py +62 -0
  201. deepagents_code-0.1.0/tests/unit_tests/test_reload.py +632 -0
  202. deepagents_code-0.1.0/tests/unit_tests/test_remote_client.py +615 -0
  203. deepagents_code-0.1.0/tests/unit_tests/test_sandbox_factory.py +505 -0
  204. deepagents_code-0.1.0/tests/unit_tests/test_server.py +321 -0
  205. deepagents_code-0.1.0/tests/unit_tests/test_server_config.py +217 -0
  206. deepagents_code-0.1.0/tests/unit_tests/test_server_graph.py +139 -0
  207. deepagents_code-0.1.0/tests/unit_tests/test_server_helpers.py +95 -0
  208. deepagents_code-0.1.0/tests/unit_tests/test_server_manager.py +370 -0
  209. deepagents_code-0.1.0/tests/unit_tests/test_session_stats.py +151 -0
  210. deepagents_code-0.1.0/tests/unit_tests/test_sessions.py +1860 -0
  211. deepagents_code-0.1.0/tests/unit_tests/test_shell_allow_list.py +719 -0
  212. deepagents_code-0.1.0/tests/unit_tests/test_skill_invocation.py +596 -0
  213. deepagents_code-0.1.0/tests/unit_tests/test_startup_fast_paths.py +213 -0
  214. deepagents_code-0.1.0/tests/unit_tests/test_state_migration.py +204 -0
  215. deepagents_code-0.1.0/tests/unit_tests/test_status.py +430 -0
  216. deepagents_code-0.1.0/tests/unit_tests/test_subagents.py +431 -0
  217. deepagents_code-0.1.0/tests/unit_tests/test_terminal_capabilities.py +203 -0
  218. deepagents_code-0.1.0/tests/unit_tests/test_terminal_escape.py +377 -0
  219. deepagents_code-0.1.0/tests/unit_tests/test_textual_adapter.py +2336 -0
  220. deepagents_code-0.1.0/tests/unit_tests/test_textual_patches.py +92 -0
  221. deepagents_code-0.1.0/tests/unit_tests/test_theme.py +2543 -0
  222. deepagents_code-0.1.0/tests/unit_tests/test_thread_selector.py +3374 -0
  223. deepagents_code-0.1.0/tests/unit_tests/test_token_tracker.py +150 -0
  224. deepagents_code-0.1.0/tests/unit_tests/test_tool_display.py +470 -0
  225. deepagents_code-0.1.0/tests/unit_tests/test_ui.py +388 -0
  226. deepagents_code-0.1.0/tests/unit_tests/test_unicode_security.py +246 -0
  227. deepagents_code-0.1.0/tests/unit_tests/test_update_available.py +183 -0
  228. deepagents_code-0.1.0/tests/unit_tests/test_update_check.py +1429 -0
  229. deepagents_code-0.1.0/tests/unit_tests/test_update_progress.py +116 -0
  230. deepagents_code-0.1.0/tests/unit_tests/test_version.py +396 -0
  231. deepagents_code-0.1.0/tests/unit_tests/test_welcome.py +665 -0
  232. deepagents_code-0.1.0/tests/unit_tests/tools/__init__.py +0 -0
  233. deepagents_code-0.1.0/tests/unit_tests/tools/test_fetch_url.py +72 -0
  234. deepagents_code-0.1.0/uv.lock +6771 -0
  235. deepagents_code-0.0.1/CHANGELOG.md +0 -1
  236. deepagents_code-0.0.1/Makefile +0 -49
  237. deepagents_code-0.0.1/PKG-INFO +0 -26
  238. deepagents_code-0.0.1/README.md +0 -5
  239. deepagents_code-0.0.1/deepagents_code/__init__.py +0 -5
  240. deepagents_code-0.0.1/deepagents_code/_version.py +0 -3
  241. deepagents_code-0.0.1/pyproject.toml +0 -84
  242. deepagents_code-0.0.1/tests/unit_tests/test_placeholder.py +0 -5
  243. deepagents_code-0.0.1/uv.lock +0 -872
  244. {deepagents_code-0.0.1 → deepagents_code-0.1.0}/.gitignore +0 -0
  245. {deepagents_code-0.0.1 → deepagents_code-0.1.0}/deepagents_code/py.typed +0 -0
@@ -0,0 +1,10 @@
1
+ # Deep Agents Code Changelog
2
+
3
+ ## [0.1.0](https://github.com/langchain-ai/deepagents/compare/deepagents-code==0.0.1...deepagents-code==0.1.0) (2026-05-12)
4
+
5
+ Hello world! Ported from `libs/cli`.
6
+
7
+ ---
8
+
9
+ `deepagents-code` was forked from `deepagents-cli` at v0.1.0 (2026-05-12).
10
+ For history prior to the fork, see [the `deepagents-cli` changelog](https://github.com/langchain-ai/deepagents/blob/main/libs/cli/CHANGELOG.md).
@@ -0,0 +1,92 @@
1
+ # Deep Agents Code Development Guide
2
+
3
+ ## Live CSS development with Textual devtools
4
+
5
+ Textual's devtools console enables CSS hot-reload and live `self.log()` output during development.
6
+
7
+ ### Prerequisites
8
+
9
+ Sync the `test` dependency group (includes `textual-dev`):
10
+
11
+ ```bash
12
+ cd libs/code && uv sync --group test
13
+ ```
14
+
15
+ Create the dev wrapper script (one-time):
16
+
17
+ ```bash
18
+ cat > /tmp/dev_deepagents.py << 'PYEOF'
19
+ """Dev wrapper to run Deep Agents Code with textual devtools."""
20
+ import sys
21
+ sys.argv = ["deepagents"] + sys.argv[1:]
22
+
23
+ from deepagents_code.main import cli_main
24
+ cli_main()
25
+ PYEOF
26
+ ```
27
+
28
+ ### Running
29
+
30
+ **Terminal 1** — devtools console:
31
+
32
+ ```bash
33
+ cd libs/code && uv run --group test textual console
34
+ ```
35
+
36
+ **Terminal 2** — TUI with live reload:
37
+
38
+ ```bash
39
+ cd libs/code && uv run --group test textual run --dev /tmp/dev_deepagents.py
40
+ ```
41
+
42
+ Edit any `.tcss` file and save — changes appear immediately. Any `self.log()` calls in widget code show in the console.
43
+
44
+ ### Console options
45
+
46
+ - `textual console -v` — verbose mode, shows all events (key presses, mouse, etc.)
47
+ - `textual console -x EVENT` — exclude noisy event groups
48
+ - `textual console --port 7342` — custom port (pass matching `--port` to `textual run`)
49
+
50
+ ### Why the wrapper script?
51
+
52
+ `textual run --dev` handles the devtools connection, but it needs to run inside the project's virtualenv to import `deepagents_code`. The wrapper script bridges the gap — `uv run --group test textual run --dev` ensures both `textual-dev` (from the `test` group) and `deepagents_code` are available in the same environment.
53
+
54
+ ## Debugging
55
+
56
+ The app runs a `langgraph dev` subprocess for every interactive session. When the subprocess crashes during startup, the TUI shows a one-line failure banner; the actual exception lives in the subprocess's stdout/stderr, which is captured to a temp file.
57
+
58
+ ### Environment variables
59
+
60
+ | Variable | Effect |
61
+ | --- | --- |
62
+ | `DEEPAGENTS_CODE_DEBUG=1` | Preserves the server subprocess log on shutdown and prints its path to stderr. Without this, the log is deleted when the process stops. Also enables the app-process file handler below. Accepts `1`/`true`/`yes`/`on` (case-insensitive) as enabled; `0`/`false`/`no`/`off`/empty/unset as disabled. |
63
+ | `DEEPAGENTS_CODE_DEBUG_FILE=<path>` | Overrides the default path (`/tmp/deepagents_debug.log`) for the app-process file handler, which attaches at `DEBUG` level to `textual_adapter` and `remote_client`. **Only takes effect when `DEEPAGENTS_CODE_DEBUG` is truthy.** Useful for diagnosing streaming/client-side issues; does **not** capture the server subprocess. |
64
+
65
+ `DEEPAGENTS_CODE_DEBUG` is what you want for startup crashes (graph init, MCP config, sandbox): the preserved subprocess log contains the real traceback. The optional `DEEPAGENTS_CODE_DEBUG_FILE` override is for post-startup client-side debugging.
66
+
67
+ ### Finding the server subprocess log
68
+
69
+ On macOS, `tempfile` resolves to `$TMPDIR` (a path under `/var/folders/.../T/`). Each `ServerProcess` writes its combined stdout+stderr to a file matching `deepagents_server_log_*.txt`:
70
+
71
+ ```bash
72
+ # Newest first
73
+ ls -lt ${TMPDIR:-/tmp}/deepagents_server_log_*.txt | head -5
74
+
75
+ # Tail the latest while reproducing the crash
76
+ tail -F "$(ls -t ${TMPDIR:-/tmp}/deepagents_server_log_*.txt | head -1)"
77
+ ```
78
+
79
+ The interesting line is `Failed to initialize server graph: <exc>` followed by a traceback — everything above that is uvicorn/lifespan unwinding.
80
+
81
+ ### Triage flow for a startup crash
82
+
83
+ 1. **Rerun with `DEEPAGENTS_CODE_DEBUG=1`.** The log is preserved and a "Server log preserved at: ..." line is printed to stderr. Textual's fullscreen mode can hide that line, but the file itself is still on disk.
84
+ 2. **Locate the log** via the `ls` command above. Open it in your editor.
85
+ 3. **Search for `Failed to initialize server graph`.** The stack trace beneath names the concrete failure point (MCP config validation, sandbox init, model resolution, subagent load, etc.).
86
+ 4. **Pre-flight validators run in the app process** for the common failure modes (e.g., `--mcp-config` is validated in `start_server_and_get_agent` before the subprocess spawns). When the banner shows `MCPConfigError: <path>: <reason>`, the subprocess never started — fix the file and retry.
87
+
88
+ ### Common startup failure patterns
89
+
90
+ - **`MCPConfigError: Invalid MCP config at <path>: ...`** — malformed `--mcp-config`. The pre-flight wraps the underlying `ValueError`/`TypeError` with the offending path. See `_preflight_validate_mcp_config` in `server_manager.py`.
91
+ - **`Server 'X' missing required 'command' field`** (from a discovered project `.mcp.json`, not `--mcp-config`) — an stdio server config without `command`. For remote servers, just use `{"url": "..."}`; transport is inferred as `http` when no `type`/`transport` is present.
92
+ - **Uncaught exception inside a bare `sys.exit(1)`** — usually means the surrounding `make_graph()` raised. Look one traceback up in the subprocess log for the real cause.
@@ -0,0 +1,91 @@
1
+ .PHONY: format lint type typecheck test tests integration_test integration_tests test_watch benchmark bench bench-memory help run lint_package lint_tests check_imports coverage
2
+
3
+ .DEFAULT_GOAL := help
4
+
5
+ .EXPORT_ALL_VARIABLES:
6
+ UV_FROZEN = true
7
+
8
+ ######################
9
+ # TESTING AND COVERAGE
10
+ ######################
11
+
12
+ # Define a variable for the test file path.
13
+ TEST_FILE ?= tests/unit_tests/
14
+ integration_test integration_tests: TEST_FILE=tests/integration_tests/
15
+
16
+ COV_ARGS ?= --cov=deepagents_code --cov-report=term-missing
17
+ PYTEST_EXTRA ?=
18
+
19
+ test: ## Run unit tests
20
+ test tests:
21
+ uv run --group test pytest -n auto --benchmark-disable --disable-socket --allow-unix-socket $(PYTEST_EXTRA) $(TEST_FILE) \
22
+ $(COV_ARGS)
23
+
24
+ coverage: ## Run unit tests with coverage
25
+ uv run --group test pytest --cov \
26
+ --cov-config=.coveragerc \
27
+ --cov-report xml \
28
+ --cov-report term-missing:skip-covered \
29
+ $(TEST_FILE)
30
+
31
+ integration_test: ## Run integration tests
32
+ integration_test integration_tests:
33
+ uv run --group test pytest -n auto --benchmark-disable -vvv --timeout 30 $(TEST_FILE)
34
+
35
+ test_watch: ## Run tests in watch mode
36
+ uv run --group test ptw --now . -- -vv $(TEST_FILE)
37
+
38
+ benchmark: ## Run benchmark tests
39
+ uv run --group test pytest ./tests -m benchmark
40
+
41
+ bench: ## Run benchmarks under CodSpeed instrumentation
42
+ uv run --group test pytest ./tests -m benchmark --codspeed
43
+
44
+ bench-memory: ## Run memory benchmarks under CodSpeed instrumentation
45
+ uv run --group test pytest ./tests -m memory_benchmark --codspeed
46
+
47
+ run: ## Reinstall and run package
48
+ uvx --no-cache --reinstall .
49
+
50
+
51
+ ######################
52
+ # LINTING AND FORMATTING
53
+ ######################
54
+
55
+ # Define a variable for Python and notebook files.
56
+ PYTHON_FILES=.
57
+ lint format: PYTHON_FILES=.
58
+ lint_diff format_diff: PYTHON_FILES=$(shell git diff --relative=libs/code --name-only --diff-filter=d main | grep -E '\.py$$|\.ipynb$$')
59
+ lint_package: ## Lint only the package
60
+ lint_package: PYTHON_FILES=deepagents_code
61
+ lint_tests: ## Lint only tests
62
+ lint_tests: PYTHON_FILES=tests
63
+
64
+ lint: ## Run linters and type checker
65
+ lint lint_diff lint_package lint_tests:
66
+ [ "$(PYTHON_FILES)" = "" ] || uv run --all-groups ruff check $(PYTHON_FILES)
67
+ [ "$(PYTHON_FILES)" = "" ] || uv run --all-groups ruff format $(PYTHON_FILES) --diff
68
+ $(MAKE) type PYTHON_FILES="$(PYTHON_FILES)"
69
+
70
+ type: ## Run type checker
71
+ type typecheck:
72
+ uv run --all-groups ty check $(PYTHON_FILES)
73
+
74
+ format: ## Run code formatters
75
+ format format_diff:
76
+ [ "$(PYTHON_FILES)" = "" ] || uv run --all-groups ruff format $(PYTHON_FILES)
77
+ [ "$(PYTHON_FILES)" = "" ] || uv run --all-groups ruff check --fix $(PYTHON_FILES)
78
+
79
+ check_imports: ## Check imports
80
+ check_imports: $(shell find deepagents_code -name '*.py')
81
+ uv run --all-groups python ./scripts/check_imports.py $^
82
+
83
+ ######################
84
+ # HELP
85
+ ######################
86
+
87
+ help: ## Show this help message
88
+ @echo "Usage: make [target] [TEST_FILE=path/to/tests/]"
89
+ @echo ""
90
+ @echo "Targets:"
91
+ @awk 'BEGIN {FS = ":.*##"} /^[a-zA-Z_-]+:.*##/ {printf " %-20s %s\n", $$1, $$2}' $(MAKEFILE_LIST)
@@ -0,0 +1,204 @@
1
+ Metadata-Version: 2.4
2
+ Name: deepagents-code
3
+ Version: 0.1.0
4
+ Summary: Terminal interface for Deep Agents - interactive AI agent with file operations, shell access, and sub-agent capabilities.
5
+ Project-URL: Homepage, https://docs.langchain.com/oss/python/deepagents/overview
6
+ Project-URL: Documentation, https://reference.langchain.com/python/deepagents/
7
+ Project-URL: Repository, https://github.com/langchain-ai/deepagents
8
+ Project-URL: Issues, https://github.com/langchain-ai/deepagents/issues
9
+ Project-URL: Changelog, https://github.com/langchain-ai/deepagents/blob/main/libs/code/CHANGELOG.md
10
+ Project-URL: Twitter, https://x.com/langchain_oss
11
+ Project-URL: Slack, https://www.langchain.com/join-community
12
+ Project-URL: Reddit, https://www.reddit.com/r/LangChain/
13
+ License: MIT
14
+ Keywords: agents,ai,cli,deep-agent,langchain,langgraph,llm,terminal
15
+ Classifier: Development Status :: 4 - Beta
16
+ Classifier: Environment :: Console
17
+ Classifier: Intended Audience :: Developers
18
+ Classifier: License :: OSI Approved :: MIT License
19
+ Classifier: Programming Language :: Python :: 3
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ Classifier: Programming Language :: Python :: 3.12
22
+ Classifier: Programming Language :: Python :: 3.13
23
+ Classifier: Programming Language :: Python :: 3.14
24
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
25
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
26
+ Classifier: Topic :: Terminals
27
+ Requires-Python: <4.0,>=3.11
28
+ Requires-Dist: aiosqlite<1.0.0,>=0.19.0
29
+ Requires-Dist: deepagents-acp>=0.0.4
30
+ Requires-Dist: deepagents==0.6.1
31
+ Requires-Dist: httpx<1.0.0,>=0.28.1
32
+ Requires-Dist: langchain-anthropic<2.0.0,>=1.4.3
33
+ Requires-Dist: langchain-google-genai<5.0.0,>=4.2.2
34
+ Requires-Dist: langchain-mcp-adapters<1.0.0,>=0.2.2
35
+ Requires-Dist: langchain-openai<2.0.0,>=1.2.1
36
+ Requires-Dist: langchain<2.0.0,>=1.3.0
37
+ Requires-Dist: langgraph-checkpoint-sqlite<4.0.0,>=3.1.0
38
+ Requires-Dist: langgraph-cli[inmem]<1.0.0,>=0.4.24
39
+ Requires-Dist: langgraph-runtime-inmem<1.0.0,>=0.28.1
40
+ Requires-Dist: langgraph-sdk<1.0.0,>=0.3.13
41
+ Requires-Dist: langgraph<2.0.0,>=1.2.0
42
+ Requires-Dist: langsmith[sandbox]>=0.8.0
43
+ Requires-Dist: markdownify<2.0.0,>=0.13.0
44
+ Requires-Dist: packaging>=23.0
45
+ Requires-Dist: pillow<13.0.0,>=10.0.0
46
+ Requires-Dist: prompt-toolkit<4.0.0,>=3.0.52
47
+ Requires-Dist: pyperclip<2.0.0,>=1.11.0
48
+ Requires-Dist: python-dotenv<2.0.0,>=1.2.2
49
+ Requires-Dist: pyyaml>=6.0.0
50
+ Requires-Dist: requests<3.0.0,>=2.0.0
51
+ Requires-Dist: rich<16.0.0,>=14.2.0
52
+ Requires-Dist: tavily-python<1.0.0,>=0.7.24
53
+ Requires-Dist: textual-autocomplete<5.0.0,>=4.0.6
54
+ Requires-Dist: textual-speedups<1.0.0,>=0.2.1
55
+ Requires-Dist: textual<9.0.0,>=8.2.5
56
+ Requires-Dist: tomli-w<2.0.0,>=1.0.0
57
+ Requires-Dist: uuid-utils<1.0.0,>=0.10.0
58
+ Provides-Extra: agentcore
59
+ Requires-Dist: langchain-agentcore-codeinterpreter>=0.0.2; extra == 'agentcore'
60
+ Provides-Extra: all-providers
61
+ Requires-Dist: langchain-anthropic<2.0.0,>=1.4.3; extra == 'all-providers'
62
+ Requires-Dist: langchain-aws<2.0.0,>=1.4.6; extra == 'all-providers'
63
+ Requires-Dist: langchain-baseten<1.0.0,>=0.2.0; extra == 'all-providers'
64
+ Requires-Dist: langchain-cohere<1.0.0,>=0.5.1; extra == 'all-providers'
65
+ Requires-Dist: langchain-deepseek<2.0.0,>=1.0.1; extra == 'all-providers'
66
+ Requires-Dist: langchain-fireworks<2.0.0,>=1.3.1; extra == 'all-providers'
67
+ Requires-Dist: langchain-google-genai<5.0.0,>=4.2.2; extra == 'all-providers'
68
+ Requires-Dist: langchain-google-vertexai<4.0.0,>=3.2.3; extra == 'all-providers'
69
+ Requires-Dist: langchain-groq<2.0.0,>=1.1.2; extra == 'all-providers'
70
+ Requires-Dist: langchain-huggingface<2.0.0,>=1.2.2; extra == 'all-providers'
71
+ Requires-Dist: langchain-ibm<2.0.0,>=1.0.7; extra == 'all-providers'
72
+ Requires-Dist: langchain-litellm<2.0.0,>=0.6.4; extra == 'all-providers'
73
+ Requires-Dist: langchain-mistralai<2.0.0,>=1.1.4; extra == 'all-providers'
74
+ Requires-Dist: langchain-nvidia-ai-endpoints<2.0.0,>=1.2.1; extra == 'all-providers'
75
+ Requires-Dist: langchain-ollama<2.0.0,>=1.1.0; extra == 'all-providers'
76
+ Requires-Dist: langchain-openai<2.0.0,>=1.2.1; extra == 'all-providers'
77
+ Requires-Dist: langchain-openrouter<2.0.0,>=0.2.3; extra == 'all-providers'
78
+ Requires-Dist: langchain-perplexity<2.0.0,>=1.2.0; extra == 'all-providers'
79
+ Requires-Dist: langchain-together<2.0.0,>=0.4.0; extra == 'all-providers'
80
+ Requires-Dist: langchain-xai<2.0.0,>=1.2.2; extra == 'all-providers'
81
+ Provides-Extra: all-sandboxes
82
+ Requires-Dist: langchain-agentcore-codeinterpreter>=0.0.2; extra == 'all-sandboxes'
83
+ Requires-Dist: langchain-daytona>=0.0.5; extra == 'all-sandboxes'
84
+ Requires-Dist: langchain-modal>=0.0.3; extra == 'all-sandboxes'
85
+ Requires-Dist: langchain-runloop>=0.0.4; extra == 'all-sandboxes'
86
+ Provides-Extra: anthropic
87
+ Requires-Dist: langchain-anthropic<2.0.0,>=1.4.3; extra == 'anthropic'
88
+ Provides-Extra: baseten
89
+ Requires-Dist: langchain-baseten<1.0.0,>=0.2.0; extra == 'baseten'
90
+ Provides-Extra: bedrock
91
+ Requires-Dist: langchain-aws<2.0.0,>=1.4.6; extra == 'bedrock'
92
+ Provides-Extra: cohere
93
+ Requires-Dist: langchain-cohere<1.0.0,>=0.5.1; extra == 'cohere'
94
+ Provides-Extra: daytona
95
+ Requires-Dist: langchain-daytona>=0.0.5; extra == 'daytona'
96
+ Provides-Extra: deepseek
97
+ Requires-Dist: langchain-deepseek<2.0.0,>=1.0.1; extra == 'deepseek'
98
+ Provides-Extra: fireworks
99
+ Requires-Dist: langchain-fireworks<2.0.0,>=1.3.1; extra == 'fireworks'
100
+ Provides-Extra: google-genai
101
+ Requires-Dist: langchain-google-genai<5.0.0,>=4.2.2; extra == 'google-genai'
102
+ Provides-Extra: groq
103
+ Requires-Dist: langchain-groq<2.0.0,>=1.1.2; extra == 'groq'
104
+ Provides-Extra: huggingface
105
+ Requires-Dist: langchain-huggingface<2.0.0,>=1.2.2; extra == 'huggingface'
106
+ Provides-Extra: ibm
107
+ Requires-Dist: langchain-ibm<2.0.0,>=1.0.7; extra == 'ibm'
108
+ Provides-Extra: litellm
109
+ Requires-Dist: langchain-litellm<2.0.0,>=0.6.4; extra == 'litellm'
110
+ Provides-Extra: mistralai
111
+ Requires-Dist: langchain-mistralai<2.0.0,>=1.1.4; extra == 'mistralai'
112
+ Provides-Extra: modal
113
+ Requires-Dist: langchain-modal>=0.0.3; extra == 'modal'
114
+ Provides-Extra: nvidia
115
+ Requires-Dist: langchain-nvidia-ai-endpoints<2.0.0,>=1.2.1; extra == 'nvidia'
116
+ Provides-Extra: ollama
117
+ Requires-Dist: langchain-ollama<2.0.0,>=1.1.0; extra == 'ollama'
118
+ Provides-Extra: openai
119
+ Requires-Dist: langchain-openai<2.0.0,>=1.2.1; extra == 'openai'
120
+ Provides-Extra: openrouter
121
+ Requires-Dist: langchain-openrouter<2.0.0,>=0.2.3; extra == 'openrouter'
122
+ Provides-Extra: perplexity
123
+ Requires-Dist: langchain-perplexity<2.0.0,>=1.2.0; extra == 'perplexity'
124
+ Provides-Extra: runloop
125
+ Requires-Dist: langchain-runloop>=0.0.4; extra == 'runloop'
126
+ Provides-Extra: together
127
+ Requires-Dist: langchain-together<2.0.0,>=0.4.0; extra == 'together'
128
+ Provides-Extra: vertexai
129
+ Requires-Dist: langchain-google-vertexai<4.0.0,>=3.2.3; extra == 'vertexai'
130
+ Provides-Extra: xai
131
+ Requires-Dist: langchain-xai<2.0.0,>=1.2.2; extra == 'xai'
132
+ Description-Content-Type: text/markdown
133
+
134
+ # 🧠🤖 Deep Agents Code
135
+
136
+ [![PyPI - Version](https://img.shields.io/pypi/v/deepagents-code?label=%20)](https://pypi.org/project/deepagents-code/#history)
137
+ [![PyPI - License](https://img.shields.io/pypi/l/deepagents-code)](https://opensource.org/licenses/MIT)
138
+ [![PyPI - Downloads](https://img.shields.io/pepy/dt/deepagents-code)](https://pypistats.org/packages/deepagents-code)
139
+ [![Twitter](https://img.shields.io/twitter/url/https/twitter.com/langchain_oss.svg?style=social&label=Follow%20%40LangChain)](https://x.com/langchain_oss)
140
+
141
+ <p align="center">
142
+ <img src="https://raw.githubusercontent.com/langchain-ai/deepagents/main/libs/code/images/tui.png" alt="Deep Agents Code" width="600"/>
143
+ </p>
144
+
145
+ ## Quick Install
146
+
147
+ ```bash
148
+ curl -LsSf https://langch.in/gh-da-cli | bash
149
+ ```
150
+
151
+ ```bash
152
+ # With model provider extras
153
+ # OpenAI, Anthropic, and Gemini are included by default
154
+ DEEPAGENTS_EXTRAS="nvidia,ollama" curl -LsSf https://langch.in/gh-da-cli | bash
155
+ ```
156
+
157
+ Or install directly with `uv`:
158
+
159
+ ```bash
160
+ # Install with chosen model providers
161
+ uv tool install 'deepagents-code[nvidia,ollama]'
162
+ ```
163
+
164
+ Run:
165
+
166
+ ```bash
167
+ dcode
168
+ ```
169
+
170
+ ## 🤔 What is this?
171
+
172
+ 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.
173
+
174
+ **What `deepagents-code` adds on top of the SDK:**
175
+
176
+ - **Interactive TUI** — rich terminal interface with streaming responses
177
+ - **Conversation resume** — pick up where you left off across sessions
178
+ - **Web search** — ground responses in live information
179
+ - **Remote sandboxes** — run code in isolated environments (LangSmith, AgentCore, Daytona, Modal, Runloop, & more)
180
+ - **Persistent memory** — agent remembers context across conversations
181
+ - **Custom skills** — extend the agent with your own slash commands
182
+ - **Headless mode** — run non-interactively for scripting and CI
183
+ - **Human-in-the-loop** — approve or reject tool calls before execution
184
+
185
+ ## 📖 Resources
186
+
187
+ - **[CLI Documentation](https://docs.langchain.com/oss/python/deepagents/cli/overview)**
188
+ - **[Changelog](https://github.com/langchain-ai/deepagents/blob/main/libs/code/CHANGELOG.md)**
189
+ - **[Source code](https://github.com/langchain-ai/deepagents/tree/main/libs/code)**
190
+ - **[Deep Agents SDK](https://github.com/langchain-ai/deepagents)** — underlying agent harness
191
+
192
+ ## 📕 Releases & Versioning
193
+
194
+ See our [Releases](https://docs.langchain.com/oss/python/release-policy) and [Versioning](https://docs.langchain.com/oss/python/versioning) policies.
195
+
196
+ ## 💁 Contributing
197
+
198
+ 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.
199
+
200
+ For detailed information on how to contribute, see the [Contributing Guide](https://docs.langchain.com/oss/python/contributing/overview).
201
+
202
+ ## 🤝 Acknowledgements
203
+
204
+ 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.
@@ -0,0 +1,71 @@
1
+ # 🧠🤖 Deep Agents Code
2
+
3
+ [![PyPI - Version](https://img.shields.io/pypi/v/deepagents-code?label=%20)](https://pypi.org/project/deepagents-code/#history)
4
+ [![PyPI - License](https://img.shields.io/pypi/l/deepagents-code)](https://opensource.org/licenses/MIT)
5
+ [![PyPI - Downloads](https://img.shields.io/pepy/dt/deepagents-code)](https://pypistats.org/packages/deepagents-code)
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
+ <p align="center">
9
+ <img src="https://raw.githubusercontent.com/langchain-ai/deepagents/main/libs/code/images/tui.png" alt="Deep Agents Code" width="600"/>
10
+ </p>
11
+
12
+ ## Quick Install
13
+
14
+ ```bash
15
+ curl -LsSf https://langch.in/gh-da-cli | bash
16
+ ```
17
+
18
+ ```bash
19
+ # With model provider extras
20
+ # OpenAI, Anthropic, and Gemini are included by default
21
+ DEEPAGENTS_EXTRAS="nvidia,ollama" curl -LsSf https://langch.in/gh-da-cli | bash
22
+ ```
23
+
24
+ Or install directly with `uv`:
25
+
26
+ ```bash
27
+ # Install with chosen model providers
28
+ uv tool install 'deepagents-code[nvidia,ollama]'
29
+ ```
30
+
31
+ Run:
32
+
33
+ ```bash
34
+ dcode
35
+ ```
36
+
37
+ ## 🤔 What is this?
38
+
39
+ 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.
40
+
41
+ **What `deepagents-code` adds on top of the SDK:**
42
+
43
+ - **Interactive TUI** — rich terminal interface with streaming responses
44
+ - **Conversation resume** — pick up where you left off across sessions
45
+ - **Web search** — ground responses in live information
46
+ - **Remote sandboxes** — run code in isolated environments (LangSmith, AgentCore, Daytona, Modal, Runloop, & more)
47
+ - **Persistent memory** — agent remembers context across conversations
48
+ - **Custom skills** — extend the agent with your own slash commands
49
+ - **Headless mode** — run non-interactively for scripting and CI
50
+ - **Human-in-the-loop** — approve or reject tool calls before execution
51
+
52
+ ## 📖 Resources
53
+
54
+ - **[CLI Documentation](https://docs.langchain.com/oss/python/deepagents/cli/overview)**
55
+ - **[Changelog](https://github.com/langchain-ai/deepagents/blob/main/libs/code/CHANGELOG.md)**
56
+ - **[Source code](https://github.com/langchain-ai/deepagents/tree/main/libs/code)**
57
+ - **[Deep Agents SDK](https://github.com/langchain-ai/deepagents)** — underlying agent harness
58
+
59
+ ## 📕 Releases & Versioning
60
+
61
+ See our [Releases](https://docs.langchain.com/oss/python/release-policy) and [Versioning](https://docs.langchain.com/oss/python/versioning) policies.
62
+
63
+ ## 💁 Contributing
64
+
65
+ 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.
66
+
67
+ For detailed information on how to contribute, see the [Contributing Guide](https://docs.langchain.com/oss/python/contributing/overview).
68
+
69
+ ## 🤝 Acknowledgements
70
+
71
+ 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.