Network Setup

This guide explains how to set up and configure OpenConvert networks for different deployment scenarios.

Quick Local Setup

For development and testing, you can quickly set up a local network:

# Clone OpenAgents repository
git clone https://github.com/openagents/openagents.git
cd openagents

# Start the network coordinator
openagents launch-network demos/openconvert/network_config.yaml

# In separate terminals, start conversion agents
python demos/openconvert/run_agent.py doc &
python demos/openconvert/run_agent.py image &
python demos/openconvert/run_agent.py audio &

# Test the setup
openconvert --list-formats

Network Architecture

OpenConvert networks consist of:

Network Coordinator

Central discovery service that helps clients find available agents.

Conversion Agents

Specialized services that perform specific file conversions.

Clients

OpenConvert CLI or API clients that request conversions.

┌─────────────┐    ┌───────────────────┐    ┌─────────────┐
│   Client    │───▶│ Network           │◀───│   Agent     │
│ (CLI/API)   │    │ Coordinator       │    │ (doc-conv)  │
└─────────────┘    │ (Discovery)       │    └─────────────┘
                   └───────────────────┘
                            ▲               ┌─────────────┐
                            └───────────────│   Agent     │
                                            │ (img-conv)  │
                                            └─────────────┘

Network Configuration

Basic Configuration

Create a network configuration file (network_config.yaml):

# Basic network configuration
network:
  name: "openconvert-network"
  coordinator:
    host: "0.0.0.0"
    port: 8765
    max_agents: 50

discovery:
  protocol: "simple"
  heartbeat_interval: 30
  agent_timeout: 120

logging:
  level: "INFO"
  file: "network.log"

Production Configuration

For production environments:

# Production network configuration
network:
  name: "openconvert-prod"
  coordinator:
    host: "0.0.0.0"
    port: 8765
    max_agents: 200
    max_connections: 1000

security:
  require_auth: true
  api_key_file: "/etc/openconvert/api_keys.txt"
  tls:
    enabled: true
    cert_file: "/etc/ssl/certs/openconvert.crt"
    key_file: "/etc/ssl/private/openconvert.key"

discovery:
  protocol: "enhanced"
  heartbeat_interval: 30
  agent_timeout: 120
  load_balancing: true

monitoring:
  enabled: true
  metrics_port: 9090
  health_check_endpoint: "/health"

logging:
  level: "INFO"
  file: "/var/log/openconvert/network.log"
  max_size: "100MB"
  retention_days: 30

Agent Configuration

Document Conversion Agent

Create an agent configuration (doc_agent_config.yaml):

agent:
  id: "doc-converter-1"
  name: "Document Conversion Agent"
  type: "document"

capabilities:
  formats:
    input: ["text/plain", "text/markdown", "text/csv"]
    output: ["application/pdf", "application/vnd.openxmlformats-officedocument.wordprocessingml.document"]

features:
  supports_prompts: true
  batch_processing: true
  max_file_size: "50MB"

network:
  coordinator_host: "localhost"
  coordinator_port: 8765
  agent_port: 8766

processing:
  max_concurrent: 10
  timeout: 300
  temp_dir: "/tmp/openconvert"

Image Processing Agent

agent:
  id: "image-processor-1"
  name: "Image Processing Agent"
  type: "image"

capabilities:
  formats:
    input: ["image/jpeg", "image/png", "image/gif", "image/tiff"]
    output: ["image/jpeg", "image/png", "image/webp", "application/pdf"]

features:
  supports_prompts: true
  batch_processing: true
  max_file_size: "100MB"

processing:
  max_concurrent: 5
  timeout: 180
  quality_settings:
    jpeg_quality: 85
    png_compression: 6
    webp_quality: 80

Starting Agents

Start agents with their configurations:

# Start document agent
python demos/openconvert/run_agent.py doc --config doc_agent_config.yaml

# Start image agent
python demos/openconvert/run_agent.py image --config image_agent_config.yaml

# Start multiple instances for load balancing
for i in {1..3}; do
    python demos/openconvert/run_agent.py doc --id "doc-agent-$i" &
done

Deployment Scenarios

Single Machine Development

Perfect for development and testing:

# Terminal 1: Start network
cd openagents
openagents launch-network demos/openconvert/network_config.yaml

# Terminal 2: Start agents
python demos/openconvert/run_agent.py doc &
python demos/openconvert/run_agent.py image &

# Terminal 3: Test conversions
echo "Hello World" > test.txt
openconvert -i test.txt -o test.pdf

Small Team Setup

Network coordinator on a shared server, agents on multiple machines:

# On server (coordinator)
openagents launch-network --host 0.0.0.0 --port 8765 network_config.yaml

# On workstation 1 (document processing)
python run_agent.py doc --coordinator-host server.local

# On workstation 2 (image processing)
python run_agent.py image --coordinator-host server.local

# On workstation 3 (audio/video processing)
python run_agent.py audio --coordinator-host server.local
python run_agent.py video --coordinator-host server.local

Production Cluster

High-availability setup with multiple coordinators and agent pools:

# Load balancer configuration (nginx/haproxy)
upstream openconvert_coordinators {
    server coord1.example.com:8765;
    server coord2.example.com:8765;
    server coord3.example.com:8765;
}

# Agent deployment with process manager
# /etc/systemd/system/openconvert-doc-agent@.service
[Unit]
Description=OpenConvert Document Agent %i
After=network.target

