Metadata-Version: 2.4
Name: soothe
Version: 0.1.1
Summary: Multi-agent harness built on deepagents and langchain/langgraph.
License: MIT
License-File: LICENSE
Keywords: agents,ai,langchain,langgraph,llm,multi-agent,subagents
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: <4.0,>=3.11
Requires-Dist: aiosqlite>=0.22.1
Requires-Dist: anyio>=3.0.0
Requires-Dist: deepagents<1.0.0,>=0.4.10
Requires-Dist: langchain-community<1.0.0,>=0.3.0
Requires-Dist: langchain-core<2.0.0,>=1.2.18
Requires-Dist: langchain-mcp-adapters<1.0.0,>=0.2.0
Requires-Dist: langchain-openai<1.0.0,>=0.3.0
Requires-Dist: langchain<2.0.0,>=1.2.11
Requires-Dist: langgraph-checkpoint-sqlite<4.0.0,>=3.0.0
Requires-Dist: langgraph<2.0.0,>=1.1.1
Requires-Dist: pydantic-settings<3.0.0,>=2.0.0
Requires-Dist: pydantic<3.0.0,>=2.0.0
Requires-Dist: python-dotenv<2.0.0,>=1.0.0
Requires-Dist: pyyaml<7.0.0,>=6.0.0
Requires-Dist: textual>=0.40.0
Requires-Dist: typer<1.0.0,>=0.9.0
Provides-Extra: all
Requires-Dist: aiohttp>=3.9.0; extra == 'all'
Requires-Dist: browser-use<=0.12.0; extra == 'all'
Requires-Dist: claude-agent-sdk<0.1.49,>=0.1.40; extra == 'all'
Requires-Dist: google-genai>=0.3.0; extra == 'all'
Requires-Dist: ipython>=8.0.0; extra == 'all'
Requires-Dist: langchain-ollama>=0.3.0; extra == 'all'
Requires-Dist: langchain-tavily>=0.2.17; extra == 'all'
Requires-Dist: langgraph-checkpoint-postgres<4.0.0,>=3.0.0; extra == 'all'
Requires-Dist: matplotlib>=3.8.0; extra == 'all'
Requires-Dist: openai>=1.0.0; extra == 'all'
Requires-Dist: pexpect>=4.9.0; extra == 'all'
Requires-Dist: pgvector>=0.3; extra == 'all'
Requires-Dist: pillow>=10.0.0; extra == 'all'
Requires-Dist: psycopg[pool]>=3.1; extra == 'all'
Requires-Dist: pymupdf>=1.24.0; extra == 'all'
Requires-Dist: requests>=2.31.0; extra == 'all'
Requires-Dist: rocksdict>=0.3; extra == 'all'
Requires-Dist: tavily-python>=0.5.0; extra == 'all'
Requires-Dist: weaviate-client>=4.0; extra == 'all'
Requires-Dist: wizsearch<2.0.0,>=1.1.7; extra == 'all'
Provides-Extra: audio-full
Requires-Dist: aiohttp>=3.9.0; extra == 'audio-full'
Provides-Extra: bash
Requires-Dist: pexpect>=4.9.0; extra == 'bash'
Provides-Extra: browser
Requires-Dist: browser-use<=0.12.0; extra == 'browser'
Provides-Extra: claude
Requires-Dist: claude-agent-sdk<0.1.49,>=0.1.40; extra == 'claude'
Provides-Extra: document
Requires-Dist: pymupdf>=1.24.0; extra == 'document'
Provides-Extra: jina
Requires-Dist: aiohttp>=3.9.0; extra == 'jina'
Provides-Extra: media
Requires-Dist: openai>=1.0.0; extra == 'media'
Requires-Dist: pillow>=10.0.0; extra == 'media'
Provides-Extra: ollama
Requires-Dist: langchain-ollama>=0.3.0; extra == 'ollama'
Provides-Extra: pgvector
Requires-Dist: langgraph-checkpoint-postgres<4.0.0,>=3.0.0; extra == 'pgvector'
Requires-Dist: pgvector>=0.3; extra == 'pgvector'
Requires-Dist: psycopg[pool]>=3.1; extra == 'pgvector'
Provides-Extra: python-executor
Requires-Dist: ipython>=8.0.0; extra == 'python-executor'
Requires-Dist: matplotlib>=3.8.0; extra == 'python-executor'
Provides-Extra: research
Requires-Dist: langchain-tavily>=0.2.17; extra == 'research'
Requires-Dist: tavily-python>=0.5.0; extra == 'research'
Requires-Dist: wizsearch<2.0.0,>=1.1.7; extra == 'research'
Provides-Extra: rocksdb
Requires-Dist: rocksdict>=0.3; extra == 'rocksdb'
Provides-Extra: serper
Requires-Dist: requests>=2.31.0; extra == 'serper'
Provides-Extra: video
Requires-Dist: google-genai>=0.3.0; extra == 'video'
Provides-Extra: weaviate
Requires-Dist: weaviate-client>=4.0; extra == 'weaviate'
Provides-Extra: wizsearch
Requires-Dist: langchain-tavily>=0.2.17; extra == 'wizsearch'
Requires-Dist: wizsearch<2.0.0,>=1.1.7; extra == 'wizsearch'
Description-Content-Type: text/markdown

