Metadata-Version: 2.1
Name: solo-server
Version: 0.3.3
Summary: A simple server for compound AI.
Home-page: https://github.com/AIEngineersDev/solo-server
Author: Dhruv Diddi
Author-email: dhruv.diddi@gmail.com
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Requires-Dist: typer>=0.4.0
Requires-Dist: rich>=12.0.0
Requires-Dist: psutil>=5.9.0
Requires-Dist: requests>=2.28.0
Requires-Dist: gputil>=1.4.0
Requires-Dist: litserve==0.1.0
Requires-Dist: cog
Requires-Dist: fastapi
Requires-Dist: uvicorn
Requires-Dist: pydantic
Requires-Dist: torch==2.3
Requires-Dist: locust
Provides-Extra: dev
Requires-Dist: pytest; extra == "dev"
Requires-Dist: black; extra == "dev"
Requires-Dist: isort; extra == "dev"

# Solo Server

![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)
![Python Version](https://img.shields.io/badge/python-3.8%2B-blue.svg)
![GitHub Issues](https://img.shields.io/github/issues/your-repo/solo-server)
![GitHub Stars](https://img.shields.io/github/stars/your-repo/solo-server?style=social)

**Simple. Private. Effective.**

Solo Server is a privacy-first framework designed for hosting and managing AI models locally. With support for various AI workflows, including language models, computer vision, audio processing, tabular data, and compound AI, Solo Server ensures simplicity, flexibility, and high performance.

## 🚀 Features

- **Seamless Setup:** Manage your AI server with a simple CLI.
- **Tagged Templates:** Pre-configured templates for common AI workflows.
- **Load Testing and Profiling:** Built-in commands to test, profile, and benchmark endpoints.
- **Cross-Platform Compatibility:** Deploy AI models effortlessly on any platform.
- **Extensible Framework:** Add custom workflows and models with ease.

## 📦 Table of Contents

- [Features](#-features)
- [Quickstart](#quickstart)
- [🎯 Tagged Templates](#-tagged-templates)
  - [🔧 Toy Models](#-toy-models)
  - [🧠 Language Models (LLMs)](#-language-models-llms)
  - [🔍 Retrieval-Augmented Generation (RAG)](#-retrieval-augmented-generation-rag)
  - [✍️ Natural Language Processing (NLP)](#-natural-language-processing-nlp)
  - [🎨 Multimodal Models](#-multimodal-models)
  - [🔉 Audio Models](#-audio-models)
  - [🖼 Vision Models](#-vision-models)
  - [🎙 Speech Models](#-speech-models)
  - [🛠 Classical ML Models](#-classical-ml-models)
  - [🗂 Miscellaneous](#-miscellaneous)
- [🛠 Core Commands](#-core-commands)
- [📦 Development and Contributions](#-development-and-contributions)
- [📜 License](#-license)

## Quickstart

### Prerequisites

- **Python 3.8** or higher

### Installation

1. **Install Core Package**

    ```bash
    pip install solo-server
    ```

2. **Start the Server with a Template**

    ```bash
    solo-server start toy-hello-world
    ```

    The server will start at [http://localhost:8000](http://localhost:8000).

3. **Test the Server**

    ```bash
    solo-server test toy-hello-world
    ```

4. **Profile the Server**

    ```bash
    solo-server profile toy-hello-world --requests-count 20
    ```

5. **Benchmark the Server**

    ```bash
    solo-server benchmark toy-hello-world
    ```

## 🎯 Tagged Templates

### 🔧 Toy Models

| Tag                 | Description                                 |
|---------------------|---------------------------------------------|
| `toy-hello-world`   | Simple chatbot: Input text, return greeting |
| `toy-simple-image`  | Generate a 256x256 solid-color image        |
| `toy-number-guess`  | User guesses a randomly generated number     |
| `toy-math-solver`   | Solve simple math equations from input      |
| `toy-basic-api`     | A Flask API for echoing user inputs         |

### 🧠 Language Models (LLMs)

| Tag                  | Description                               |
|----------------------|-------------------------------------------|
| `llm-llama32`        | Meta Llama 3.2 for general language tasks |
| `llm-proxy-server`   | Proxy server managing multiple LLM requests |
| `llm-agent-tools`    | LangChain agent for tool-based reasoning  |
| `llm-chat-gpt3`      | Chatbot using OpenAI GPT-3 API             |
| `llm-chat-opt`       | Meta OPT for lightweight chatbot setup     |

### 🔍 Retrieval-Augmented Generation (RAG)

| Tag                       | Description                              |
|---------------------------|------------------------------------------|
| `rag-vllm-llama32`        | Combine retrieval with Llama 3.2 in vLLM  |
| `rag-api-llamaindex`      | LlamaIndex API for document search        |
| `rag-haystack`            | Haystack RAG pipeline for Q&A             |
| `rag-semantic-search`     | Semantic search with embeddings           |
| `rag-contextual-chat`     | RAG-powered contextual chatbot            |

### ✍️ Natural Language Processing (NLP)

| Tag                    | Description                                     |
|------------------------|-------------------------------------------------|
| `nlp-huggingface`      | BERT for text classification tasks              |
| `nlp-text-embedding`   | Sentence embedding for similarity search        |
| `nlp-gpt-neo`          | GPT-Neo for creative text generation            |
| `nlp-named-entities`   | Named Entity Recognition using SpaCy            |
| `nlp-text-summarizer`  | Summarize long documents with T5                 |

### 🎨 Multimodal Models

| Tag                     | Description                                      |
|-------------------------|--------------------------------------------------|
| `multimodal-clip`       | CLIP for text-image linking                       |
| `multimodal-pixtral`    | Custom image generation with Pixtral              |
| `multimodal-qwen-vl`    | Qwen2-VL for image-text Q&A                       |
| `multimodal-phi35`      | Phi-3.5 Vision for visual instructions            |
| `multimodal-minicpm`    | MiniCPM for multilingual multimodal tasks         |

### 🔉 Audio Models

| Tag                   | Description                                     |
|-----------------------|-------------------------------------------------|
| `audio-whisper`       | Whisper for speech-to-text transcription         |
| `audio-audiocraft`    | Generate music tracks with AudioCraft             |
| `audio-noise-filter`  | Remove background noise with DeepFilterNet        |
| `audio-stableaudio`   | Generate high-quality audio tracks                |
| `audio-keyword-detect`| Wake word detection with low latency              |

### 🖼 Vision Models

| Tag                   | Description                                       |
|-----------------------|---------------------------------------------------|
| `vision-stable-diff2` | Generate images with Stable Diffusion 2            |
| `vision-object-detect`| Detect objects in images with YOLOv5               |
| `vision-face-detect`  | Detect faces using DLib or RetinaFace              |
| `vision-pose-estimate`| Human pose estimation with OpenPose               |
| `vision-bg-remove`    | Remove image backgrounds using DeepLab            |

### 🎙 Speech Models

| Tag                   | Description                                        |
|-----------------------|----------------------------------------------------|
| `speech-xtts-v2`      | Text-to-speech conversion using XTTS V2             |
| `speech-parler-tts`   | Real-time speech synthesis with Parler-TTS          |
| `speech-voice-clone`  | Clone voices using Tacotron 2                        |
| `speech-enhancement`  | Improve speech quality with SpeechBrain             |
| `speech-lang-id`      | Identify spoken language in audio files             |

### 🛠 Classical ML Models

| Tag                  | Description                                      |
|----------------------|--------------------------------------------------|
| `ml-random-forest`   | Classify data using Random Forest models          |
| `ml-xgboost`         | Predict outcomes with XGBoost                     |
| `ml-svm`             | Support Vector Machines for binary tasks          |
| `ml-logistic-reg`    | Predict probabilities with Logistic Regression     |
| `ml-knn`             | K-Nearest Neighbors for clustering tasks           |

### 🗂 Miscellaneous

| Tag                   | Description                                    |
|-----------------------|------------------------------------------------|
| `misc-ffmpeg-api`     | Convert media formats using FFmpeg              |
| `misc-unified-pytf`   | Unified API for PyTorch and TensorFlow tasks     |
| `misc-video-edit`     | Edit videos with ffmpeg and OpenCV               |
| `misc-file-convert`   | Convert file formats (e.g., docx to pdf)         |
| `misc-lang-detection` | Detect language from a text file                 |

## 🛠 Core Commands

| Command                          | Description                               |
|----------------------------------|-------------------------------------------|
| `solo-server start [tag]`        | Start the server for a specific tag.      |
| `solo-server stop`               | Stop the running server.                   |
| `solo-server status`             | Check server status.                       |
| `solo-server test [tag]`         | Test the endpoint for a tag.               |
| `solo-server profile [tag]`      | Profile the endpoint for a tag.            |
| `solo-server benchmark [tag]`    | Load test the endpoint for a tag.          |

## 📦 Development and Contributions

### Clone the Repository

```bash
git clone https://github.com/your-repo/solo-server.git
cd solo-server
