Metadata-Version: 2.4
Name: soothe
Version: 0.5.3
Summary: Soothe - Protocol-driven multi-agent orchestration framework (daemon server)
Project-URL: Homepage, https://github.com/OpenSoothe/soothe
Project-URL: Documentation, https://soothe.readthedocs.io
Project-URL: Repository, https://github.com/OpenSoothe/soothe
License: MIT
Keywords: agents,ai,langchain,langgraph,llm,multi-agent,soothe,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: Programming Language :: Python :: 3.14
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: <4.0,>=3.11
Requires-Dist: aiohttp>=3.9.0
Requires-Dist: aiosqlite>=0.22.1
Requires-Dist: anyio>=3.0.0
Requires-Dist: bubus>=1.5.6
Requires-Dist: deepagents<1.0.0,>=0.4.10
Requires-Dist: fastapi>=0.104.0
Requires-Dist: langchain-community<1.0.0,>=0.3.0
Requires-Dist: langchain-core<2.0.0,>=1.2.18
Requires-Dist: langchain-experimental<1.0.0,>=0.0.50
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-postgres>=2.0.0
Requires-Dist: langgraph-checkpoint-sqlite<4.0.0,>=3.0.0
Requires-Dist: langgraph-checkpoint<5.0.0,>=4.0.0
Requires-Dist: langgraph<2.0.0,>=1.1.1
Requires-Dist: openai<3.0.0,>=1.104.2
Requires-Dist: pexpect>=4.9.0
Requires-Dist: psutil>=5.9.0
Requires-Dist: psycopg[binary,pool]>=3.2.0
Requires-Dist: pydantic-settings<3.0.0,>=2.0.0
Requires-Dist: pydantic<3.0.0,>=2.0.0
Requires-Dist: pyjwt>=2.8.0
Requires-Dist: pyperclip>=1.8.0
Requires-Dist: python-dotenv<2.0.0,>=1.0.0
Requires-Dist: pyyaml<7.0.0,>=6.0.0
Requires-Dist: requests>=2.32.3
Requires-Dist: soothe-sdk<1.0.0,>=0.5.0
Requires-Dist: sqlite-vec>=0.1.0
Requires-Dist: uvicorn[standard]>=0.24.0
Requires-Dist: websockets>=12.0
Provides-Extra: all
Requires-Dist: anthropic>=0.18.0; extra == 'all'
Requires-Dist: arxiv>=2.1.0; extra == 'all'
Requires-Dist: browser-use<=0.12.0,>=0.11.0; extra == 'all'
Requires-Dist: chardet<6; extra == 'all'
Requires-Dist: claude-agent-sdk>=0.1.0; extra == 'all'
Requires-Dist: dashscope>=1.20.0; extra == 'all'
Requires-Dist: docx2txt>=0.8.0; extra == 'all'
Requires-Dist: langchain-tavily>=0.2.17; extra == 'all'
Requires-Dist: langfuse<4.0.0,>=3.0.0; extra == 'all'
Requires-Dist: opencv-python>=4.8.0; extra == 'all'
Requires-Dist: openpyxl>=3.1.0; extra == 'all'
Requires-Dist: pandas>=2.0.0; extra == 'all'
Requires-Dist: pillow>=10.0.0; extra == 'all'
Requires-Dist: pydub>=0.25.0; extra == 'all'
Requires-Dist: pygithub>=2.0.0; extra == 'all'
Requires-Dist: pymupdf>=1.24.0; extra == 'all'
Requires-Dist: pypdf>=3.0.0; extra == 'all'
Requires-Dist: sentence-transformers>=2.2.0; extra == 'all'
Requires-Dist: soothe-cli>=0.5.0; extra == 'all'
Requires-Dist: tavily-python>=0.5.0; extra == 'all'
Requires-Dist: wikipedia>=1.4.0; extra == 'all'
Requires-Dist: wizsearch<2.0.0,>=1.1.8; extra == 'all'
Requires-Dist: yt-dlp>=2023.0.0; extra == 'all'
Provides-Extra: claude
Requires-Dist: anthropic>=0.18.0; extra == 'claude'
Requires-Dist: claude-agent-sdk>=0.1.0; extra == 'claude'
Provides-Extra: cli
Requires-Dist: soothe-cli>=0.5.0; extra == 'cli'
Provides-Extra: dashscope
Requires-Dist: dashscope>=1.20.0; extra == 'dashscope'
Provides-Extra: dev
Requires-Dist: mypy>=1.0.0; extra == 'dev'
Requires-Dist: pytest-asyncio>=1.3.0; extra == 'dev'
Requires-Dist: pytest-cov; extra == 'dev'
Requires-Dist: pytest>=8.0.0; extra == 'dev'
Requires-Dist: ruff>=0.12.0; extra == 'dev'
Provides-Extra: document
Requires-Dist: docx2txt>=0.8.0; extra == 'document'
Requires-Dist: pymupdf>=1.24.0; extra == 'document'
Requires-Dist: pypdf>=3.0.0; extra == 'document'
Provides-Extra: github
Requires-Dist: pygithub>=2.0.0; extra == 'github'
Provides-Extra: langfuse
Requires-Dist: langfuse<4.0.0,>=3.0.0; extra == 'langfuse'
Provides-Extra: media
Requires-Dist: pillow>=10.0.0; extra == 'media'
Requires-Dist: pydub>=0.25.0; extra == 'media'
Requires-Dist: yt-dlp>=2023.0.0; extra == 'media'
Provides-Extra: research
Requires-Dist: arxiv>=2.1.0; extra == 'research'
Requires-Dist: chardet<6; extra == 'research'
Requires-Dist: langchain-tavily>=0.2.17; extra == 'research'
Requires-Dist: tavily-python>=0.5.0; extra == 'research'
Requires-Dist: wikipedia>=1.4.0; extra == 'research'
Requires-Dist: wizsearch<2.0.0,>=1.1.8; extra == 'research'
Provides-Extra: semantic
Requires-Dist: sentence-transformers>=2.2.0; extra == 'semantic'
Provides-Extra: tabular
Requires-Dist: openpyxl>=3.1.0; extra == 'tabular'
Requires-Dist: pandas>=2.0.0; extra == 'tabular'
Provides-Extra: video
Requires-Dist: opencv-python>=4.8.0; extra == 'video'
Requires-Dist: pillow>=10.0.0; extra == 'video'
Provides-Extra: websearch
Requires-Dist: browser-use<=0.12.0,>=0.11.0; extra == 'websearch'
Description-Content-Type: text/markdown

