Atomic Agents
Type: full-code · Vendor: BrainBlend AI · Language: Python · License: MIT · Status: active · Status in practice: emerging
Provide a lightweight, schema-driven framework for building Agentic AI pipelines as composable LEGO-style blocks — each AtomicAgent or tool has a Pydantic input schema, output schema, system prompt, history, and context providers, so components chain by aligning schemas.
Description. Atomic Agents (BrainBlend AI, MIT) is 'designed around the concept of atomicity to be an extremely lightweight and modular framework for building Agentic AI pipelines and applications.' Components are 'LEGO blocks': each AtomicAgent or BaseTool is single-purpose, reusable, and predictable, with explicit Pydantic input and output schemas. The framework is built on Instructor for provider portability (OpenAI, Anthropic, Groq, Ollama, Mistral, Cohere, Gemini), exposes ChatHistory and BaseDynamicContextProvider for runtime context injection, and ships an Atomic Forge CLI with 13+ pre-built tools. v2.0 renamed BaseAgent to AtomicAgent and added run_stream() / run_async_stream().
Agent loop shape. Single-agent IPO (Input → Process → Output) cycle. An AtomicAgent owns a Pydantic input schema, system prompt, ChatHistory, output schema, and an Instructor-backed LLM client. Each run() call validates the input, assembles prompt + history + dynamic context, calls the model under structured-output mode via Instructor, validates the output, and returns it. Tools are separate BaseTool blocks with their own schemas; chaining is purely by matching one block's output schema to the next's input schema — there is no built-in supervisor or orchestrator runtime.
Primary use cases
- schema-driven single-agent pipelines
- multi-step chains where components align by Pydantic schema
- provider-portable agents via Instructor
- custom tools registered through Atomic Forge CLI
Key concepts
- AtomicAgent (docs) — Core agent class (renamed from BaseAgent in v2.0) with input/output schemas, system prompt, history, and context providers.
- Pydantic schemas → structured-output — Each block declares an input schema and output schema; chaining is by schema alignment.
- Instructor integration → schema-extensibility — All LLM calls go through Instructor, giving multi-provider support (OpenAI, Anthropic, Groq, Ollama, Mistral, Cohere, Gemini).
- ChatHistory — Conversation history component attached to an agent.
- BaseDynamicContextProvider — Injects dynamic runtime information into the system prompt.
- Atomic Forge CLI → tool-use — CLI tool ('Atomic Assembler') that manages 13+ pre-built tools.
Patterns this full-code implements —
- ★★Structured Output
Every AtomicAgent and BaseTool declares Pydantic input/output schemas; Instructor enforces structured output on the model.
- ★★Schema Extensibility
Schema-aligned chaining is the framework's core compositional mechanism; provider portability via Instructor enables swapping models without touching schemas.
- ★★Tool Use
BaseTool blocks chain into agents by matching schemas; Atomic Forge CLI manages 13+ pre-built tools.
- ★★Prompt Chaining
Pipelines are built by chaining components whose output schema matches the next component's input schema.
- ★★Chain of Thought
Output schemas can model intermediate reasoning fields, but no explicit CoT helper is documented in core surveyed pages.
- ★★ReAct
ReAct-style tool loops can be built by chaining agent and tool blocks; not a first-class abstraction.
- ★★Model Context Protocol
MCP is not discussed in the main README. No verbatim upstream quote supporting first-class MCP integration found in surveyed v2.x README.
- ★★Agentic RAG
RAG is demonstrated as an example application (RAG Chatbot) using retrieval tools chained to an agent; not a first-class abstraction in the core framework.
- ★★Orchestrator-Workers
An orchestrator is user-implemented (Orchestration Agent example); the framework intentionally contrasts itself with autonomous multi-agent systems.
- ★★Supervisor
Orchestration Agent is shown as an example: an Orchestrator Agent decides between tools based on user input; not a built-in supervisor runtime, but the closest analogue documented.