[Service]
Type=simple
User=openconvert
WorkingDirectory=/opt/openconvert
ExecStart=/opt/openconvert/venv/bin/python run_agent.py doc --id doc-agent-%i
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

Cloud Deployment

Using containerized agents with orchestration:

# docker-compose.yml
version: '3.8'

services:
  coordinator:
    image: openagents/coordinator:latest
    ports:
      - "8765:8765"
    environment:
      - NETWORK_CONFIG=/config/network.yaml
    volumes:
      - ./config:/config

  doc-agent:
    image: openagents/doc-agent:latest
    scale: 3
    environment:
      - COORDINATOR_HOST=coordinator
      - COORDINATOR_PORT=8765
    depends_on:
      - coordinator

  image-agent:
    image: openagents/image-agent:latest
    scale: 2
    environment:
      - COORDINATOR_HOST=coordinator
      - COORDINATOR_PORT=8765
    depends_on:
      - coordinator

Kubernetes deployment:

# k8s-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: openconvert-coordinator
spec:
  replicas: 2
  selector:
    matchLabels:
      app: openconvert-coordinator
  template:
    metadata:
      labels:
        app: openconvert-coordinator
    spec:
      containers:
      - name: coordinator
        image: openagents/coordinator:latest
        ports:
        - containerPort: 8765
        env:
        - name: NETWORK_CONFIG
          value: "/config/network.yaml"

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: openconvert-doc-agents
spec:
  replicas: 5
  selector:
    matchLabels:
      app: openconvert-doc-agent
  template:
    metadata:
      labels:
        app: openconvert-doc-agent
    spec:
      containers:
      - name: doc-agent
        image: openagents/doc-agent:latest
        env:
        - name: COORDINATOR_HOST
          value: "openconvert-coordinator-service"

Security Configuration

Authentication

Configure API key authentication:

# In network configuration
security:
  require_auth: true
  auth_method: "api_key"
  api_key_file: "/etc/openconvert/keys.txt"

Create API keys file:

# /etc/openconvert/keys.txt
client1:abc123def456ghi789
client2:xyz789uvw456rst123
admin:super_secret_admin_key

Client configuration:

# Use API key with client
export OPENCONVERT_API_KEY=abc123def456ghi789
openconvert -i file.txt -o file.pdf

TLS/SSL Setup

Enable encrypted communication:

# Network configuration
security:
  tls:
    enabled: true
    cert_file: "/etc/ssl/certs/openconvert.crt"
    key_file: "/etc/ssl/private/openconvert.key"
    ca_file: "/etc/ssl/certs/ca.crt"
    verify_clients: true

Generate certificates:

# Generate CA key and certificate
openssl genrsa -out ca.key 4096
openssl req -new -x509 -days 365 -key ca.key -out ca.crt

# Generate server key and certificate
openssl genrsa -out server.key 4096
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -out server.crt

Monitoring and Maintenance

Health Monitoring

Configure health checks:

monitoring:
  enabled: true
  health_check:
    endpoint: "/health"
    interval: 30
    timeout: 10
  metrics:
    enabled: true
    port: 9090
    format: "prometheus"

Monitor with external tools:

# Check coordinator health
curl http://coordinator:8765/health

# Check metrics
curl http://coordinator:9090/metrics

# Monitor with Prometheus
# Add to prometheus.yml:
scrape_configs:
  - job_name: 'openconvert'
    static_configs:
      - targets: ['coordinator:9090']

Log Management

Configure comprehensive logging:

logging:
  level: "INFO"
  format: "json"
  outputs:
    - type: "file"
      path: "/var/log/openconvert/network.log"
      max_size: "100MB"
      max_files: 10
    - type: "syslog"
      facility: "daemon"
    - type: "elasticsearch"
      host: "logs.example.com"
      index: "openconvert"

Performance Tuning

Optimize for your workload:

performance:
  coordinator:
    max_connections: 1000
    connection_pool_size: 100
    request_timeout: 30

  agents:
    max_concurrent_jobs: 10
    job_timeout: 300
    memory_limit: "2GB"

caching:
  enabled: true
  ttl: 3600
  max_entries: 10000

Backup and Recovery

Backup configuration and logs:

#!/bin/bash
# backup.sh

BACKUP_DIR="/backup/openconvert/$(date +%Y%m%d)"
mkdir -p "$BACKUP_DIR"

# Backup configurations
cp -r /etc/openconvert/ "$BACKUP_DIR/config/"

# Backup logs (last 7 days)
find /var/log/openconvert/ -mtime -7 -type f -exec cp {} "$BACKUP_DIR/logs/" \\;

# Backup agent states
curl http://coordinator:8765/export > "$BACKUP_DIR/agent_states.json"

Troubleshooting

Common Network Issues

Coordinator won’t start:

# Check port availability
netstat -an | grep 8765

# Check configuration
openagents validate-config network_config.yaml

# Check logs
tail -f /var/log/openconvert/network.log

Agents can’t connect:

# Test connectivity
telnet coordinator-host 8765

# Check firewall
iptables -L | grep 8765

# Verify agent configuration
python run_agent.py doc --dry-run

Performance issues:

# Monitor resource usage
htop
iotop

# Check network latency
ping coordinator-host

# Monitor agent queues
curl http://coordinator:8765/stats

See Also

  • agent-configuration - Detailed agent setup

  • docker-deployment - Container deployment

  • Troubleshooting - General troubleshooting