Skip to main content

soothe-nano

PyPI version Python

A ready-to-run coding agent you can drop into a script, CLI, or app.

Built on soothe-deepagents (filesystem, shell, subagents, skills, MCP). Nano adds the pieces you usually wire yourself: workspace safety, progressive tools/skills, research subagents, and a config-driven factory.

Vision

Give builders a production-shaped SootheNanoAgent in a few lines of Python.

  • Start small — chat, tools, or full composition
  • Stay portable — embed in notebooks, CLIs, or your own service
  • Compose what you need — tools, memory, subagents, skills, and MCP via config

Architecture

soothe-deepagents   agent harness (FS, shell, memory, skills base)
        ↓
soothe-nano         SootheNanoAgent + toolkits + subagents + MCP
                    + shared contracts (protocols, events, plugin API)
create_nano_agent(config)
        │
        ├─ model + middleware stack
        ├─ tools (builtin groups + yours)
        ├─ subagents (planner, research, browser, computer_use, …)
        ├─ skills (progressive discovery)
        └─ MCP (on-demand activation)

Features

Area What nano provides
Tools Builtin groups: shell, file ops, HTTP, search, data, image, datetime
Subagents Ready: plan, deep/academic research, browser_use, computer_use
Skills / tools in context Progressive loading — activate what the turn needs
Workspace Scoped workspace + security defaults
Config YAML / SootheConfig factory
Memory Optional long-term memory via protocols
MCP Registry and on-demand adapters
Plugins Decorator API (@plugin, @tool, @tool_group, @subagent) with discovery, registry, and lifecycle
Observability Langfuse tracing hooks, event registry, verbosity tiers
Resilience PersistentRetryRunner for 429/529/transient errors with exponential backoff + model fallback

vs deepagents

deepagents soothe-nano
What you get Opinionated harness Harness plus coding product defaults
Tools Bring your own Builtin groups out of the box
Subagents You define them Ready plan / research / browser / computer_use
Skills / tools in context Base support Progressive loading
Workspace Pluggable backends Scoped workspace + security defaults
Config Code-first YAML / SootheConfig factory
Plugin authoring — Decorator API + discovery + registry
Shared contracts — Protocols, events, plugin API (self-contained since 1.4)

Use deepagents when you want a minimal harness and full control.
Use nano when you want a coding agent that already knows how to work in a repo.

When to use nano

Scenario Fit
Coding assistant in a repo ✅ Files, shell, plan out of the box
Research / browsing agent ✅ Deep research, academic, browser_use subagents
Desktop GUI automation ✅ computer_use subagent (screenshots, clicks, keyboard)
Embed in your product ✅ Library API, no daemon required
One-shot / headless CLI ✅ See fj-ai
Plugin / toolkit author ✅ Depends on nano only
Simple Q&A chat ✅ Strip tools/subagents as needed

Install

uv add soothe-nano

Sandbox execution

Run the agent's shell and filesystem tools inside an ArcBox microVM while framework state stays on the host — see docs/arcbox-backend.md.

Quick start

Quick start

from soothe_nano import create_nano_agent
from soothe_nano.config import SootheConfig

agent = create_nano_agent(SootheConfig())
# agent.ainvoke / streaming — see examples/

For interactive + background execution in one runtime, use the dual-mode factory:

from soothe_nano import create_dual_mode_nano_agent, InteractionMode
from soothe_nano.config import SootheConfig

agent = create_dual_mode_nano_agent(SootheConfig(), mode=InteractionMode.INTERACTIVE)

Examples

Library examples live in examples/:

  1. 01_pure_nano_example.py — Pure model (no tools)
  2. 02_nano_with_tools_example.py — With tools
  3. 03_nano_with_memory_example.py — With memory
  4. 04_nano_with_subagents_example.py — With subagents
  5. 05_nano_full_composition_example.py — Full composition
  6. 06_nano_computer_use_example.py — Desktop GUI automation
  7. 07_nano_computer_use_weixin_favorites.py — WeChat favorites harvesting

LLM provider examples in examples/llm/ (OpenAI, Gemini, OpenRouter, Anthropic, Ollama, DashScope/custom OpenAI-compatible endpoints, structured output, multi-provider factory):

python examples/01_pure_nano_example.py

Plugin authoring

from soothe_nano.plugin import plugin, tool, subagent

@plugin("my-toolkit")
class MyToolkit:
    @tool
    def do_thing(self, x: str) -> str:
        """Do a thing."""
        return f"did: {x}"

Plugins are discovered from entry points, config, or the filesystem and loaded with dependency resolution via the PluginLifecycleManager.

Metadata

Release files for soothe-nano 2.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for soothe-nano 2.0.0
File Size Uploaded Provenance
soothe_nano-2.0.0.tar.gz 1.3 MB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for soothe-nano 2.0.0
File Interpreter ABI Platform
soothe_nano-2.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 3.0 MB

Release files / soothe_nano-2.0.0.tar.gz

Download URL soothe_nano-2.0.0.tar.gz
Size 1.3 MB
Tags Source
SHA-256 checksum
How to use checksums
849b7a9f57c00694ff5db7ce864ed2a391317ed7d0e57b528d7f74290918c258
BLAKE2b-256 checksum
How to use checksums
79d243745cac84723021ef5de3bd30dcdbb341166d68dc82ae4d2af38313538f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / soothe_nano-2.0.0-py3-none-any.whl

Download URL soothe_nano-2.0.0-py3-none-any.whl
Size 1.6 MB
Tags Python 3
SHA-256 checksum
How to use checksums
daa080e179db2a7d04fa0f5e6e66b8c7842672bc2871aff5b88a83c067ecf66a
BLAKE2b-256 checksum
How to use checksums
8e12fc0f6baf794d816dff3ac342133b89558a7c587af175d16c69df444743d7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Security for soothe-nano 2.0.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

2.0.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page