Skip to main content

Prerequisites

  • Docker 24+
  • Docker Compose 2.20+
  • 2GB+ RAM

Quick Start

# Clone AIP Hub
git clone https://github.com/runtools/aip-hub
cd aip-hub

# Configure
cp .env.example .env
nano .env  # Edit configuration

# Start
docker compose up -d

Configuration

.env File

# Required
DATABASE_URL=postgres://aip:password@postgres:5432/aip
JWT_SECRET=your-jwt-secret-min-32-chars

# Domain (for production)
DOMAIN=aip.yourcompany.com
API_URL=https://aip.yourcompany.com

# Redis (optional, improves performance)
REDIS_URL=redis://redis:6379

# Embeddings (for Intelligence Pipeline)
OPENAI_API_KEY=sk-...
EMBEDDING_MODEL=text-embedding-3-small

# Auth (optional)
AUTH_PROVIDER=oidc
OIDC_ISSUER=https://auth.yourcompany.com
OIDC_CLIENT_ID=aip-hub
OIDC_CLIENT_SECRET=...

# RunTools Cloud connection (for agent execution)
RUNTOOLS_API_KEY=rt_...

docker-compose.yml

version: '3.8'

services:
  aip-hub:
    image: runtools/aip-hub:latest
    ports:
      - "3000:3000"
    environment:
      - DATABASE_URL=${DATABASE_URL}
      - REDIS_URL=${REDIS_URL}
      - JWT_SECRET=${JWT_SECRET}
      - OPENAI_API_KEY=${OPENAI_API_KEY}
    depends_on:
      - postgres
      - redis

  postgres:
    image: postgres:16
    environment:
      - POSTGRES_USER=aip
      - POSTGRES_PASSWORD=password
      - POSTGRES_DB=aip
    volumes:
      - postgres-data:/var/lib/postgresql/data

  redis:
    image: redis:7-alpine
    volumes:
      - redis-data:/data

volumes:
  postgres-data:
  redis-data:

Verify Installation

# Check services are running
docker compose ps

# Check API health
curl http://localhost:3000/health

# Check logs
docker compose logs -f aip-hub

SSL Setup

For production, add a reverse proxy with SSL:
services:
  caddy:
    image: caddy:2-alpine
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - caddy-data:/data

volumes:
  caddy-data:
# Caddyfile
aip.yourcompany.com {
    reverse_proxy aip-hub:3000
}

Connect SDK

import { AIPHub } from '@aip/client';

const hub = new AIPHub({
  endpoint: 'https://aip.yourcompany.com',
  apiKey: 'your-hub-api-key',
  
  // Connect to RunTools for agent execution
  agentProvider: {
    type: 'runtools',
    apiKey: process.env.RUNTOOLS_API_KEY,
  },
});

Backup

# Backup PostgreSQL
docker compose exec postgres pg_dump -U aip aip > backup.sql

# Restore
cat backup.sql | docker compose exec -T postgres psql -U aip aip

Updating

# Pull latest
docker compose pull

# Restart
docker compose up -d

Troubleshooting

Connection refused

# Check service logs
docker compose logs aip-hub

# Verify network
docker network ls

Database issues

# Check postgres logs
docker compose logs postgres

# Connect to database
docker compose exec postgres psql -U aip aip