Metadata-Version: 2.4
Name: blaxel
Version: 0.2.31rc120
Summary: Blaxel - AI development platform SDK
Project-URL: Homepage, https://blaxel.ai
Project-URL: Documentation, https://docs.blaxel.ai
Project-URL: Repository, https://github.com/blaxel-ai/sdk-python
Project-URL: Changelog, https://docs.blaxel.ai/changelog
Author-email: cploujoux <cploujoux@blaxel.ai>
License-File: LICENSE
Requires-Python: >=3.10
Requires-Dist: attrs>=21.3.0
Requires-Dist: httpx>=0.27.0
Requires-Dist: mcp>=1.9.4
Requires-Dist: pydantic>=2.0.0
Requires-Dist: pyjwt>=2.0.0
Requires-Dist: python-dateutil>=2.8.0
Requires-Dist: pyyaml>=6.0.0
Requires-Dist: requests>=2.32.3
Requires-Dist: sentry-sdk>=2.46.0
Requires-Dist: tomli>=2.2.1
Requires-Dist: websockets<16.0.0
Provides-Extra: all
Requires-Dist: crewai==0.159.0; extra == 'all'
Requires-Dist: google-adk>=1.4.0; extra == 'all'
Requires-Dist: langchain-anthropic>=0.3.10; extra == 'all'
Requires-Dist: langchain-cerebras>=0.5.0; extra == 'all'
Requires-Dist: langchain-cohere>=0.4.3; extra == 'all'
Requires-Dist: langchain-community<0.4.0,>=0.3.3; extra == 'all'
Requires-Dist: langchain-core<0.4.0,>=0.3.13; extra == 'all'
Requires-Dist: langchain-deepseek-official>=0.1.0.post1; extra == 'all'
Requires-Dist: langchain-openai>=0.3.10; extra == 'all'
Requires-Dist: langchain-xai>=0.2.2; extra == 'all'
Requires-Dist: langgraph<0.3.0,>=0.2.40; extra == 'all'
Requires-Dist: litellm==1.74.9; extra == 'all'
Requires-Dist: litellm>=1.63.11; extra == 'all'
Requires-Dist: livekit-agents[anthropic,cartesia,deepgram,elevenlabs,groq,openai,silero,turn-detector]~=1.0; extra == 'all'
Requires-Dist: livekit-plugins-noise-cancellation~=0.2; extra == 'all'
Requires-Dist: llama-index-llms-anthropic>=0.6.14; extra == 'all'
Requires-Dist: llama-index-llms-cerebras>=0.2.2; extra == 'all'
Requires-Dist: llama-index-llms-cohere>=0.4.1; extra == 'all'
Requires-Dist: llama-index-llms-deepseek>=0.1.1; extra == 'all'
Requires-Dist: llama-index-llms-google-genai>=0.1.13; extra == 'all'
Requires-Dist: llama-index-llms-groq>=0.3.1; extra == 'all'
Requires-Dist: llama-index-llms-mistralai>=0.4.0; extra == 'all'
Requires-Dist: llama-index-llms-openai>=0.3.42; extra == 'all'
Requires-Dist: llama-index>=0.12.46; extra == 'all'
Requires-Dist: openai-agents>=0.0.19; extra == 'all'
Requires-Dist: openai==1.99.9; extra == 'all'
Requires-Dist: opentelemetry-exporter-otlp>=1.28.0; extra == 'all'
Requires-Dist: opentelemetry-instrumentation-anthropic==0.41.0; extra == 'all'
Requires-Dist: opentelemetry-instrumentation-cohere==0.41.0; extra == 'all'
Requires-Dist: opentelemetry-instrumentation-crewai==0.41.0; extra == 'all'
Requires-Dist: opentelemetry-instrumentation-fastapi==0.56b0; extra == 'all'
Requires-Dist: opentelemetry-instrumentation-google-generativeai==0.41.0; extra == 'all'
Requires-Dist: opentelemetry-instrumentation-langchain>=0.35.0; extra == 'all'
Requires-Dist: opentelemetry-instrumentation-llamaindex>=0.40.7; extra == 'all'
Requires-Dist: opentelemetry-instrumentation-ollama==0.41.0; extra == 'all'
Requires-Dist: opentelemetry-instrumentation-openai==0.41.0; extra == 'all'
Requires-Dist: pillow>=10.0.0; extra == 'all'
Requires-Dist: pydantic-ai>=0.0.48; extra == 'all'
Provides-Extra: core
Provides-Extra: crewai
Requires-Dist: crewai==0.159.0; extra == 'crewai'
Requires-Dist: litellm==1.74.9; extra == 'crewai'
Requires-Dist: openai==1.99.9; extra == 'crewai'
Requires-Dist: opentelemetry-instrumentation-crewai==0.41.0; extra == 'crewai'
Provides-Extra: dev
Requires-Dist: pyright; extra == 'dev'
Requires-Dist: pytest; extra == 'dev'
Requires-Dist: ruff; extra == 'dev'
Requires-Dist: uv; extra == 'dev'
Provides-Extra: googleadk
Requires-Dist: google-adk>=1.4.0; extra == 'googleadk'
Requires-Dist: litellm>=1.63.11; extra == 'googleadk'
Provides-Extra: langgraph
Requires-Dist: langchain-anthropic>=0.3.10; extra == 'langgraph'
Requires-Dist: langchain-cerebras>=0.5.0; extra == 'langgraph'
Requires-Dist: langchain-cohere>=0.4.3; extra == 'langgraph'
Requires-Dist: langchain-community<0.4.0,>=0.3.3; extra == 'langgraph'
Requires-Dist: langchain-core<0.4.0,>=0.3.13; extra == 'langgraph'
Requires-Dist: langchain-deepseek-official>=0.1.0.post1; extra == 'langgraph'
Requires-Dist: langchain-openai>=0.3.10; extra == 'langgraph'
Requires-Dist: langchain-xai>=0.2.2; extra == 'langgraph'
Requires-Dist: langgraph<0.3.0,>=0.2.40; extra == 'langgraph'
Requires-Dist: opentelemetry-instrumentation-langchain>=0.35.0; extra == 'langgraph'
Requires-Dist: pillow>=10.0.0; extra == 'langgraph'
Provides-Extra: livekit
Requires-Dist: livekit-agents[anthropic,cartesia,deepgram,elevenlabs,groq,openai,silero,turn-detector]~=1.0; extra == 'livekit'
Requires-Dist: livekit-plugins-noise-cancellation~=0.2; extra == 'livekit'
Provides-Extra: llamaindex
Requires-Dist: llama-index-llms-anthropic>=0.6.14; extra == 'llamaindex'
Requires-Dist: llama-index-llms-cerebras>=0.2.2; extra == 'llamaindex'
Requires-Dist: llama-index-llms-cohere>=0.4.1; extra == 'llamaindex'
Requires-Dist: llama-index-llms-deepseek>=0.1.1; extra == 'llamaindex'
Requires-Dist: llama-index-llms-google-genai>=0.1.13; extra == 'llamaindex'
Requires-Dist: llama-index-llms-groq>=0.3.1; extra == 'llamaindex'
Requires-Dist: llama-index-llms-mistralai>=0.4.0; extra == 'llamaindex'
Requires-Dist: llama-index-llms-openai>=0.3.42; extra == 'llamaindex'
Requires-Dist: llama-index>=0.12.46; extra == 'llamaindex'
Requires-Dist: opentelemetry-instrumentation-llamaindex>=0.40.7; extra == 'llamaindex'
Provides-Extra: openai
Requires-Dist: openai-agents>=0.0.19; extra == 'openai'
Provides-Extra: pydantic
Requires-Dist: pydantic-ai>=0.0.48; extra == 'pydantic'
Provides-Extra: telemetry
Requires-Dist: opentelemetry-exporter-otlp>=1.28.0; extra == 'telemetry'
Requires-Dist: opentelemetry-instrumentation-anthropic==0.41.0; extra == 'telemetry'
Requires-Dist: opentelemetry-instrumentation-cohere==0.41.0; extra == 'telemetry'
Requires-Dist: opentelemetry-instrumentation-fastapi==0.56b0; extra == 'telemetry'
Requires-Dist: opentelemetry-instrumentation-google-generativeai==0.41.0; extra == 'telemetry'
Requires-Dist: opentelemetry-instrumentation-ollama==0.41.0; extra == 'telemetry'
Requires-Dist: opentelemetry-instrumentation-openai==0.41.0; extra == 'telemetry'
Description-Content-Type: text/markdown

