Prerequisites
- Docker 24+
- Docker Compose 2.20+
- 2GB+ RAM
Quick Start
Copy
# 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
Copy
# 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
Copy
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
Copy
# 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:Copy
services:
caddy:
image: caddy:2-alpine
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy-data:/data
volumes:
caddy-data:
Copy
# Caddyfile
aip.yourcompany.com {
reverse_proxy aip-hub:3000
}
Connect SDK
Copy
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
Copy
# 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
Copy
# Pull latest
docker compose pull
# Restart
docker compose up -d
Troubleshooting
Connection refused
Copy
# Check service logs
docker compose logs aip-hub
# Verify network
docker network ls
Database issues
Copy
# Check postgres logs
docker compose logs postgres
# Connect to database
docker compose exec postgres psql -U aip aip