File size: 2,371 Bytes
be8c7bb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c465b41
 
 
be8c7bb
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
version: '3.8'

services:
  # PostgreSQL database
  postgres:
    image: postgres:16-alpine
    container_name: huggingclip-postgres
    environment:
      POSTGRES_DB: paperclip
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: paperclip
      POSTGRES_INITDB_ARGS: "--encoding=UTF8"
    ports:
      - "5432:5432"
    volumes:
      - postgres_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      interval: 10s
      timeout: 5s
      retries: 5
    networks:
      - huggingclip-network

  # HuggingClip application
  paperclip:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: huggingclip-app
    depends_on:
      postgres:
        condition: service_healthy
    environment:
      # Database
      DATABASE_URL: postgres://postgres:paperclip@postgres:5432/paperclip

      # Paperclip config
      PORT: 3100
      SERVE_UI: "true"
      NODE_ENV: development
      HOST: 0.0.0.0
      PAPERCLIP_HOME: /paperclip
      PAPERCLIP_DEPLOYMENT_MODE: local

      # Agent providers (add your keys here)
      # ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY:-}
      # GEMINI_API_KEY: ${GEMINI_API_KEY:-}
      # OPENAI_API_KEY: ${OPENAI_API_KEY:-}

      # HF Backup (optional for local testing)
      HF_TOKEN: ${HF_TOKEN:-}
      HF_USERNAME: ${HF_USERNAME:-}
      SYNC_INTERVAL: "180"
      BACKUP_DATASET_NAME: paperclip-backup-dev

      # Cloudflare (optional)
      # CLOUDFLARE_WORKERS_TOKEN: ${CLOUDFLARE_WORKERS_TOKEN:-}
      # CLOUDFLARE_ACCOUNT_ID: ${CLOUDFLARE_ACCOUNT_ID:-}

      # Telemetry
      PAPERCLIP_TELEMETRY_DISABLED: "1"
      DO_NOT_TRACK: "1"

    ports:
      - "7861:7861"  # Public health server + dashboard
      - "3100:3100"  # Direct Paperclip access (development only)
    volumes:
      - paperclip_data:/paperclip
      - ./paperclip-sync.py:/app/paperclip-sync.py
      - ./health-server.js:/app/health-server.js
      - ./start.sh:/app/start.sh
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:7861/health"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 90s
    networks:
      - huggingclip-network
    cap_add:
      - NET_ADMIN  # For potential network utilities

volumes:
  postgres_data:
    driver: local
  paperclip_data:
    driver: local

networks:
  huggingclip-network:
    driver: bridge