Vital Agent Container SDK
Project description
Vital Agent Container Python SDK
A Python SDK that provides infrastructure components for building AI agent applications with WebSocket-based communication and asynchronous message processing.
Features
- 🚀 FastAPI-based WebSocket server with real-time communication
- 🔄 Asynchronous message processing with task management
- 🛡️ Production-ready with structured logging and health checks
- 🔌 Plugin architecture for custom message handlers
- ☁️ Cloud-ready with flexible deployment options
- 📊 Streaming support for real-time data flows
- ⚡ Task cancellation and interruption handling
Installation
Install from PyPI (when published)
pip install vital-agent-container-sdk
Install from Source
Using Conda (Recommended for Development)
# Clone the repository
git clone https://github.com/vital-ai/vital-agent-container-python.git
cd vital-agent-container-python
# Create environment from environment.yml
conda env create -f environment.yml
conda activate vital-agent-container
# Install in development mode
pip install -e .
Using pip
# Clone the repository
git clone https://github.com/vital-ai/vital-agent-container-python.git
cd vital-agent-container-python
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install in development mode
pip install -e .
Configuration
Option A: File-based configuration
-
Copy the configuration template:
cp agent_config.yaml.template agent_config.yaml
-
Pass
app_homewhen creating the app:app = AgentContainerApp(handler, app_home=".")
Option B: Programmatic configuration
Pass a config dict directly — no YAML file needed:
config = {"key": "value"}
app = AgentContainerApp(handler, app_config=config)
Environment variables
-
Copy the environment template:
cp .env.example .env
-
Update the file with your specific configuration.
Usage
Basic Implementation
Create a custom message handler by implementing the AIMPMessageHandlerInf interface:
from vital_agent_container.handler.aimp_message_handler_inf import AIMPMessageHandlerInf
from vital_agent_container.agent_container_app import AgentContainerApp
class MyMessageHandler(AIMPMessageHandlerInf):
async def process_message(self, config, client, websocket, data, started_event):
# Your custom message processing logic here
# Process the incoming message data
message = json.loads(data)
# Perform your agent logic
response = await self.handle_agent_request(message)
# Send response back through websocket
await websocket.send_text(json.dumps(response))
# Signal that processing has started
started_event.set()
async def handle_agent_request(self, message):
# Implement your specific agent logic here
return {"status": "processed", "result": "Agent response"}
# In your application's main module:
def create_agent_app():
handler = MyMessageHandler()
return AgentContainerApp(handler, app_home=".")
# Or pass configuration directly as a dict:
def create_agent_app_with_config():
handler = MyMessageHandler()
config = {"key": "value"} # Your configuration dict
return AgentContainerApp(handler, app_config=config)
# Your application can then run the agent container
if __name__ == "__main__":
import uvicorn
app = create_agent_app()
uvicorn.run(app, host="0.0.0.0", port=8000)
Message Format
Applications using this library will receive messages in the following format through the WebSocket connection:
[{
"type": "message",
"http://vital.ai/ontology/vital-aimp#hasIntent": "process",
"content": "Your message content"
}]
Your message handler implementation should parse and respond to these messages according to your agent's logic.
Development
Setup Development Environment
# Install with development dependencies
make install-dev
# Or manually
pip install -e ".[dev]"
pre-commit install
Available Make Commands
make help # Show available commands
make test # Run tests
make test-cov # Run tests with coverage
make lint # Run linting
make format # Format code
make build # Build package
Code Quality
This project uses:
- Black for code formatting
- isort for import sorting
- flake8 for linting
- mypy for type checking
- pre-commit hooks for automated checks
API Endpoints
GET /health- Health check endpointWebSocket /ws- Main WebSocket endpoint for message processing
Architecture
├── vital_agent_container/
│ ├── agent_container_app.py # Main FastAPI application
│ ├── handler/ # Message handler interfaces
│ ├── processor/ # Message processing logic
│ ├── tasks/ # Task management
│ ├── streaming/ # Streaming response handling
│ └── utils/ # Utility functions
├── agent_config.yaml # Agent configuration
├── environment.yml # Conda environment
└── pyproject.toml # Modern Python project config
Contributing
- Fork the repository
- Create a feature branch:
git checkout -b feature-name - Make your changes and add tests
- Run the test suite:
make test - Format your code:
make format - Submit a pull request
License
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
Support
For questions and support, please open an issue on the GitHub repository.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file vital_agent_container_sdk-0.1.17.tar.gz.
File metadata
- Download URL: vital_agent_container_sdk-0.1.17.tar.gz
- Upload date:
- Size: 23.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e5eddad635b0962cfa3ebdd5e8e7f1166eda8424839c1974797e212eb647f0db
|
|
| MD5 |
6743e10d5cac0cd142b5467fb4ba371f
|
|
| BLAKE2b-256 |
4d966c133d7fa7e908e0731e4287f2b633cde74b83986cbad59ee453fff6cede
|
File details
Details for the file vital_agent_container_sdk-0.1.17-py3-none-any.whl.
File metadata
- Download URL: vital_agent_container_sdk-0.1.17-py3-none-any.whl
- Upload date:
- Size: 22.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cf2eb77378a4c734aa6a9b0682e7029273e71ee05fa69798293ca0a575733ecd
|
|
| MD5 |
714eb635475524dbe4b95da0a2f6d2c5
|
|
| BLAKE2b-256 |
29fd46fdec4c4744a55fc41309f6dccaf1848fd2fe47afc24a5565bc40370459
|