# Soothe

[![Python](https://img.shields.io/pypi/pyversions/soothe)](https://pypi.org/project/soothe/)
[![PyPI Version](https://img.shields.io/pypi/v/soothe)](https://pypi.org/project/soothe/)
[![License](https://img.shields.io/github/license/caesar0301/Soothe)](https://github.com/caesar0301/Soothe/blob/main/LICENSE)
[![GitHub Stars](https://img.shields.io/github/stars/caesar0301/Soothe)](https://github.com/caesar0301/Soothe)

Your intelligent, always-available AI assistant that works autonomously on complex tasks.

## What is Soothe?

Soothe is an AI-powered agent that doesn't just answer questions—it takes action. Unlike traditional chatbots that stop at providing information, Soothe can execute multi-step workflows, conduct research, browse the web, write code, and manage long-running tasks autonomously.

Think of Soothe as a tireless digital colleague who can:
- Research topics across the web and synthesize findings
- Execute complex workflows that span hours or days
- Learn from past interactions and remember important context
- Work independently while you focus on other things
- Coordinate multiple specialized tools and agents

## Design Philosophy

### Autonomous Intelligence

Soothe is built for **autonomous operation**. Once you give it a goal, it can:
- Break down complex objectives into manageable steps
- Execute those steps without constant supervision
- Reflect on results and adjust its approach
- Continue working across multiple sessions if needed

You don't need to micromanage every step. Soothe handles the details while keeping you informed of progress.

### Persistent Memory

Soothe remembers. It maintains:
- **Context within conversations**: Accumulates knowledge as it works
- **Memory across sessions**: Recalls important findings from past interactions
- **Goal tracking**: Keeps track of long-term objectives and their status

This means you can have ongoing, evolving conversations without repeating yourself.

### Privacy-First Design

Your data stays under your control:
- Browser automation runs locally with privacy-first defaults
- No mandatory cloud services or telemetry
- Configurable data persistence on your own infrastructure
- API keys and secrets managed through environment variables

### Extensible Architecture

Soothe grows with your needs:
- Built-in tools for web search, browsing, code execution, and more
- Specialized subagents for planning, research, and automation
- Integration with external services via MCP (Model Context Protocol)
- Customizable policies for security and access control

## What Can Soothe Do?

### Research & Analysis
- Search the web and synthesize information from multiple sources
- Analyze documents, codebases, and datasets
- Generate reports and summaries
- Track developments over time

### Task Automation
- Execute multi-step workflows autonomously
- Browse websites, fill forms, and extract data
- Run code and scripts
- Manage files and directories

### Planning & Execution
- Break down complex goals into actionable plans
- Execute plans step-by-step with progress tracking
- Adapt plans based on results
- Handle dependencies and priorities

### Long-Running Operations
- Work on tasks that span hours or days
- Resume work after interruptions
- Maintain state across sessions
- Operate in the background while you do other things

## Getting Started

### Quick Start

1. **Install Soothe**:
   ```bash
   pip install soothe
   ```

2. **Set your API key**:
   ```bash
   export OPENAI_API_KEY=sk-your-key-here
   ```

3. **Run Soothe**:
   ```bash
   soothe run
   ```

That's it! You'll see an interactive terminal interface where you can start giving Soothe tasks.

## Learn More

- **[User Guide](docs/user_guide.md)**: Complete guide for using Soothe
- **[Documentation](docs/)**: Design specifications and implementation guides
- **[Examples](docs/user_guide.md#examples)**: More usage examples and patterns

## License

MIT