Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
akillness avatar

Deepagents

  • 21 installs
  • 3 repo stars
  • Updated July 2, 2026
  • akillness/oh-my-gods

deepagents is a skill for building file-aware, tool-calling agents with the LangChain Deep Agents harness on top of LangGraph, using create_deep_agent().

About

This skill builds file-aware, tool-calling agents with LangChain Deep Agents, a batteries-included harness on top of LangGraph. It covers create_deep_agent(), subagent delegation, pluggable backends, skills, long-term memory, and human approval with interrupt_on. A Python developer uses it when they want a capable agent with planning, files, subagents, and memory rather than hand-authoring every graph edge.

  • Build file-aware, tool-calling agents with LangChain Deep Agents and create_deep_agent()
  • Pluggable backends: StateBackend, StoreBackend, FilesystemBackend, LocalShellBackend, CompositeBackend
  • Subagent delegation, long-term memory, and human approval via interrupt_on

Deepagents by the numbers

  • 21 all-time installs (skills.sh)
  • Ranked #10,304 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
  • Data as of Jul 7, 2026 (Skillselion catalog sync)
At a glance

deepagents capabilities & compatibility

Needs a tool-calling LLM provider (e.g. langchain-anthropic, langchain-openai); pip install deepagents

Capabilities
agent configuration · orchestration
Works with
github · anthropic · openai
Use cases
orchestration · memory
Pricing
Bring your own API key
From the docs

What deepagents says it does

Build file-aware, tool-calling agents with LangChain Deep Agents.
SKILL.md
Deep Agents is a batteries-included agent harness built on top of LangGraph.
SKILL.md
npx skills add https://github.com/akillness/oh-my-gods --skill deepagents

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs21
repo stars3
Last updatedJuly 2, 2026
Repositoryakillness/oh-my-gods

What it does

Build a LangChain Deep Agents harness with backends, subagents, memory, and human-in-the-loop approval in Python.

Who is it for?

Building a tool-calling agent that needs file access, planning, subagents, and memory quickly

Skip if: Cases needing fully custom graph edges hand-authored in LangGraph without a harness

When should I use this skill?

You need create_deep_agent(), subagent delegation, pluggable backends, memory, or interrupt_on human approval

By the numbers

  • 5 backend types
  • 6-step build workflow

Files

SKILL.mdMarkdownGitHub ↗

deepagents

Deep Agents is a batteries-included agent harness built on top of LangGraph. Use it when the problem is "give me a capable agent with planning, files, subagents, and memory" rather than "let me hand-author every graph edge myself."

When to use this skill

  • Building a tool-calling agent that needs file access and planning quickly
  • Delegating bounded work to specialized subagents with context isolation
  • Choosing between StateBackend, FilesystemBackend, StoreBackend, CompositeBackend, or LocalShellBackend
  • Adding skills and long-term memory without bloating the core prompt
  • Requiring human approval before sensitive tool calls with interrupt_on
  • Using deepagents as a specialist inside a larger LangGraph supervisor

Installation

pip install -qU deepagents

Inside an existing uv-managed project:

uv add deepagents

Optional provider and MCP packages:

pip install -qU langchain-anthropic langchain-openai langchain-google-genai
pip install -qU langchain-mcp-adapters

Core API

from deepagents import create_deep_agent

agent = create_deep_agent(
    model="openai:gpt-5.4",
    tools=[],
    system_prompt="You are a careful engineering agent.",
    middleware=[],
    subagents=[],
    skills=[],
    memory=[],
    response_format=None,
    checkpointer=None,
    backend=None,
    interrupt_on=None,
    debug=False,
    name="deep-agent",
)

Deep Agents work with LangChain chat models that support tool calling. The simplest selector is provider:model.

Instructions

Step 1: Start with the default harness

For many workflows, the zero-config harness is enough:

from deepagents import create_deep_agent

agent = create_deep_agent()
result = agent.invoke(
    {"messages": [{"role": "user", "content": "List the Python files in this repo"}]}
)

This gives you:

  • planning via the built-in todo capability
  • file tools such as ls, read_file, write_file, edit_file, glob, and grep
  • LangGraph runtime features such as streaming and resumability when a checkpointer is attached

Step 2: Pick the right backend

Match the backend to the trust boundary:

from deepagents.backends import CompositeBackend, FilesystemBackend, LocalShellBackend, StateBackend, StoreBackend
from langgraph.store.memory import InMemoryStore

agent = create_deep_agent(
    backend=lambda rt: CompositeBackend(
        default=StateBackend(rt),
        routes={"/memories/": StoreBackend(rt)},
    ),
    store=InMemoryStore(),
)

