Skip to main content

Deep Agent framework built on Pydantic-ai with planning, filesystem, and subagent capabilities

Project description

pydantic-deep

Pydantic AI Deep Agents Framework

Build Claude Code-Style AI Agents — In 10 Lines of Python

DocsExamplesPyPIDeepResearch

PyPI version Python 3.10+ License: MIT Coverage Status CI Pydantic AI

🔄 Unlimited Context via summarization  •  🤖 Subagent Delegation sync & async  •  🧩 Modular use only what you need  •  🎯 Fully Type-Safe


See It In Action

Excalidraw diagram generation Research report generation

Get Started in 60 Seconds

pip install pydantic-deep
from pydantic_ai_backends import StateBackend
from pydantic_deep import create_deep_agent, create_default_deps

agent = create_deep_agent()
deps = create_default_deps(StateBackend())

result = await agent.run("Create a todo list for building a REST API", deps=deps)

That's it. Your agent can now:

  • Plan tasks — break down complex work into steps
  • Read & write files — navigate and modify codebases
  • Delegate to subagents — spawn specialists for specific tasks
  • Load skills — use domain-specific instructions
  • Manage context — handle unlimited conversation length
  • Checkpoint & rewind — save conversation state, rewind, or fork sessions
  • Agent teams — shared TODO lists and peer-to-peer messaging
  • Persistent memory — remember facts across sessions via MEMORY.md
  • Lifecycle hooks — Claude Code-style hooks for audit, safety gates, and custom logic
  • Output styles — built-in or custom response formatting
  • Cost tracking — token/USD budgets with automatic enforcement
  • Middleware — composable before/after hooks with permission handling
  • Context files — auto-inject DEEP.md, AGENTS.md, CLAUDE.md into system prompt
  • Context manager — hybrid summarization + sliding window middleware

Same Architecture as the Best

pydantic-deep implements the deep agent architecture — the same patterns powering:

Product What They Built
🤖 Claude Code Anthropic's AI coding assistant
🦾 Manus AI Autonomous task execution
👨‍💻 Devin AI software engineer

Now you can build the same thing.

Inspired by: This framework is also inspired by LangChain's Deep Agents research on autonomous agent architectures.


DeepResearch — Full-Featured Reference App

Planner subagent asks clarifying questions

Plan Mode — planner asks clarifying questions before research

Parallel subagent research

Parallel Subagents — 5 agents researching simultaneously


Features

Core Toolsets

🧠 Planningpydantic-ai-todo

Task tracking with read_todos / write_todos. Subtasks & dependencies with cycle detection. PostgreSQL storage. Event system for webhooks.

📁 Filesystempydantic-ai-backend

Full access: ls, read_file, write_file, edit_file, glob, grep, execute. Docker sandbox for isolation. Permission system (allow/deny/ask). Session manager for multi-user apps.

🤖 Subagentssubagents-pydantic-ai

Delegate with task in sync or async mode. Background task management. Dynamic agent creation at runtime. Soft/hard cancellation.

💬 Summarizationsummarization-pydantic-ai

Two modes: LLM-based intelligent summaries or zero-cost sliding window. Trigger on tokens, messages, or context fraction. Custom prompts.

🛡️ Middlewarepydantic-ai-middleware

7 lifecycle hooks: before_run, after_run, before_model_request, before_tool_call, after_tool_call, on_tool_error, on_error. Composable chains. Permission handling.

Advanced Features

💾 Checkpointing — Save conversation state at intervals. Rewind to any checkpoint, or fork into a new session from a past state. In-memory and file-based stores.

👥 Agent Teams — Shared TODO lists with claiming and dependency tracking. Peer-to-peer message bus between team members. Spawn, assign, and dissolve teams via tools.

🪝 Hooks — Claude Code-style lifecycle hooks. Run shell commands or scripts on events like before_tool_call or after_run. Use for audit logging, safety gates, or custom side effects.

🧠 Persistent Memory — Agents read/write a MEMORY.md file that persists across sessions. Automatic injection into system prompt. Tools: read_memory, write_memory.

📄 Context Files — Auto-discover and inject DEEP.md, AGENTS.md, CLAUDE.md, and SOUL.md from the working directory into the system prompt.

🎨 Output Styles — Built-in styles (concise, detailed, markdown, etc.) or load custom styles from files. Control response formatting via output_style.

📋 Plan Mode — Dedicated plan mode subagent for structured planning before execution. Separate toolset with plan-specific instructions.

