atomic-monorepo is the development repository for Atomic Agents, a lightweight and modular Python framework for building Agentic AI applications. The framework is built around the principle of atomicity - creating single-purpose, reusable, and composable components for AI pipelines.
Atomic Agents bridges the gap between flexibility and reliability in production AI applications by providing:
- Predictable AI Behavior: Controlled, schema-driven agent construction vs. autonomous but unpredictable multi-agent systems
- Modular Development: Build AI applications using familiar software engineering principles (LEGO-like composability)
- Type Safety: Consistent input/output contracts through Pydantic schemas
- Developer Control: Full visibility and control over AI behavior with no hidden abstractions
Built on top of Instructor (for structured LLM outputs) and Pydantic (for data validation).
This repository contains four main packages/projects:
atomic-monorepo/
├── atomic-agents/ # Core framework library (main package)
├── atomic-assembler/ # CLI tool for managing components
├── atomic-examples/ # Example projects and use cases
├── atomic-forge/ # Collection of downloadable tools
├── docs/ # Sphinx documentation
├── guides/ # Development guides
├── .github/workflows/ # CI/CD pipelines
├── pyproject.toml # Project configuration
└── README.md # Main documentation
Published as: atomic-agents on PyPI
Current Version: 2.2.2
Purpose: Main Python package containing all core framework components
Key Components:
agents/- AtomicAgent class and agent configurationbase/- Base abstractions (BaseIOSchema, BaseTool, BasePrompt, BaseResource)context/- Chat history and system prompt generationconnectors/- External integrations (MCP support)lib/- Extended library components (components, factories, utils)memory/- Memory management systemsprompting/- Prompt engineering utilitiesservices/- Service integrations
Installation:
pip install atomic-agentsCommand: atomic
Purpose: Terminal UI application for browsing, downloading, and managing tools from atomic-forge
Built With: Textual (TUI framework)
Features:
- Interactive tool exploration
- Download tools directly into your project
- Manage tool dependencies
Usage:
atomic # Launch interactive TUIPurpose: Complete, runnable example implementations demonstrating framework capabilities
Available Examples:
quickstart/- Basic getting started examplesdeep-research/- Research agent implementationsweb-search-agent/- Web search integrationrag-chatbot/- RAG (Retrieval Augmented Generation)youtube-summarizer/- Video transcript summarizationorchestration-agent/- Multi-agent orchestration patternsmcp-agent/- Model Context Protocol integrationfastapi-memory/- API with memory/state management- And 5+ more examples...
Each example is self-contained and demonstrates specific patterns and capabilities.
Not a Python package - This is a downloadable tool collection that users integrate into their projects.
Philosophy: Tools are NOT bundled with the framework. Instead, users download individual tools for full control and customization.
Available Tools:
arxiv_search/- Academic paper search via the public arXiv APIbocha_search/- BoCha web searchcalculator/- Mathematical computation tooldatetime_tool/- Timezone-aware now / parse / convert / shift / difffia_signals/- Crypto market intelligence (regime, signals, yields, gas, trending, wallet risk)hackernews_search/- Hacker News search via the free Algolia APIpdf_reader/- PDF text + metadata extraction (local file or URL, page-range support)searxng_search/- Privacy-focused search integrationtavily_search/- Tavily API search toolweather/- Current conditions and daily/hourly forecast via Open-Meteo (no key)webpage_scraper/- Web scraping capabilitieswikipedia_search/- Wikipedia search in any language edition (no key)youtube_transcript_scraper/- YouTube transcript extraction
Benefits:
- Only install what you need (reduces dependency bloat)
- Full control to modify tools for your specific use case
- Tools become part of your codebase (no black boxes)
Every Atomic Agent consists of:
- System Prompt - Defines agent behavior and purpose
- Input Schema (Pydantic model) - Validates and structures input
- Output Schema (Pydantic model) - Ensures consistent output format
- Chat History - Maintains conversation context
- Context Providers - Injects dynamic runtime context
- Tools (optional) - Function calling capabilities
All data flows through typed Pydantic schemas:
from atomic_agents.base import BaseIOSchema
from pydantic import Field
class CustomOutputSchema(BaseIOSchema):
chat_message: str = Field(..., description="The response message")
suggested_questions: list[str] = Field(..., description="Follow-up questions")Agents can be chained by connecting output schemas to input schemas:
Agent A (OutputSchemaA) → Agent B (InputSchemaB) → Agent C (OutputSchemaC)
This creates predictable data flow pipelines with type safety at each step.
Dynamic context injection pattern allows runtime enhancement of prompts without modifying agent code:
context_provider = CustomContextProvider()
agent = AtomicAgent(
system_prompt=prompt,
input_schema=InputSchema,
output_schema=OutputSchema,
context_providers=[context_provider] # Inject runtime context
)Full support for MCP enables connection to external tools and resources through standardized interfaces:
- Connect to MCP servers
- Use remote tools as if they were local
- Access external resources seamlessly
- Standard protocol for tool integration
- Language: Python 3.12+
- AI/LLM: Instructor (supports multiple providers)
- Data Validation: Pydantic v2
- CLI Framework: Textual (TUI), Rich (terminal formatting)
- Testing: pytest with coverage
- Documentation: Sphinx + MyST + ReadTheDocs theme
- Build System: uv (with hatchling)
Through Instructor, Atomic Agents supports all major LLM providers:
- OpenAI
- Anthropic (Claude)
- Groq
- Mistral
- Cohere
- Google Gemini
- Ollama (local models)
- Any Instructor-compatible provider
- Synchronous:
agent.run(input_data) - Asynchronous:
await agent.run_async(input_data) - Streaming:
agent.run_stream(input_data)andagent.run_async_stream(input_data)
- Python ≥3.12, <4.0
- uv (package manager)
# Clone the repository
git clone https://github.com/eigenwise/atomic-agents.git
cd atomic-monorepo
# Install dependencies
uv sync
# Install all workspace packages (examples and tools)
uv sync --all-packages# Code formatting
uv run black atomic-agents atomic-assembler atomic-examples atomic-forge
# Linting
uv run flake8 --extend-exclude=.venv atomic-agents atomic-assembler atomic-examples atomic-forge
# Testing
uv run pytest --cov=atomic_agents atomic-agents
# Build documentation
cd docs && make html- Formatter: Black (line length: 127)
- Linter: Flake8
- Testing: pytest with coverage tracking
- Type Safety: Pydantic runtime validation
Two GitHub Actions workflows:
- code-quality.yml - Runs Black, Flake8, and pytest on push/PR to main/v2.0
- docs.yml - Builds and deploys Sphinx documentation
Each component does one thing well. Agents, tools, and schemas are atomic units of functionality.
Pydantic schemas enforce contracts at runtime, catching errors before they propagate.
Build complex behaviors by composing simple agents rather than deep inheritance hierarchies.
No hidden magic - full control over what your agent does and how it does it.
- Prompts define behavior
- Schemas define data contracts
- Tools define capabilities
- Context Providers inject runtime information
Recent improvements include:
- Cleaner imports (removed
.libfrom import paths) - Renamed classes for clarity (
BaseAgent→AtomicAgent) - Better type safety with generic type parameters
- Enhanced streaming capabilities
- Improved module organization
- Backward compatibility layer for v1.x migration
- Main Docs: https://eigenwise.github.io/atomic-agents/
- Repository: https://github.com/eigenwise/atomic-agents
- PyPI: https://pypi.org/project/atomic-agents/
- Discord: https://discord.gg/J3W9b5AZJR
- Subreddit: /r/AtomicAgents
- YouTube overview and quickstart videos
- Medium articles on philosophy and patterns
- Comprehensive examples in
atomic-examples/ - Interactive tutorials in documentation
from atomic_agents import AtomicAgent
from atomic_agents.base import BaseIOSchema
from pydantic import Field
# Define schemas
class InputSchema(BaseIOSchema):
query: str = Field(..., description="User's question")
class OutputSchema(BaseIOSchema):
answer: str = Field(..., description="Agent's response")
confidence: float = Field(..., description="Confidence score 0-1")
# Create agent
agent = AtomicAgent(
system_prompt="You are a helpful assistant. Provide accurate answers.",
input_schema=InputSchema,
output_schema=OutputSchema,
model="gpt-5-mini",
)
# Run agent
result = agent.run(InputSchema(query="What is atomic computing?"))
print(result.answer)
print(f"Confidence: {result.confidence}")Atomic Agents emphasizes:
- Developer Experience - Clean APIs, type safety, familiar patterns
- Modularity - LEGO-like composability of components
- Control - Full visibility and control over AI behavior
- Production Readiness - Schema validation, testing, CI/CD
- Community - Active development with examples, docs, and support
This framework is designed for developers who want to build reliable, maintainable AI applications using standard software engineering practices, rather than dealing with unpredictable autonomous agent systems.
This project captures repeatable agent workflows as small, single-purpose,
verified skills under .claude/skills/. Build and maintain them with the
skill-forge skill — never do a repeatable workflow ad hoc.
Proactively (notice → propose → ask): while working, if you notice a multi-step workflow being repeated with no skill, a SKILL.md growing past ~500 lines or sprouting a second capability, a skill whose instructions have drifted from reality, or two skills with overlapping triggers — briefly propose forging or refactoring, then wait for my go-ahead. Never forge or restructure silently or mid-task without consent.
When building/changing a skill: keep it atomic (one capability; if it needs an "and", it's two skills), compose the shared surfaces below instead of reimplementing, always include a runnable/documented proof of its success criteria, and cross-reference related skills both ways.
- Stack / package manager: Python ≥3.12, uv workspace (hatchling build); Pydantic v2 + Instructor for structured LLM output
- Verify command(s):
uv run black atomic-agents atomic-assembler atomic-examples atomic-forge(line-length 127);uv run flake8 --extend-exclude=.venv atomic-agents atomic-assembler atomic-examples atomic-forge;uv run pytest --cov=atomic_agents atomic-agents - Shared surfaces to compose: core framework
atomic-agents/atomic_agents/(AtomicAgent, BaseIOSchema, BaseTool, context providers, MCP connectors); CLIatomic(atomic-assembler); downloadable toolsatomic-forge/tools/*; runnable examplesatomic-examples/* - Skill convention: frontmatter
name+description(optionalallowed-tools); one skill per dir at.claude/skills/<name>/SKILL.md - Current skills:
release(project-local);skill-forge+skill-forge-setup(installed via pluginclaude-dev-kitchen)