<p align="center">
  <img src="https://blaxel.ai/logo.png" alt="Blaxel" width=500/>
</p>

# Python SDK

**Blaxel is a computing platform for AI agent builders, with all the services and infrastructure to build and deploy agents efficiently.** This repository contains the Python SDK to create and manage resources on Blaxel.

## Table of Contents

- [Installation](#installation)
  - [Authentication](#authentication)
- [Features](#features)
- [Quickstart](#quickstart)
- [Contributing](#contributing)
- [License](#license)



## Installation

Install Blaxel SDK which lets you manage Blaxel resources.

```bash
# Base package (core functionality)
pip install blaxel

# With specific modules
pip install "blaxel[telemetry]"
pip install "blaxel[core,telemetry,crewai]"

# Everything
pip install "blaxel[all]"
```

### Available modules

- `blaxel.core` - Core functionality (always available)
- `blaxel.telemetry` - Telemetry and monitoring
- `blaxel.crewai` - CrewAI integration
- `blaxel.openai` - OpenAI integration
- `blaxel.langgraph` - LangGraph integration
- `blaxel.livekit` - LiveKit integration
- `blaxel.llamaindex` - LlamaIndex integration
- `blaxel.pydantic` - Pydantic AI integration
- `blaxel.googleadk` - Google ADK integration



### Authentication

The Blaxel SDK authenticates with your workspace using credentials from these sources, in priority order:
1. When running on Blaxel, authentication is handled automatically
2. Variables in your .env file (`BL_WORKSPACE` and `BL_API_KEY`, or see [this page](https://docs.blaxel.ai/Agents/Variables-and-secrets) for other authentication options).
3. Environment variables from your machine
4. Configuration file created locally when you log in through Blaxel CLI (or deploy on Blaxel)

When developing locally, the recommended method is to just log in to your workspace with Blaxel CLI. This allows you to run Blaxel SDK functions that will automatically connect to your workspace without additional setup. When you deploy on Blaxel, this connection persists automatically.

When running Blaxel SDK from a remote server that is not Blaxel-hosted, we recommend using environment variables as described in the third option above.



## Features
- Agents & MCP servers
  - [Create MCP servers](https://docs.blaxel.ai/Functions/Create-MCP-server)
  - [Connect to MCP servers and model APIs hosted on Blaxel](https://docs.blaxel.ai/Agents/Develop-an-agent-ts)
  - [Call agents from another agent](https://docs.blaxel.ai/Agents/Develop-an-agent-ts#connect-to-another-agent-multi-agent-chaining)
  - [Deploy on Blaxel](https://docs.blaxel.ai/Agents/Deploy-an-agent)
- Sandboxes
  - [Create and update sandboxes and sandbox previews](https://docs.blaxel.ai/Sandboxes/Overview)
  - [Run filesystem operations and processes on a sandbox](https://docs.blaxel.ai/Sandboxes/Processes)
- [Use environment variables or secrets](https://docs.blaxel.ai/Agents/Variables-and-secrets)



## Quickstart

Blaxel CLI gives you a quick way to create new applications: agents, MCP servers, jobs, etc - and deploy them to Blaxel.

**Prerequisites**:
- **Node.js:** v18 or later.
- **Blaxel CLI:** Make sure you have Blaxel CLI installed. If not, [install it](https://docs.blaxel.ai/cli-reference/introduction):
  ```bash
  curl -fsSL \
  https://raw.githubusercontent.com/blaxel-ai/toolkit/main/install.sh \
  | BINDIR=/usr/local/bin sudo -E sh
  ```
- **Blaxel login:** Login to Blaxel:
  ```bash
    bl login YOUR-WORKSPACE
  ```

```bash
bl create-agent-app myfolder
cd myfolder
bl deploy
```

Also available:
-  `bl create-mcp-server`
-  `bl create-job`



## Contributing

Contributions are welcome! Please feel free to submit a Pull Request.



## License

This project is licensed under the MIT License - see the LICENSE file for details.