💰 Cost Tracking — Track token usage and USD costs per run. Set budgets with automatic enforcement. Callbacks for real-time cost updates.

📦 Eviction Processor — Automatically evict large tool outputs to files when they exceed token limits. Keeps conversation lean while preserving data access.

🔧 Patch Tool Calls — On session resume, patch stale tool call results so the model sees clean history without re-executing tools.

Built-in Capabilities

🎯 Skills — Load domain instructions from markdown files with YAML frontmatter.

📊 Structured Output — Type-safe responses with Pydantic models via output_type.

👤 Human-in-the-Loop — Built-in confirmation workflows for sensitive operations.

Streaming — Full streaming support for real-time responses.

🖼️ Image Support — Pass images to the agent for multi-modal analysis.


Use Cases

What You Want to Build Key Components
AI Coding Assistant Planning + Filesystem + Skills + Memory + Hooks
Data Analysis Agent File Uploads + Structured Output + Teams
Document Processor Filesystem + Summarization + Eviction
Research Agent Subagents + Planning + Checkpointing — see DeepResearch
Project Scaffolder Planning + Filesystem + Output Styles
Test Generator Filesystem + Docker Sandbox + Cost Tracking
Multi-Agent Workflow Teams + Subagents + Middleware
Audited Enterprise Agent Hooks + Middleware + Cost Tracking

Reference app: DeepResearch is a full-featured research agent built with pydantic-deep. It includes a web UI, MCP-powered web search, Excalidraw diagrams, code execution in Docker, and more. See deepresearch/README.md for setup instructions.


Modular — Use What You Need

Every component works standalone:

Component Package Use It For
Backends pydantic-ai-backend File storage, Docker sandbox
Planning pydantic-ai-todo Task tracking
Subagents subagents-pydantic-ai Task delegation
Summarization summarization-pydantic-ai Context management
Middleware pydantic-ai-middleware Lifecycle hooks, permissions

Full-stack template? fastapi-fullstack — Production-ready with FastAPI + Next.js


Go Deeper

Structured Output

from pydantic import BaseModel

class CodeReview(BaseModel):
    summary: str
    issues: list[str]
    score: int

agent = create_deep_agent(output_type=CodeReview)
result = await agent.run("Review the auth module", deps=deps)
print(result.output.score)  # Type-safe!

File Uploads

from pydantic_deep import run_with_files

with open("data.csv", "rb") as f:
    result = await run_with_files(
        agent,
        "Analyze this data and find trends",
        deps,
        files=[("data.csv", f.read())],
    )

Context Management

from pydantic_deep import create_summarization_processor

processor = create_summarization_processor(
    trigger=("tokens", 100000),
    keep=("messages", 20),
)
agent = create_deep_agent(history_processors=[processor])

Custom Subagents

agent = create_deep_agent(
    subagents=[
        {
            "name": "code-reviewer",
            "description": "Reviews code for quality issues",
            "instructions": "You are a senior code reviewer...",
            "preferred_mode": "sync",
        },
    ],
)

Checkpointing & Rewind

from pydantic_deep import create_deep_agent

agent = create_deep_agent(
    include_checkpoints=True,
    checkpoint_frequency="every_tool",  # "every_tool", "every_turn", or "manual_only"
    max_checkpoints=20,
)
# Agent gets tools: save_checkpoint, list_checkpoints, rewind_to

Agent Teams

agent = create_deep_agent(include_teams=True)
# Agent gets tools: spawn_team, assign_task, check_teammates,
#                   message_teammate, dissolve_team

Hooks (Claude Code-Style)

from pydantic_deep import Hook, HookEvent

agent = create_deep_agent(
    hooks=[
        Hook(
            event=HookEvent.PRE_TOOL_USE,
            command="echo 'Tool called: $TOOL_NAME' >> /tmp/audit.log",
        ),
    ],
)

Persistent Memory

agent = create_deep_agent(include_memory=True, memory_dir="./agent-data")
# Agent reads MEMORY.md on start, can write_memory to persist facts

Cost Tracking

agent = create_deep_agent(
    cost_tracking=True,
    cost_budget_usd=5.0,  # Stop if costs exceed $5
    on_cost_update=lambda info: print(f"Cost: ${info.total_usd:.4f}"),
)

Middleware

from pydantic_ai_middleware import before_tool_call, ToolDecision

@before_tool_call
async def audit(ctx, tool_name, tool_args):
    print(f"Calling {tool_name}")
    return ToolDecision.ALLOW

