Python SDK for building single-agent and multi-agent AI systems
Project description
Nanitics
Python SDK for building single-agent and multi-agent AI systems.
Why Nanitics?
Nanitics differs from other agent frameworks in three ways:
- Composable primitives, not a framework. Pick the pieces you need — agent strategies, coordination patterns, memory, evaluation, HITL, tools — and compose them. No runtime or opinionated workflow shape is imposed.
- Trace-first observability. Every agent loop, tool call, and coordination event emits a structured event. The built-in Observatory trace viewer turns that into a live debugging surface from day one.
- Real-services validation. Every public component is validated against real LLM providers before release, not just mocks. Mocks drive fast tests; real services prove correctness.
Features
Agent Strategies — Built-in strategies for different problem types: ReAct, Reasoning, Reflexion, ReWOO, CodeAct, LATS, and Tree of Thought.
Memory — Working, episodic, long-term, and semantic memory for persistent agent state.
Orchestration — Compose agents into pipelines, DAGs, loops, conditionals, and map-reduce workflows.
Multi-Agent Coordination — Handoff, supervisor, blackboard, debate, consensus, bidding, broadcast, message bus, peer network, orchestrator, and agent-as-tool patterns.
Evaluation — Programmatic and LLM-based evaluators for assessing agent output quality.
Human-in-the-Loop — Approval gates, revision gates, and durable HITL with checkpoint suspension for long-running workflows.
Tools — Function tools, conditional tools, and tool composition with automatic schema generation.
Observability — Event-based tracing with the Observatory trace viewer for inspecting agent execution.
Planning — Upfront and adaptive planning with goal tracking and plan adherence evaluation.
Safety — Iteration limits, cancellation tokens, and sandboxed code execution.
Quick Start
For a full end-to-end run against a real LLM, see the deployment guide.
Install Nanitics:
pip install nanitics
Create a ReAct agent with a tool, driven by a scripted MockLLMClient so the snippet runs without an API key:
import asyncio
from nanitics import (
InMemoryEmitter,
LLMResponse,
MockLLMClient,
ReActAgent,
ToolCall,
Usage,
tool,
)
@tool("greet", "Greet someone by name")
async def greet(name: str) -> str:
return f"Hello, {name}!"
async def main():
llm = MockLLMClient(responses=[
LLMResponse(
content="I'll greet them.",
tool_calls=[ToolCall(id="1", name="greet", arguments={"name": "world"})],
usage=Usage(input_tokens=50, output_tokens=20),
model="mock",
stop_reason="tool_use",
),
LLMResponse(
content="Hello, world!",
tool_calls=[],
usage=Usage(input_tokens=80, output_tokens=15),
model="mock",
stop_reason="end_turn",
),
])
agent = ReActAgent(
name="my-agent",
llm_client=llm,
emitter=InMemoryEmitter("trace-001"),
system_prompt="You are a helpful assistant.",
tools=[greet],
)
result = await agent.run("Say hello to the world")
print(result.output)
asyncio.run(main())
To run the same agent against a real provider, set ANTHROPIC_API_KEY and swap MockLLMClient(...) for AnthropicLLMClient(model="claude-haiku-4-5"). Everything else above is unchanged.
See the Getting Started guide for a full walkthrough. For the full API, read the docstrings in the source tree under nanitics/.
LLM Providers
Nanitics supports multiple LLM providers:
| Provider | Install | Client |
|---|---|---|
| Anthropic | pip install nanitics |
AnthropicLLMClient |
| OpenAI | pip install nanitics |
OpenAILLMClient |
| Mistral | pip install nanitics[mistral] |
MistralLLMClient |
| LiteLLM | pip install nanitics[litellm] |
LiteLLMClient |
For testing and development, use MockLLMClient — no API keys required.
Examples
The examples directory contains runnable examples covering every SDK component. All examples use MockLLMClient for deterministic, API-key-free execution.
See the examples README for a complete index.
Documentation
Primary entry points:
| Guide | Description |
|---|---|
| Getting Started | Build your first agent |
| Core Concepts | The agent loop, tools, prompts, LLM clients |
| Agent Types | Agent strategies and when to use each |
| Multi-Agent Coordination | Coordination patterns for multi-agent systems |
| Deployment | Full-stack compose, take-to-own-infra, resource and shutdown patterns |
| API Reference | Generated from source docstrings — signatures, fields, constraints |
For the complete catalogue — Memory, Orchestration, Evaluation, HITL, Tools, Planning, Context Management, Error Handling, Safety, Security, Observability, Building Applications, Architecture, SDK Internals, Diagnosing Agent Issues, Testing, Streaming, Production, Built-in Tools, Local LLMs — see the full guides index.
Project
- Status: Pre-1.0. The public API is
nanitics.__all__; see the deprecation policy for the change contract. - Contributing: CONTRIBUTING.md for guidelines, DEVELOPMENT.md for setup.
- Governance: GOVERNANCE.md covers decisions and release cadence; MAINTAINERS.md names the current maintainers.
- Trademark: TRADEMARK.md for who owns the Nanitics name and what uses are permitted.
- Questions and ideas: GitHub Discussions; Getting Help for the channel split.
- Security: report vulnerabilities via SECURITY.md; SDK security posture in the security guide.
License
Apache License 2.0. See LICENSE for the full text.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nanitics-0.1.1.tar.gz.
File metadata
- Download URL: nanitics-0.1.1.tar.gz
- Upload date:
- Size: 1.7 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7048dd042174dbb98d0e256ac55f52856a44bd4f3c262bd6b018df82a9911466
|
|
| MD5 |
3f746b3f79ae097237dc119379e5f0fa
|
|
| BLAKE2b-256 |
297048a4c8a3d1ceaf06d0315733bbf7b8f6012f75e9c31262aea911dd268a8a
|
Provenance
The following attestation bundles were made for nanitics-0.1.1.tar.gz:
Publisher:
release.yml on nanitics/nanitics
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nanitics-0.1.1.tar.gz -
Subject digest:
7048dd042174dbb98d0e256ac55f52856a44bd4f3c262bd6b018df82a9911466 - Sigstore transparency entry: 1417974113
- Sigstore integration time:
-
Permalink:
nanitics/nanitics@adaa91bc6dd2250eab2faa18ff95f13def6e8dc6 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/nanitics
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@adaa91bc6dd2250eab2faa18ff95f13def6e8dc6 -
Trigger Event:
release
-
Statement type:
File details
Details for the file nanitics-0.1.1-py3-none-any.whl.
File metadata
- Download URL: nanitics-0.1.1-py3-none-any.whl
- Upload date:
- Size: 359.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b19a5dc4784e73407d6cdb2b60c3232cd2fd4e25359f440e95fb78812e9dcf96
|
|
| MD5 |
77e01d998359a66183c7c3eca93ba554
|
|
| BLAKE2b-256 |
86457851794e1ca7e2d42b5c755e0651e118b47b4ab205ffa78c3eca37d43bf3
|
Provenance
The following attestation bundles were made for nanitics-0.1.1-py3-none-any.whl:
Publisher:
release.yml on nanitics/nanitics
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nanitics-0.1.1-py3-none-any.whl -
Subject digest:
b19a5dc4784e73407d6cdb2b60c3232cd2fd4e25359f440e95fb78812e9dcf96 - Sigstore transparency entry: 1417974144
- Sigstore integration time:
-
Permalink:
nanitics/nanitics@adaa91bc6dd2250eab2faa18ff95f13def6e8dc6 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/nanitics
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@adaa91bc6dd2250eab2faa18ff95f13def6e8dc6 -
Trigger Event:
release
-
Statement type: