Skip to main content

Vital Agent Container SDK

Project description

Vital Agent Container Python SDK

Python 3.12+ License Code style: black

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

  1. Copy the configuration template:

    cp agent_config.yaml.template agent_config.yaml
    
  2. Pass app_home when 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

  1. Copy the environment template:

    cp .env.example .env
    
  2. 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 endpoint
  • WebSocket /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

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature-name
  3. Make your changes and add tests
  4. Run the test suite: make test
  5. Format your code: make format
  6. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vital_agent_container_sdk-0.1.17.tar.gz (23.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

vital_agent_container_sdk-0.1.17-py3-none-any.whl (22.0 kB view details)

Uploaded Python 3

File details

Details for the file vital_agent_container_sdk-0.1.17.tar.gz.

File metadata

File hashes

Hashes for vital_agent_container_sdk-0.1.17.tar.gz
Algorithm Hash digest
SHA256 e5eddad635b0962cfa3ebdd5e8e7f1166eda8424839c1974797e212eb647f0db
MD5 6743e10d5cac0cd142b5467fb4ba371f
BLAKE2b-256 4d966c133d7fa7e908e0731e4287f2b633cde74b83986cbad59ee453fff6cede

See more details on using hashes here.

File details

Details for the file vital_agent_container_sdk-0.1.17-py3-none-any.whl.

File metadata

File hashes

Hashes for vital_agent_container_sdk-0.1.17-py3-none-any.whl
Algorithm Hash digest
SHA256 cf2eb77378a4c734aa6a9b0682e7029273e71ee05fa69798293ca0a575733ecd
MD5 714eb635475524dbe4b95da0a2f6d2c5
BLAKE2b-256 29fd46fdec4c4744a55fc41309f6dccaf1848fd2fe47afc24a5565bc40370459

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page