agent = create_deep_agent(middleware=[audit])

Output Styles

agent = create_deep_agent(output_style="concise")  # Built-in: concise, explanatory, formal, conversational

# Or load custom styles from a directory
agent = create_deep_agent(output_style="my-style", styles_dir="./styles")

Context Files

agent = create_deep_agent(
    context_files=["DEEP.md", "AGENTS.md"],  # Explicit files
    context_discovery=True,  # Auto-discover DEEP.md, CLAUDE.md, SOUL.md in working dir
)

Plan Mode

agent = create_deep_agent(include_plan=True, plans_dir="./plans")
# Agent gets a dedicated plan mode subagent for structured planning

Context Manager (Hybrid)

## Combines token tracking + auto-compression in a single middleware
agent = create_deep_agent(
    context_manager=True,
    context_manager_max_tokens=100000,
)

Skills

Create ~/.pydantic-deep/skills/review/SKILL.md:

---
name: code-review
description: Review Python code for quality
---

# Code Review Skill

Check for:
- [ ] Security issues
- [ ] Type hints
- [ ] Error handling
agent = create_deep_agent(
    skill_directories=[{"path": "~/.pydantic-deep/skills", "recursive": True}],
)

Architecture

                              pydantic-deep
┌─────────────────────────────────────────────────────────────────────┐
│                                                                     │
│   ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌─────────┐  │
│   │ Planning │ │Filesystem│ │ Subagents│ │  Skills  │ │  Teams  │  │
│   └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬────┘  │
│        │            │            │            │            │        │
│        └────────────┴─────┬──────┴────────────┴────────────┘        │
│                           │                                         │
│                           ▼                                         │
│  Summarization ──► ┌──────────────────┐ ◄── Middleware              │
│  Checkpointing ──► │    Deep Agent    │ ◄── Hooks                   │
│  Cost Tracking ──► │   (pydantic-ai)  │ ◄── Memory                  │
│                    └────────┬─────────┘                              │
│                             │                                       │
│           ┌─────────────────┼─────────────────┐                     │
│           ▼                 ▼                 ▼                     │
│    ┌────────────┐    ┌────────────┐    ┌────────────┐               │
│    │   State    │    │   Local    │    │   Docker   │               │
│    │  Backend   │    │  Backend   │    │  Sandbox   │               │
│    └────────────┘    └────────────┘    └────────────┘               │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

Related Projects


Contributing

git clone https://github.com/vstorm-co/pydantic-deepagents.git
cd pydantic-deepagents
make install
make test  # 100% coverage required
make all   # lint + typecheck + test

See CONTRIBUTING.md for full guidelines.


Star History

Star History


License

MIT — see LICENSE

Built with ❤️ by vstorm-co

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pydantic_deep-0.2.17.tar.gz (8.5 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pydantic_deep-0.2.17-py3-none-any.whl (78.6 kB view details)

Uploaded Python 3

File details

Details for the file pydantic_deep-0.2.17.tar.gz.

File metadata

  • Download URL: pydantic_deep-0.2.17.tar.gz
  • Upload date:
  • Size: 8.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pydantic_deep-0.2.17.tar.gz
Algorithm Hash digest
SHA256 22ec7c3b27317ea2bb0de78d60405c90d9f8a077fcd981661b172dec7939047e
MD5 21928bc70864edd11aed2b9fdf658b74
BLAKE2b-256 f37eb324daa41eddcc3b46243fc4e471140db20f2bcd87f7e840694b8e130ddf

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydantic_deep-0.2.17.tar.gz:

Publisher: publish.yml on vstorm-co/pydantic-deepagents

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pydantic_deep-0.2.17-py3-none-any.whl.

File metadata

  • Download URL: pydantic_deep-0.2.17-py3-none-any.whl
  • Upload date:
  • Size: 78.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pydantic_deep-0.2.17-py3-none-any.whl
Algorithm Hash digest
SHA256 60c85b332227cfc98e228d990e917224cf79076bc17dc9e1975b0ec50751f7de
MD5 182dff4ee7f6a719ba8d916af4cd363d
BLAKE2b-256 98b37929e9d7addf488dc509fed01d10d3003a9be93373206bf70b7cc47efc12

See more details on using hashes here.

Provenance

The following attestation bundles were made for pydantic_deep-0.2.17-py3-none-any.whl:

Publisher: publish.yml on vstorm-co/pydantic-deepagents

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page