# Soothe Daemon Server

Agent runtime server with WebSocket/HTTP transport.

## Installation

```bash
pip install soothed
```

## Usage

The `soothed` command manages the server:

```bash
# Start daemon (foreground)
soothed start --foreground

# Start daemon (background)
soothed start

# Check status
soothed status

# Stop daemon
soothed stop

# Health checks
soothed doctor
```

## Architecture

This package is the **server** component that runs the agent runtime:

- **WebSocket transport** - primary bidirectional streaming
- **HTTP REST transport** - optional REST API
- **Full agent runtime** - langchain, langgraph, tools, subagents
- **Thread persistence** - RocksDB, SQLite, PostgreSQL support

## Dependencies

- `soothe-sdk>=0.2.0` - Shared types, protocol
- `deepagents>=0.4.10` - Agent orchestration
- `langchain>=1.2.11` - LLM framework
- `langgraph>=1.1.1` - Graph-based workflows

## Configuration

Daemon uses `config.yml` (same as original Soothe):

```yaml
daemon:
  transports:
    websocket:
      host: "localhost"
      port: 8765

providers:
  openai:
    api_key: "${OPENAI_API_KEY}"
    
tools: [...]
subagents: [...]
```

## Related Packages

- **soothe-cli**: Client package (CLI/TUI)
- **soothe-sdk**: Shared SDK (types, client utilities)

## Testing

Run daemon package unit tests from this package directory:

```bash
uv run pytest tests/unit/ -v
```
