Metadata-Version: 2.4
Name: orchestral-sdk
Version: 0.2.0
Summary: Production-ready AI framework for building LLM-powered applications with unified tool calling across multiple providers
Author-email: Alex Roman <alex@orchestral.ai>
License: Proprietary - All Rights Reserved
Project-URL: Homepage, https://orchestral.ai
Project-URL: Documentation, https://orchestral.ai/docs
Project-URL: Issues, https://orchestral.ai/support
Keywords: ai,llm,agent,anthropic,openai,claude,gpt,chatbot,assistant,framework,tool-calling,multi-provider
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: Other/Proprietary License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Requires-Python: >=3.13
Description-Content-Type: text/markdown
Requires-Dist: pydantic>=2.11.7
Requires-Dist: anthropic>=0.64.0
Requires-Dist: openai>=1.102.0
Requires-Dist: google-generativeai>=0.8.3
Requires-Dist: ollama>=0.5.1
Requires-Dist: groq>=0.22.0
Requires-Dist: mistralai>=1.2.0
Requires-Dist: boto3>=1.35.0
Requires-Dist: python-dotenv>=1.1.1
Requires-Dist: numpy>=1.24.0
Requires-Dist: pandas>=2.0.0
Requires-Dist: matplotlib>=3.7.0
Requires-Dist: scipy>=1.10.0
Requires-Dist: requests>=2.28.0
Requires-Dist: pillow>=10.0.0
Requires-Dist: pexpect>=4.8.0; sys_platform != "win32"
Requires-Dist: wexpect>=4.0.0; sys_platform == "win32"
Requires-Dist: setuptools<81; sys_platform == "win32"
Requires-Dist: rich>=13.0.0
Requires-Dist: fastapi>=0.100.0
Requires-Dist: uvicorn>=0.23.0
Requires-Dist: websockets>=11.0.3
Dynamic: requires-python

<div align="center">
  <img src="orchestral/ui/logo/logo.png" alt="Orchestral" width="120">
  <h1>Orchestral</h1>
  <p>AI agent framework with unified tool calling across multiple LLM providers</p>
</div>

---

## Features

- Web-based conversation interface with persistence
- Support for Anthropic (Claude), OpenAI (GPT), and Google (Gemini)
- Extensible tool system for file operations, code execution, and web search
- Real-time streaming responses with cost tracking
- Conversation management (rename, duplicate, delete, undo)

## Quick Start

### Prerequisites

- Python 3.12 or higher
- OpenAI API key (required for core functions)
- Additional provider keys optional (Anthropic, Google)

### Installation

**Mac/Linux:**
```bash
git clone https://github.com/orchestralAI/orchestral-core.git
cd orchestral-core
./setup.sh
```

**Windows:**
```cmd
git clone https://github.com/orchestralAI/orchestral-core.git
cd orchestral-core
setup.bat
```

The setup script will install dependencies and prompt you to configure API keys interactively.

### Running the App

Activate the virtual environment:
```bash
source orchestral-env/bin/activate  # Mac/Linux
orchestral-env\Scripts\activate     # Windows
```

Start the web interface:
```bash
python demos/app_demo.py
```

The app will open at `http://127.0.0.1:8000`

| !! NOTE: By default the agents have the ability to execute code on your computer   |
|----------------------------------------------|

## API Keys

The setup script will guide you through adding API keys. You can also edit `.env` manually:

```env
OPENAI_API_KEY=sk-proj-...        # Required
ANTHROPIC_API_KEY=sk-ant-...      # Optional
GOOGLE_API_KEY=AIza...            # Optional
```

Get your keys:
- OpenAI: https://platform.openai.com/api-keys
- Anthropic: https://console.anthropic.com/
- Google: https://aistudio.google.com/app/apikey

## Using the Interface

- **Send messages** - Type and press Enter (Shift+Enter for new line)
- **New conversation** - Click "+" in sidebar
- **Manage conversations** - Click "⋯" to rename, duplicate, or delete
- **Track costs** - Click "Cost" button
- **Undo** - Remove last message
- **Interrupt** - Press Esc while agent is processing

## Available Tools

- **RunCommandTool** - Execute shell commands
- **RunPythonTool** - Run Python code
- **WriteFileTool** - Create and modify files
- **ReadFileTool** - Read file contents
- **WebSearchTool** - Search the web

File operations are scoped to `app/workspace/` for safety.

## Project Structure

```
orchestral_core/
├── orchestral/              # Core framework
│   ├── agent/              # Agent orchestration
│   ├── llm/                # LLM provider clients
│   ├── tools/              # Tool system
│   └── ui/                 # UI components
├── app/                    # Web application
│   ├── server.py           # Web server
│   ├── workspace/          # Agent workspace
│   └── conversations/      # Saved conversations
└── demos/                  # Demo scripts
```

## Documentation

- [CONTRIBUTING.md](orchestral_core/CONTRIBUTING.md) - Development guidelines
- [orchestral_core/CLAUDE.md](orchestral_core/CLAUDE.md) - Framework overview
- [app/README.md](orchestral_core/app/README.md) - Web app architecture

## Troubleshooting

**Module not found:**
```bash
cd orchestral_core && pip install -e .
```

**API key errors:**
- Verify `.env` exists and contains your keys
- Check for extra spaces or quotes

**Port 8000 in use:**
Edit `demos/app_demo.py` and change the port number

**Windows activation issues:**
```powershell
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
```

## License

All code contained in this repository is the property of Orchestral AI.
Unauthorized reproduction, use, or distribution of this code, in whole or in part, is strictly prohibited without prior written permission from Alex Roman or an authorized representative of Orchestral AI.
