File size: 7,710 Bytes
916e12b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
# Deploying IntegraChat to Hugging Face Spaces

This guide walks you through deploying IntegraChat as a Hugging Face Space.

## πŸ“‹ Prerequisites

1. **Hugging Face Account**: Sign up at [huggingface.co](https://huggingface.co)
2. **Hugging Face Token**: Get your token from [Settings β†’ Access Tokens](https://huggingface.co/settings/tokens)
3. **Required Services** (configure via environment variables):
   - PostgreSQL with pgvector (for RAG storage)
   - Ollama (local LLM) or Groq API (cloud LLM)
   - Optional: Supabase (for production storage)
   - Optional: Google Custom Search API (for web search)

## πŸš€ Step-by-Step Deployment

### Step 1: Create a New Space

1. Go to [https://huggingface.co/new-space](https://huggingface.co/new-space)
2. Fill in the form:
   - **Space name**: `integrachat` (or your preferred name)
   - **SDK**: Select **Docker**
   - **Hardware**: Choose based on your needs:
     - **CPU basic** - For testing (free tier)
     - **CPU upgrade** - Better performance (paid)
     - **GPU** - If you need GPU acceleration (paid)
   - **Visibility**: Public or Private
3. Click **Create Space**

### Step 2: Prepare Your Repository

Your project structure should look like this:

```
IntegraChat/
β”œβ”€β”€ Dockerfile              βœ… (created)
β”œβ”€β”€ .dockerignore           βœ… (created)
β”œβ”€β”€ README_HF_SPACES.md     βœ… (created)
β”œβ”€β”€ requirements.txt        βœ… (already exists)
β”œβ”€β”€ app.py                  βœ… (already exists)
β”œβ”€β”€ env.example             βœ… (already exists)
β”œβ”€β”€ LICENSE                  βœ… (already exists)
β”œβ”€β”€ README.md               βœ… (already exists)
β”œβ”€β”€ assets/
β”‚   └── banner.png          βœ… (already exists)
β”œβ”€β”€ backend/                βœ… (entire directory)
└── scripts/                βœ… (if you have any)
```

### Step 3: Push to Hugging Face

#### Option A: Using Git (Recommended)

```bash
# Initialize git if not already done
git init

# Add Hugging Face remote
git remote add hf https://huggingface.co/spaces/<your-username>/<space-name>

# Add all files (except venv)
git add Dockerfile .dockerignore README_HF_SPACES.md requirements.txt app.py env.example LICENSE README.md assets/ backend/ scripts/

# Commit
git commit -m "Initial commit for HF Spaces deployment"

# Push to Hugging Face
git push hf main
```

#### Option B: Using Hugging Face Web Interface

1. Go to your Space page
2. Click **Files and versions** tab
3. Click **Upload files**
4. Upload all necessary files (drag and drop or select files)

### Step 4: Configure Environment Variables

1. Go to your Space page
2. Click **Settings** tab
3. Scroll to **Repository secrets** section
4. Add the following environment variables:

#### Required Variables

```env
POSTGRESQL_URL=postgresql://user:password@host:port/database
OLLAMA_URL=http://your-ollama-server:11434
OLLAMA_MODEL=llama3.1:latest
```

**OR** (if using Groq instead of Ollama):

```env
GROQ_API_KEY=your_groq_api_key
LLM_BACKEND=groq
```

#### Optional Variables

```env
# Supabase (for production storage)
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_SERVICE_KEY=your_service_role_key

# Google Custom Search (for web search)
GOOGLE_SEARCH_API_KEY=your_google_api_key
GOOGLE_SEARCH_CX_ID=your_search_engine_id

# MCP Server Configuration
MCP_PORT=8900
MCP_HOST=0.0.0.0

# API Configuration
API_PORT=8000
BACKEND_BASE_URL=http://localhost:8000

# Memory Configuration
MCP_MEMORY_MAX_ITEMS=10
MCP_MEMORY_TTL_SECONDS=900

# Logging
LOG_LEVEL=info
APP_ENV=production
```

### Step 5: Wait for Build

1. After pushing, Hugging Face will automatically start building your Docker image
2. You can monitor the build progress in the **Logs** tab
3. Build typically takes 5-10 minutes for the first time
4. Once built, your Space will be available at:
   `https://huggingface.co/spaces/<your-username>/<space-name>`

### Step 6: Verify Deployment

1. **Check Logs**: Go to the **Logs** tab to see if all services started correctly
2. **Test UI**: Open your Space URL and verify the Gradio UI loads
3. **Test API**: Try accessing `https://<your-space-url>/api/docs` for FastAPI docs
4. **Test Health**: Check `https://<your-space-url>/api/health` for backend health

## πŸ”§ Troubleshooting

### Build Fails

- **Check Dockerfile syntax**: Ensure all commands are valid
- **Check requirements.txt**: Verify all packages are available on PyPI
- **Check logs**: Review build logs for specific errors
- **Common issues**:
  - Missing system dependencies β†’ Add to `apt-get install` in Dockerfile
  - Python version mismatch β†’ Update `FROM python:3.10-slim` if needed
  - Port conflicts β†’ Ensure ports 7860, 8000, 8900 are exposed

### Services Not Starting

- **Check environment variables**: Ensure all required vars are set
- **Check service logs**: Review logs for MCP server and FastAPI errors
- **Database connection**: Verify PostgreSQL URL is correct and accessible
- **LLM connection**: Verify Ollama URL or Groq API key is valid

### UI Not Loading

- **Check Gradio logs**: Look for errors in the Logs tab
- **Check port binding**: Ensure Gradio binds to `0.0.0.0:7860`
- **Check backend connection**: Verify `BACKEND_BASE_URL` is correct

### API Endpoints Not Working

- **Check FastAPI logs**: Review backend startup logs
- **Check MCP server**: Ensure MCP server is running on port 8900
- **Check CORS**: Verify CORS middleware is configured correctly
- **Check headers**: Ensure `x-tenant-id` and `x-user-role` headers are sent

## πŸ“ Important Notes

1. **Port Configuration**: 
   - Hugging Face Spaces automatically maps port 7860 to the public URL
   - Internal services (FastAPI on 8000, MCP on 8900) are accessible within the container
   - Use `localhost` for inter-service communication

2. **Database Access**:
   - Your PostgreSQL database must be accessible from Hugging Face's servers
   - Consider using a cloud database (Supabase, AWS RDS, etc.)
   - Ensure firewall rules allow connections from Hugging Face IPs

3. **LLM Access**:
   - If using Ollama, it must be accessible from Hugging Face servers
   - Consider using Groq API for cloud-based LLM access
   - Or use Hugging Face's Inference API

4. **Resource Limits**:
   - Free tier has CPU and memory limits
   - Consider upgrading for production use
   - Monitor resource usage in the Space settings

5. **Secrets Management**:
   - Never commit `.env` files with secrets
   - Use Hugging Face Space secrets for sensitive data
   - Use `env.example` as a template

## 🎯 Next Steps

1. **Customize README**: Update `README_HF_SPACES.md` with your specific details
2. **Add Banner**: Upload a banner image to `assets/banner.png`
3. **Test Thoroughly**: Test all features in the deployed environment
4. **Monitor Usage**: Check Space analytics for usage patterns
5. **Update Documentation**: Keep documentation in sync with deployment

## πŸ“š Additional Resources

- [Hugging Face Spaces Documentation](https://huggingface.co/docs/hub/spaces)
- [Docker on Hugging Face Spaces](https://huggingface.co/docs/hub/spaces-sdks-docker)
- [Environment Variables Guide](https://huggingface.co/docs/hub/spaces-config#environment-variables)

## βœ… Checklist

Before deploying, ensure:

- [ ] Dockerfile is present and valid
- [ ] .dockerignore excludes venv and .env
- [ ] requirements.txt includes all dependencies
- [ ] Environment variables are documented
- [ ] Database is accessible from Hugging Face servers
- [ ] LLM service is configured (Ollama or Groq)
- [ ] README_HF_SPACES.md is customized
- [ ] All code is committed and pushed

---

**Need Help?** Check the [Troubleshooting](#-troubleshooting) section or open an issue in the repository.