echo-app


Nameecho-app JSON
Version 1.0.2 PyPI version JSON
download
home_pageNone
SummaryEcho AI - Multi-agent AI orchestration system with plugin management
upload_time2025-08-28 10:31:10
maintainerNone
docs_urlNone
authorJonas Kahn
requires_python<3.14,>=3.13
licenseMIT
keywords ai agents echo-ai orchestration coordination langchain langgraph multi-agent cli
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Echo AI 🤖 Multi-Agent AI Framework

A powerful, plugin-based multi-agent conversational AI framework built on FastAPI and LangGraph, featuring intelligent
agent orchestration, efficient conversation storage, and comprehensive multi-provider LLM support.

## 🚀 Quick Start

### For End Users

```bash
# Install and start everything
pip install echo-app
python -m echo start all
```

### For Developers

```bash
# Clone and setup
git clone <your-repo-url>
cd echo
poetry install
python -m echo start all --debug
```

## 📋 Table of Contents

- [Features](#-features)
- [Installation](#-installation)
- [Usage](#-usage)
- [API Documentation](#-api-documentation)
- [Plugin Development](#-plugin-development)
- [Configuration](#-configuration)
- [Development](#-development)
- [Deployment](#-deployment)
- [Architecture](#-architecture)

## 🌟 Features

### 🤖 Multi-Agent Orchestration

- **LangGraph-Based Coordination**: Intelligent conversation routing between specialized agents
- **Plugin System**: SDK-based agent discovery with hot reload capabilities
- **Safety Mechanisms**: Configurable limits for agent hops and tool calls
- **State Management**: Comprehensive conversation state tracking with checkpoint persistence

### 💾 Storage Architecture

- **Conversation Turns**: Stores user input and AI responses with context
- **Multi-Backend Support**: PostgreSQL, Redis, and in-memory options
- **Token Tracking**: Precise cost attribution and optimization

### 🧠 Multi-Provider LLM Support

- **OpenAI**: GPT models with function calling
- **Anthropic**: Claude models with large context windows
- **Google**: Gemini models with multimodal capabilities
- **Azure OpenAI**: Enterprise-grade hosted models

### 🖥️ Command Line Interface

- **Simple & Reliable**: Built with argparse for maximum compatibility
- **Service Orchestration**: Start multiple services with a single command
- **Development Tools**: Debug mode, custom ports, dependency checking

## 📦 Installation

### Prerequisites

- **Python 3.13+**
- **Poetry** (for development)
- **PostgreSQL** (optional, for persistent storage)
- **Redis** (optional, for session storage)

### From PyPI (End Users)

```bash
pip install echo-app
```

### From Source (Developers)

```bash
git clone <your-repo-url>
cd echo
poetry install
```

## 🎯 Usage

### Starting Services

```bash
# Start both API and UI servers
python -m echo start all

# Start only the API server
python -m echo start api

# Start only the UI server
python -m echo start ui

# Start with custom configuration
python -m echo start all --api-port 8080 --ui-port 8502

# Start with debug mode
python -m echo start all --debug
```

### CLI Commands

```bash
# Show version information
python -m echo version

# Show system information
python -m echo info

# List available plugins
python -m echo plugins

# Show help
python -m echo --help
python -m echo start --help
```

## 📖 API Documentation

### Interactive Docs

- **Swagger UI**: `http://localhost:8000/docs`
- **ReDoc**: `http://localhost:8000/redoc`

### Core Endpoints

#### Chat Processing

```bash
curl -X POST "http://localhost:8000/api/v1/chat" \
  -H "Content-Type: application/json" \
  -d '{
    "message": "Help me solve 2x + 5 = 15",
    "thread_id": "user-123-session",
    "user_id": "user-123"
  }'
```

#### Plugin Management

```bash
# List available plugins
curl "http://localhost:8000/api/v1/plugins"

# Get plugin details
curl "http://localhost:8000/api/v1/plugins/math_agent"

# Reload plugins (development)
curl -X POST "http://localhost:8000/api/v1/plugins/reload"
```

#### System Health

```bash
# Simple health check
curl "http://localhost:8000/api/v1/health"

# Detailed system status
curl "http://localhost:8000/api/v1/status"
```

## 🔌 Plugin Development

### Quick Plugin Example

Create a minimal plugin:

```python
# plugins/hello_agent/plugin.py
from echo_sdk.base.plugin import BasePlugin
from echo_sdk.base.metadata import PluginMetadata


class HelloPlugin(BasePlugin):
    @staticmethod
    def get_metadata() -> PluginMetadata:
        return PluginMetadata(
            name="hello_agent",
            version="0.1.0",
            description="Replies with a friendly greeting",
            capabilities=["greeting"],
        )

    @staticmethod
    def create_agent() -> BasePluginAgent:
        from .agent import HelloAgent
        return HelloAgent(HelloPlugin.get_metadata())
```

```python
# plugins/hello_agent/agent.py
from echo_sdk.base.agent import BasePluginAgent


class HelloAgent(BasePluginAgent):
    async def ainvoke(self, message: str) -> str:
        return f"Hello from {self.metadata.name}! You said: {message}"
```

### Plugin Structure

```
plugins/
└── your_plugin/
    ├── __init__.py
    ├── plugin.py      # Plugin contract and metadata
    ├── agent.py       # Agent implementation
    └── tools.py       # Tool implementations
```

### Docker Compose Setup

```yaml
services:
  echo:
    build: ..
    ports:
      - "8000:8000"
      - "8501:8501"
    environment:
      - ECHO_DEFAULT_LLM_PROVIDER=openai
      - ECHO_PLUGINS_DIR=["/usr/src/echo/plugins"]
    volumes:
      - ../plugins:/usr/src/echo/plugins:ro
```

**Note**: The Docker setup uses the new CLI commands via supervisord to manage both API and UI services.

## ⚙️ Configuration

### Environment Variables

```bash
# LLM Provider
ECHO_DEFAULT_LLM_PROVIDER=openai
ECHO_OPENAI_API_KEY=your-openai-key
ECHO_ANTHROPIC_API_KEY=your-claude-key
ECHO_GOOGLE_API_KEY=your-gemini-key

# Database (optional - defaults to in-memory)
ECHO_CONVERSATION_STORAGE_BACKEND=memory  # or postgresql

# Plugin Configuration
ECHO_PLUGINS_DIR=["./plugins/src/echo_plugins"]

# API Server
ECHO_API_HOST=0.0.0.0
ECHO_API_PORT=8000
ECHO_DEBUG=true
```

### CLI Override

Most settings can be overridden via CLI arguments:

```bash
python -m echo start api --api-host 127.0.0.1 --api-port 8080 --debug
```

### Safety and Performance

```bash
# Agent Routing Limits
ECHO_MAX_AGENT_HOPS=25
ECHO_MAX_TOOL_HOPS=50
ECHO_GRAPH_RECURSION_LIMIT=50

# Session Management
ECHO_SESSION_TIMEOUT=3600
ECHO_MAX_SESSION_HISTORY=100
```

## 🔧 Development

### Setup

```bash
# Install development dependencies
poetry install

# Run with auto-reload using CLI (recommended)
python -m echo start all --debug
```

### Development Commands

```bash
# Run tests
poetry run pytest

# Code formatting
poetry run black src/
poetry run isort src/

# Show detailed system information
echo info

# List and manage plugins
echo plugins
```

### Project Structure

```
echo/
├── src/echo/                    # Main application code
│   ├── api/                     # FastAPI routes and schemas
│   ├── cli.py                   # Command-line interface (argparse)
│   ├── core/                    # Multi-agent orchestration
│   ├── domain/                  # Business models and DTOs
│   ├── infrastructure/          # External service integrations
│   ├── config/                  # Configuration management
│   └── ui/                      # Streamlit chat interface
├── plugins/                     # Plugin ecosystem
├── sdk/                         # Echo SDK for plugin development
├── docs/                        # Documentation
├── migrations/                  # Database migrations
├── deploy.sh                    # PyPI deployment script
└── tests/                       # Test suite
```

## 🚀 Deployment

### Health Checks

```bash
# Load balancer health check
GET /api/v1/health
→ {"status": "healthy"}

# Detailed system status
GET /api/v1/status
→ {
  "status": "operational",
  "available_plugins": ["math_agent", "search_agent"],
  "healthy_plugins": ["math_agent", "search_agent"], 
  "failed_plugins": [],
  "total_sessions": 42
}
```

### Docker Deployment

```dockerfile
FROM python:3.13-slim

WORKDIR /app
COPY . .

RUN pip install poetry && poetry install
EXPOSE 8000 8501

# Use the CLI for better control
CMD ["poetry", "run", "echo", "start", "all"]
```

### PyPI Deployment (Maintainers)

```bash
# Deploy with patch version bump
./deploy.sh --patch

# Deploy with minor version bump
./deploy.sh --minor

# Deploy to TestPyPI first
./deploy.sh --test

# Deploy without version bump
./deploy.sh --no-bump
```

## 🏗️ Architecture

### Framework Architecture

```
Echo AI Framework Architecture
├── CLI Layer (argparse)
│   ├── Service Management (start/stop api, ui, or both)
│   ├── System Information (version, info, plugins)
│   └── Development Tools (debug mode, custom config)
├── API Layer (FastAPI)
│   ├── Chat Endpoints (/api/v1/chat)
│   ├── Plugin Management (/api/v1/plugins)  
│   └── System Monitoring (/api/v1/status, /api/v1/health)
├── Application Services
│   ├── ConversationService (Complete conversation lifecycle)
│   ├── OrchestratorService (LangGraph coordination wrapper)
│   └── ServiceContainer (Dependency injection and lifecycle)
├── Core Orchestration
│   ├── MultiAgentOrchestrator (LangGraph-based routing)
│   ├── AgentState (Conversation state management)
│   └── Coordinator (Tool-routed graph execution)
├── Domain Models
│   ├── Thread (Conversation containers with cost tracking)
│   ├── Conversation (User-assistant exchanges)
│   ├── User & Organization (Multi-tenant support)
│   └── DTOs (Data transfer objects for API)
└── Infrastructure
    ├── Database (Multi-backend: PostgreSQL/Redis/Memory)
    ├── LLM Factory (Multi-provider with caching)
    └── Plugin Manager (SDK-based agent discovery)
```

### Storage Architecture

```
📝 Stores: User Input → AI Response
💾 Storage: Conversation turns with context
🔄 Context: Full reconstruction capability for LangGraph
```

### Benefits

- **Efficient Storage**: Optimized conversation history management
- **Fast Loading**: Streamlined conversation history retrieval
- **Context Preservation**: Full LangGraph context reconstruction
- **Token Tracking**: Precise cost attribution and optimization

## 🤝 Contributing

1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Make your changes with proper documentation
4. Add tests for new functionality
5. Ensure all tests pass (`poetry run pytest`)
6. Run code formatting (`poetry run black src/ && poetry run isort src/`)
7. Commit your changes (`git commit -m 'Add amazing feature'`)
8. Push to the branch (`git push origin feature/amazing-feature`)
9. Open a Pull Request

## 📜 License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## 🙏 Acknowledgments

- **LangGraph**: For powerful multi-agent orchestration capabilities
- **FastAPI**: For high-performance async API framework
- **Echo SDK**: For comprehensive plugin development support
- **Pydantic**: For robust data validation and serialization
- **Streamlit**: For interactive development interface

---

**Echo AI Framework** - Empowering intelligent multi-agent conversations with production-ready performance and
developer-friendly architecture.


            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "echo-app",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<3.14,>=3.13",
    "maintainer_email": null,
    "keywords": "ai, agents, echo-ai, orchestration, coordination, langchain, langgraph, multi-agent, cli",
    "author": "Jonas Kahn",
    "author_email": "me@ifelse.one",
    "download_url": "https://files.pythonhosted.org/packages/43/b6/653aff165719f77d8bb598632cf00062331a6ecce293d63715c9421206d5/echo_app-1.0.2.tar.gz",
    "platform": null,
    "description": "# Echo AI \ud83e\udd16 Multi-Agent AI Framework\n\nA powerful, plugin-based multi-agent conversational AI framework built on FastAPI and LangGraph, featuring intelligent\nagent orchestration, efficient conversation storage, and comprehensive multi-provider LLM support.\n\n## \ud83d\ude80 Quick Start\n\n### For End Users\n\n```bash\n# Install and start everything\npip install echo-app\npython -m echo start all\n```\n\n### For Developers\n\n```bash\n# Clone and setup\ngit clone <your-repo-url>\ncd echo\npoetry install\npython -m echo start all --debug\n```\n\n## \ud83d\udccb Table of Contents\n\n- [Features](#-features)\n- [Installation](#-installation)\n- [Usage](#-usage)\n- [API Documentation](#-api-documentation)\n- [Plugin Development](#-plugin-development)\n- [Configuration](#-configuration)\n- [Development](#-development)\n- [Deployment](#-deployment)\n- [Architecture](#-architecture)\n\n## \ud83c\udf1f Features\n\n### \ud83e\udd16 Multi-Agent Orchestration\n\n- **LangGraph-Based Coordination**: Intelligent conversation routing between specialized agents\n- **Plugin System**: SDK-based agent discovery with hot reload capabilities\n- **Safety Mechanisms**: Configurable limits for agent hops and tool calls\n- **State Management**: Comprehensive conversation state tracking with checkpoint persistence\n\n### \ud83d\udcbe Storage Architecture\n\n- **Conversation Turns**: Stores user input and AI responses with context\n- **Multi-Backend Support**: PostgreSQL, Redis, and in-memory options\n- **Token Tracking**: Precise cost attribution and optimization\n\n### \ud83e\udde0 Multi-Provider LLM Support\n\n- **OpenAI**: GPT models with function calling\n- **Anthropic**: Claude models with large context windows\n- **Google**: Gemini models with multimodal capabilities\n- **Azure OpenAI**: Enterprise-grade hosted models\n\n### \ud83d\udda5\ufe0f Command Line Interface\n\n- **Simple & Reliable**: Built with argparse for maximum compatibility\n- **Service Orchestration**: Start multiple services with a single command\n- **Development Tools**: Debug mode, custom ports, dependency checking\n\n## \ud83d\udce6 Installation\n\n### Prerequisites\n\n- **Python 3.13+**\n- **Poetry** (for development)\n- **PostgreSQL** (optional, for persistent storage)\n- **Redis** (optional, for session storage)\n\n### From PyPI (End Users)\n\n```bash\npip install echo-app\n```\n\n### From Source (Developers)\n\n```bash\ngit clone <your-repo-url>\ncd echo\npoetry install\n```\n\n## \ud83c\udfaf Usage\n\n### Starting Services\n\n```bash\n# Start both API and UI servers\npython -m echo start all\n\n# Start only the API server\npython -m echo start api\n\n# Start only the UI server\npython -m echo start ui\n\n# Start with custom configuration\npython -m echo start all --api-port 8080 --ui-port 8502\n\n# Start with debug mode\npython -m echo start all --debug\n```\n\n### CLI Commands\n\n```bash\n# Show version information\npython -m echo version\n\n# Show system information\npython -m echo info\n\n# List available plugins\npython -m echo plugins\n\n# Show help\npython -m echo --help\npython -m echo start --help\n```\n\n## \ud83d\udcd6 API Documentation\n\n### Interactive Docs\n\n- **Swagger UI**: `http://localhost:8000/docs`\n- **ReDoc**: `http://localhost:8000/redoc`\n\n### Core Endpoints\n\n#### Chat Processing\n\n```bash\ncurl -X POST \"http://localhost:8000/api/v1/chat\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"message\": \"Help me solve 2x + 5 = 15\",\n    \"thread_id\": \"user-123-session\",\n    \"user_id\": \"user-123\"\n  }'\n```\n\n#### Plugin Management\n\n```bash\n# List available plugins\ncurl \"http://localhost:8000/api/v1/plugins\"\n\n# Get plugin details\ncurl \"http://localhost:8000/api/v1/plugins/math_agent\"\n\n# Reload plugins (development)\ncurl -X POST \"http://localhost:8000/api/v1/plugins/reload\"\n```\n\n#### System Health\n\n```bash\n# Simple health check\ncurl \"http://localhost:8000/api/v1/health\"\n\n# Detailed system status\ncurl \"http://localhost:8000/api/v1/status\"\n```\n\n## \ud83d\udd0c Plugin Development\n\n### Quick Plugin Example\n\nCreate a minimal plugin:\n\n```python\n# plugins/hello_agent/plugin.py\nfrom echo_sdk.base.plugin import BasePlugin\nfrom echo_sdk.base.metadata import PluginMetadata\n\n\nclass HelloPlugin(BasePlugin):\n    @staticmethod\n    def get_metadata() -> PluginMetadata:\n        return PluginMetadata(\n            name=\"hello_agent\",\n            version=\"0.1.0\",\n            description=\"Replies with a friendly greeting\",\n            capabilities=[\"greeting\"],\n        )\n\n    @staticmethod\n    def create_agent() -> BasePluginAgent:\n        from .agent import HelloAgent\n        return HelloAgent(HelloPlugin.get_metadata())\n```\n\n```python\n# plugins/hello_agent/agent.py\nfrom echo_sdk.base.agent import BasePluginAgent\n\n\nclass HelloAgent(BasePluginAgent):\n    async def ainvoke(self, message: str) -> str:\n        return f\"Hello from {self.metadata.name}! You said: {message}\"\n```\n\n### Plugin Structure\n\n```\nplugins/\n\u2514\u2500\u2500 your_plugin/\n    \u251c\u2500\u2500 __init__.py\n    \u251c\u2500\u2500 plugin.py      # Plugin contract and metadata\n    \u251c\u2500\u2500 agent.py       # Agent implementation\n    \u2514\u2500\u2500 tools.py       # Tool implementations\n```\n\n### Docker Compose Setup\n\n```yaml\nservices:\n  echo:\n    build: ..\n    ports:\n      - \"8000:8000\"\n      - \"8501:8501\"\n    environment:\n      - ECHO_DEFAULT_LLM_PROVIDER=openai\n      - ECHO_PLUGINS_DIR=[\"/usr/src/echo/plugins\"]\n    volumes:\n      - ../plugins:/usr/src/echo/plugins:ro\n```\n\n**Note**: The Docker setup uses the new CLI commands via supervisord to manage both API and UI services.\n\n## \u2699\ufe0f Configuration\n\n### Environment Variables\n\n```bash\n# LLM Provider\nECHO_DEFAULT_LLM_PROVIDER=openai\nECHO_OPENAI_API_KEY=your-openai-key\nECHO_ANTHROPIC_API_KEY=your-claude-key\nECHO_GOOGLE_API_KEY=your-gemini-key\n\n# Database (optional - defaults to in-memory)\nECHO_CONVERSATION_STORAGE_BACKEND=memory  # or postgresql\n\n# Plugin Configuration\nECHO_PLUGINS_DIR=[\"./plugins/src/echo_plugins\"]\n\n# API Server\nECHO_API_HOST=0.0.0.0\nECHO_API_PORT=8000\nECHO_DEBUG=true\n```\n\n### CLI Override\n\nMost settings can be overridden via CLI arguments:\n\n```bash\npython -m echo start api --api-host 127.0.0.1 --api-port 8080 --debug\n```\n\n### Safety and Performance\n\n```bash\n# Agent Routing Limits\nECHO_MAX_AGENT_HOPS=25\nECHO_MAX_TOOL_HOPS=50\nECHO_GRAPH_RECURSION_LIMIT=50\n\n# Session Management\nECHO_SESSION_TIMEOUT=3600\nECHO_MAX_SESSION_HISTORY=100\n```\n\n## \ud83d\udd27 Development\n\n### Setup\n\n```bash\n# Install development dependencies\npoetry install\n\n# Run with auto-reload using CLI (recommended)\npython -m echo start all --debug\n```\n\n### Development Commands\n\n```bash\n# Run tests\npoetry run pytest\n\n# Code formatting\npoetry run black src/\npoetry run isort src/\n\n# Show detailed system information\necho info\n\n# List and manage plugins\necho plugins\n```\n\n### Project Structure\n\n```\necho/\n\u251c\u2500\u2500 src/echo/                    # Main application code\n\u2502   \u251c\u2500\u2500 api/                     # FastAPI routes and schemas\n\u2502   \u251c\u2500\u2500 cli.py                   # Command-line interface (argparse)\n\u2502   \u251c\u2500\u2500 core/                    # Multi-agent orchestration\n\u2502   \u251c\u2500\u2500 domain/                  # Business models and DTOs\n\u2502   \u251c\u2500\u2500 infrastructure/          # External service integrations\n\u2502   \u251c\u2500\u2500 config/                  # Configuration management\n\u2502   \u2514\u2500\u2500 ui/                      # Streamlit chat interface\n\u251c\u2500\u2500 plugins/                     # Plugin ecosystem\n\u251c\u2500\u2500 sdk/                         # Echo SDK for plugin development\n\u251c\u2500\u2500 docs/                        # Documentation\n\u251c\u2500\u2500 migrations/                  # Database migrations\n\u251c\u2500\u2500 deploy.sh                    # PyPI deployment script\n\u2514\u2500\u2500 tests/                       # Test suite\n```\n\n## \ud83d\ude80 Deployment\n\n### Health Checks\n\n```bash\n# Load balancer health check\nGET /api/v1/health\n\u2192 {\"status\": \"healthy\"}\n\n# Detailed system status\nGET /api/v1/status\n\u2192 {\n  \"status\": \"operational\",\n  \"available_plugins\": [\"math_agent\", \"search_agent\"],\n  \"healthy_plugins\": [\"math_agent\", \"search_agent\"], \n  \"failed_plugins\": [],\n  \"total_sessions\": 42\n}\n```\n\n### Docker Deployment\n\n```dockerfile\nFROM python:3.13-slim\n\nWORKDIR /app\nCOPY . .\n\nRUN pip install poetry && poetry install\nEXPOSE 8000 8501\n\n# Use the CLI for better control\nCMD [\"poetry\", \"run\", \"echo\", \"start\", \"all\"]\n```\n\n### PyPI Deployment (Maintainers)\n\n```bash\n# Deploy with patch version bump\n./deploy.sh --patch\n\n# Deploy with minor version bump\n./deploy.sh --minor\n\n# Deploy to TestPyPI first\n./deploy.sh --test\n\n# Deploy without version bump\n./deploy.sh --no-bump\n```\n\n## \ud83c\udfd7\ufe0f Architecture\n\n### Framework Architecture\n\n```\nEcho AI Framework Architecture\n\u251c\u2500\u2500 CLI Layer (argparse)\n\u2502   \u251c\u2500\u2500 Service Management (start/stop api, ui, or both)\n\u2502   \u251c\u2500\u2500 System Information (version, info, plugins)\n\u2502   \u2514\u2500\u2500 Development Tools (debug mode, custom config)\n\u251c\u2500\u2500 API Layer (FastAPI)\n\u2502   \u251c\u2500\u2500 Chat Endpoints (/api/v1/chat)\n\u2502   \u251c\u2500\u2500 Plugin Management (/api/v1/plugins)  \n\u2502   \u2514\u2500\u2500 System Monitoring (/api/v1/status, /api/v1/health)\n\u251c\u2500\u2500 Application Services\n\u2502   \u251c\u2500\u2500 ConversationService (Complete conversation lifecycle)\n\u2502   \u251c\u2500\u2500 OrchestratorService (LangGraph coordination wrapper)\n\u2502   \u2514\u2500\u2500 ServiceContainer (Dependency injection and lifecycle)\n\u251c\u2500\u2500 Core Orchestration\n\u2502   \u251c\u2500\u2500 MultiAgentOrchestrator (LangGraph-based routing)\n\u2502   \u251c\u2500\u2500 AgentState (Conversation state management)\n\u2502   \u2514\u2500\u2500 Coordinator (Tool-routed graph execution)\n\u251c\u2500\u2500 Domain Models\n\u2502   \u251c\u2500\u2500 Thread (Conversation containers with cost tracking)\n\u2502   \u251c\u2500\u2500 Conversation (User-assistant exchanges)\n\u2502   \u251c\u2500\u2500 User & Organization (Multi-tenant support)\n\u2502   \u2514\u2500\u2500 DTOs (Data transfer objects for API)\n\u2514\u2500\u2500 Infrastructure\n    \u251c\u2500\u2500 Database (Multi-backend: PostgreSQL/Redis/Memory)\n    \u251c\u2500\u2500 LLM Factory (Multi-provider with caching)\n    \u2514\u2500\u2500 Plugin Manager (SDK-based agent discovery)\n```\n\n### Storage Architecture\n\n```\n\ud83d\udcdd Stores: User Input \u2192 AI Response\n\ud83d\udcbe Storage: Conversation turns with context\n\ud83d\udd04 Context: Full reconstruction capability for LangGraph\n```\n\n### Benefits\n\n- **Efficient Storage**: Optimized conversation history management\n- **Fast Loading**: Streamlined conversation history retrieval\n- **Context Preservation**: Full LangGraph context reconstruction\n- **Token Tracking**: Precise cost attribution and optimization\n\n## \ud83e\udd1d Contributing\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/amazing-feature`)\n3. Make your changes with proper documentation\n4. Add tests for new functionality\n5. Ensure all tests pass (`poetry run pytest`)\n6. Run code formatting (`poetry run black src/ && poetry run isort src/`)\n7. Commit your changes (`git commit -m 'Add amazing feature'`)\n8. Push to the branch (`git push origin feature/amazing-feature`)\n9. Open a Pull Request\n\n## \ud83d\udcdc License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## \ud83d\ude4f Acknowledgments\n\n- **LangGraph**: For powerful multi-agent orchestration capabilities\n- **FastAPI**: For high-performance async API framework\n- **Echo SDK**: For comprehensive plugin development support\n- **Pydantic**: For robust data validation and serialization\n- **Streamlit**: For interactive development interface\n\n---\n\n**Echo AI Framework** - Empowering intelligent multi-agent conversations with production-ready performance and\ndeveloper-friendly architecture.\n\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Echo AI - Multi-agent AI orchestration system with plugin management",
    "version": "1.0.2",
    "project_urls": {
        "Documentation": "https://echo.readthedocs.io/",
        "Homepage": "https://github.com/jonaskahn/echo",
        "Repository": "https://github.com/jonaskahn/echo.git",
        "issues": "https://github.com/jonaskahn/echo/issues"
    },
    "split_keywords": [
        "ai",
        " agents",
        " echo-ai",
        " orchestration",
        " coordination",
        " langchain",
        " langgraph",
        " multi-agent",
        " cli"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "00c93cf40bdc9694743a7d55ec17f5e19c4da352cde49f89bb3e8a1aca9cfe5e",
                "md5": "7a6f61569c5248e81566d5113f8d1012",
                "sha256": "24f7994a36faf2913c8d1e0c1356a56134726bb422ca51fbc125d98a11dd304b"
            },
            "downloads": -1,
            "filename": "echo_app-1.0.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "7a6f61569c5248e81566d5113f8d1012",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<3.14,>=3.13",
            "size": 127044,
            "upload_time": "2025-08-28T10:31:04",
            "upload_time_iso_8601": "2025-08-28T10:31:04.520456Z",
            "url": "https://files.pythonhosted.org/packages/00/c9/3cf40bdc9694743a7d55ec17f5e19c4da352cde49f89bb3e8a1aca9cfe5e/echo_app-1.0.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "43b6653aff165719f77d8bb598632cf00062331a6ecce293d63715c9421206d5",
                "md5": "b30a519d4647d64d70b87d88dd909d49",
                "sha256": "945de68f5444e36c3a1682670f480f1b6a083cf18ec3b3318e5d679699cd008f"
            },
            "downloads": -1,
            "filename": "echo_app-1.0.2.tar.gz",
            "has_sig": false,
            "md5_digest": "b30a519d4647d64d70b87d88dd909d49",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<3.14,>=3.13",
            "size": 91253,
            "upload_time": "2025-08-28T10:31:10",
            "upload_time_iso_8601": "2025-08-28T10:31:10.113405Z",
            "url": "https://files.pythonhosted.org/packages/43/b6/653aff165719f77d8bb598632cf00062331a6ecce293d63715c9421206d5/echo_app-1.0.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-28 10:31:10",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "jonaskahn",
    "github_project": "echo",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "echo-app"
}
        
Elapsed time: 1.44173s