Guidance:

  • StateBackend: default ephemeral workspace in LangGraph state, scoped to a thread
  • StoreBackend: durable cross-thread memory and instructions
  • FilesystemBackend: real files under a root directory; prefer virtual_mode=True
  • LocalShellBackend: host shell access, development-only, high risk
  • CompositeBackend: mix scratch space and durable memory under different path prefixes

Step 3: Add subagents only for real context isolation

from deepagents import MemoryMiddleware, SubAgent, SubAgentMiddleware, create_deep_agent

researcher = SubAgent(
    name="researcher",
    description="Finds documentation and summarizes it",
    system_prompt="Search broadly, return concise evidence.",
    tools=[web_search_tool],
)

agent = create_deep_agent(
    middleware=[
        MemoryMiddleware(memory_files=["AGENTS.md"]),
        SubAgentMiddleware(subagents=[researcher]),
    ]
)

Use subagents when:

  • the specialist needs a narrower tool set
  • you want the supervisor context to stay clean
  • a subtask can be delegated without the main agent rereading all prior context

Step 4: Add HITL for risky tools

Human approval requires both interrupt_on and a checkpointer:

from deepagents import create_deep_agent
from langgraph.checkpoint.memory import MemorySaver

agent = create_deep_agent(
    checkpointer=MemorySaver(),
    interrupt_on={
        "write_file": {"allowed_decisions": ["approve", "reject"]},
        "execute": {"allowed_decisions": ["approve", "edit", "reject"]},
    },
)

Resume on the same thread:

from langgraph.types import Command

config = {"configurable": {"thread_id": "job-7"}}
first = agent.invoke({"messages": [...]}, config=config, version="v2")
second = agent.invoke(Command(resume=[{"decision": "approve"}]), config=config, version="v2")

Step 5: Use skills and memory for different jobs

agent = create_deep_agent(
    skills=["./skills/langgraph-workflow"],
    memory=["AGENTS.md", "TEAM_GUIDELINES.md"],
)

Use:

  • skills for reusable workflows and domain-specific procedures
  • memory for stable project knowledge, preferences, and house rules

Do not collapse both into a giant system prompt. Let the harness load them progressively.

Step 6: Use Deep Agents inside LangGraph when orchestration gets custom

If you need explicit retries, branching, or supervisor-owned state, use LangGraph outside and deepagents inside specialist nodes.

Examples

Example 1: Minimal file-aware agent

from deepagents import create_deep_agent

agent = create_deep_agent(model="openai:gpt-5.4")
result = agent.invoke(
    {"messages": [{"role": "user", "content": "Summarize the README and note any missing setup steps"}]}
)

Example 2: Composite backend with durable memory route

from deepagents import create_deep_agent
from deepagents.backends import CompositeBackend, StateBackend, StoreBackend
from langgraph.store.memory import InMemoryStore

agent = create_deep_agent(
    backend=lambda rt: CompositeBackend(
        default=StateBackend(rt),
        routes={"/memories/": StoreBackend(rt)},
    ),
    store=InMemoryStore(),
)

Example 3: Research specialist subagent

from deepagents import SubAgent, SubAgentMiddleware, create_deep_agent

researcher = SubAgent(
    name="researcher",
    description="Searches docs and summarizes findings",
    system_prompt="Return concise, source-backed notes.",
    tools=[search_docs],
)

agent = create_deep_agent(
    middleware=[SubAgentMiddleware(subagents=[researcher])]
)

Example 4: HITL for shell execution

from deepagents import create_deep_agent
from langgraph.checkpoint.memory import MemorySaver

agent = create_deep_agent(
    checkpointer=MemorySaver(),
    interrupt_on={"execute": True},
)

Best practices

1. Start with the default harness before customizing middleware. 2. Use StateBackend for scratch space and CompositeBackend when long-term memory is needed. 3. Treat LocalShellBackend as development-only and pair it with human approval. 4. Prefer FilesystemBackend(root_dir=..., virtual_mode=True) over unconstrained local file access. 5. Use skills for reusable capabilities and memory for persistent project context. 6. Add subagents for context isolation, not because multi-agent sounds impressive. 7. If routing becomes graph-shaped, move orchestration to LangGraph and keep deepagents as a specialist.

Framework selection guide

NeedRecommendation
Fast path to a capable coding or ops agentDeep Agents
Custom retry loops, branching, supervisor-owned stateLangGraph
Simple single-agent tool useLangChain create_agent
Durable workflow plus specialist harnessLangGraph + Deep Agents hybrid

References

Related skills

FAQ

What backends does deepagents offer?

StateBackend (ephemeral thread-scoped), StoreBackend (durable cross-thread memory), FilesystemBackend (real files under a root), LocalShellBackend (host shell, dev-only, high risk), and CompositeBackend (mix under path prefixes).

What is required for human-in-the-loop approval?

Human approval requires both interrupt_on and a checkpointer, and you resume on the same thread with a Command(resume=[...]).

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.