mirror of
https://github.com/codeflash-ai/codeflash-internal.git
synced 2026-05-04 18:25:18 +00:00
Signed-off-by: Saurabh Misra <misra.saurabh1@gmail.com> Co-authored-by: saga4 <saga4@codeflashs-MacBook-Air.local> Co-authored-by: Sarthak Agarwal <sarthak.saga@gmail.com> Co-authored-by: Mohamed Ashraf <mohamedashrraf222@gmail.com> Co-authored-by: Aseem Saxena <aseem.bits@gmail.com>
341 lines
No EOL
8.7 KiB
Markdown
341 lines
No EOL
8.7 KiB
Markdown
# Codeflash On-Premise Deployment
|
|
|
|
A single Docker container that runs all Codeflash services for on-premise deployments.
|
|
|
|
## What's Inside
|
|
|
|
The unified container includes:
|
|
- **PostgreSQL 15** - Database server (port 5432)
|
|
- **aiservice** - Python Django optimization service (port 8000)
|
|
- **cf-api** - Node.js API server (port 3001)
|
|
- **cf-webapp** - Next.js web interface (port 3000)
|
|
- **Supervisord** - Process manager for all services
|
|
|
|
## Quick Start
|
|
|
|
### Prerequisites
|
|
|
|
- Docker installed (version 20.10 or higher)
|
|
- An AI provider API key (Azure OpenAI, OpenAI, or Anthropic)
|
|
|
|
### Step 1: Build the Docker Image
|
|
|
|
```bash
|
|
git clone https://github.com/codeflash-ai/codeflash
|
|
cd codeflash
|
|
docker build -f deployment/onprem-simple/Dockerfile.unifiedall -t codeflash/unified:latest .
|
|
```
|
|
|
|
**Build time:** ~5-10 minutes
|
|
|
|
### Step 2: Run the Container
|
|
|
|
The simplest way to run Codeflash (only 1 required environment variable!):
|
|
|
|
```bash
|
|
docker run -d --name codeflash \
|
|
-e AZURE_OPENAI_API_KEY=your-azure-api-key \
|
|
-p 5432:5432 \
|
|
-p 8000:8000 \
|
|
-p 3001:3001 \
|
|
-p 3000:3000 \
|
|
-v codeflash-data:/var/lib/postgresql/data \
|
|
codeflash/unified:latest
|
|
```
|
|
|
|
**What happens automatically:**
|
|
- ✅ DATABASE_URL defaults to built-in PostgreSQL
|
|
- ✅ SECRET_KEY auto-generated
|
|
- ✅ URLs default to localhost
|
|
- ✅ API key auto-generated on first run
|
|
|
|
### Step 3: Get Your API Key
|
|
|
|
After the container starts (~15 seconds), retrieve your API key:
|
|
|
|
```bash
|
|
# View logs to see the API key
|
|
docker logs codeflash
|
|
|
|
# Or get it from the saved file
|
|
docker exec codeflash cat /app/API_KEY.txt
|
|
```
|
|
|
|
You'll see output like:
|
|
```
|
|
======================================
|
|
CODEFLASH SETUP COMPLETE!
|
|
======================================
|
|
|
|
Your API Key: cf-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
|
|
|
Save this API key! You'll need it to configure the Codeflash CLI.
|
|
======================================
|
|
```
|
|
|
|
**Save this API key** - you'll need it for the CLI!
|
|
|
|
### Step 4: Install the CLI
|
|
|
|
```bash
|
|
pip install codeflash
|
|
```
|
|
|
|
### Step 5: Configure the CLI
|
|
|
|
```bash
|
|
export CODEFLASH_API_KEY=cf-your-api-key-from-step-3
|
|
export CODEFLASH_AIS_SERVER=local
|
|
export CODEFLASH_CFAPI_SERVER=local
|
|
```
|
|
|
|
Or create a `.env` file in your project:
|
|
```bash
|
|
CODEFLASH_API_KEY=cf-your-api-key-from-step-3
|
|
CODEFLASH_AIS_SERVER=local
|
|
CODEFLASH_CFAPI_SERVER=local
|
|
```
|
|
|
|
### Step 6: Optimize Your Code!
|
|
|
|
```bash
|
|
cd your-python-project
|
|
codeflash --file path/to/file.py --function function_name --no-pr
|
|
```
|
|
|
|
## Configuration Options
|
|
|
|
### Minimal Configuration (Recommended)
|
|
|
|
Only provide your AI provider key:
|
|
|
|
```bash
|
|
docker run -d --name codeflash \
|
|
-e OPENAI_API_TYPE=azure \
|
|
-e OPENAI_API_BASE=your-azure-openai-base-url \
|
|
-e AZURE_OPENAI_API_KEY=your-key \
|
|
-p 5432:5432 -p 8000:8000 -p 3001:3001 -p 3000:3000 \
|
|
-v codeflash-data:/var/lib/postgresql/data \
|
|
codeflash/unified:latest
|
|
```
|
|
|
|
### Full Configuration (Optional)
|
|
|
|
You can customize all settings if needed:
|
|
|
|
```bash
|
|
docker run -d --name codeflash \
|
|
-e OPENAI_API_TYPE=azure \
|
|
-e OPENAI_API_BASE=your-azure-openai-base-url \
|
|
-e AZURE_OPENAI_API_KEY=your-azure-key \
|
|
-e ANTHROPIC_API_KEY=your-anthropic-key \
|
|
-e SECRET_KEY=your-custom-secret \
|
|
-e DATABASE_URL=postgresql://user:pass@host:5432/db \
|
|
-e NEXT_PUBLIC_APP_URL=http://your-domain:3000 \
|
|
-e WEBAPP_URL=http://your-domain:3000 \
|
|
-e CODEFLASH_CFAPI_URL=http://your-domain:3001 \
|
|
-p 5432:5432 -p 8000:8000 -p 3001:3001 -p 3000:3000 \
|
|
-v codeflash-data:/var/lib/postgresql/data \
|
|
codeflash/unified:latest
|
|
```
|
|
|
|
See `.env.onprem.minimal` for all available options.
|
|
|
|
## Container Management
|
|
|
|
### Check Status
|
|
|
|
```bash
|
|
# Check if container is running
|
|
docker ps | grep codeflash
|
|
|
|
# View logs
|
|
docker logs codeflash
|
|
|
|
# Follow logs in real-time
|
|
docker logs -f codeflash
|
|
|
|
# Check service status inside container
|
|
docker exec codeflash supervisorctl status
|
|
```
|
|
|
|
Expected output:
|
|
```
|
|
postgres RUNNING pid 40, uptime 0:10:23
|
|
aiservice RUNNING pid 41, uptime 0:10:23
|
|
cf-api RUNNING pid 42, uptime 0:10:23
|
|
cf-webapp RUNNING pid 43, uptime 0:10:23
|
|
```
|
|
|
|
### Stop/Start/Restart
|
|
|
|
```bash
|
|
# Stop container (data persists in volume)
|
|
docker stop codeflash
|
|
|
|
# Start container
|
|
docker start codeflash
|
|
|
|
# Restart container
|
|
docker restart codeflash
|
|
```
|
|
|
|
### Remove Container
|
|
|
|
```bash
|
|
# Remove container (keeps data volume)
|
|
docker stop codeflash
|
|
docker rm codeflash
|
|
|
|
# Remove container AND data (⚠️ deletes all data!)
|
|
docker stop codeflash
|
|
docker rm codeflash
|
|
docker volume rm codeflash-data
|
|
```
|
|
|
|
### Upgrade to New Version
|
|
|
|
```bash
|
|
# Pull or build new image
|
|
docker pull codeflash/unified:latest
|
|
# OR
|
|
docker build -f deployment/onprem-simple/Dockerfile.unifiedall -t codeflash/unified:latest .
|
|
|
|
# Stop and remove old container
|
|
docker stop codeflash
|
|
docker rm codeflash
|
|
|
|
# Start new container (data persists in volume)
|
|
docker run -d --name codeflash \
|
|
-e AZURE_OPENAI_API_KEY=your-key \
|
|
-p 5432:5432 -p 8000:8000 -p 3001:3001 -p 3000:3000 \
|
|
-v codeflash-data:/var/lib/postgresql/data \
|
|
codeflash/unified:latest
|
|
```
|
|
|
|
## Accessing Services
|
|
|
|
Once running, you can access:
|
|
|
|
- **cf-api**: http://localhost:3001
|
|
- **aiservice**: http://localhost:8000
|
|
- **cf-webapp**: http://localhost:3000
|
|
- **PostgreSQL**: localhost:5432 (username: `codeflash`, password: `codeflash`, database: `codeflash`)
|
|
|
|
## Troubleshooting
|
|
|
|
### Container won't start
|
|
|
|
```bash
|
|
# Check logs for errors
|
|
docker logs codeflash
|
|
|
|
# Verify ports are available
|
|
lsof -i :5432
|
|
lsof -i :8000
|
|
lsof -i :3001
|
|
lsof -i :3000
|
|
```
|
|
|
|
### Services not responding
|
|
|
|
```bash
|
|
# Check service status
|
|
docker exec codeflash supervisorctl status
|
|
|
|
# Restart a specific service
|
|
docker exec codeflash supervisorctl restart cf-api
|
|
docker exec codeflash supervisorctl restart aiservice
|
|
docker exec codeflash supervisorctl restart cf-webapp
|
|
```
|
|
|
|
### CLI can't connect
|
|
|
|
```bash
|
|
# Test service endpoints
|
|
curl http://localhost:3001/cfapi/healthcheck
|
|
curl http://localhost:8000/health
|
|
|
|
# Verify environment variables
|
|
echo $CODEFLASH_API_KEY
|
|
echo $CODEFLASH_AIS_SERVER
|
|
echo $CODEFLASH_CFAPI_SERVER
|
|
```
|
|
|
|
### Database issues
|
|
|
|
```bash
|
|
# Check if PostgreSQL is ready
|
|
docker exec codeflash pg_isready -h localhost -p 5432 -U codeflash
|
|
|
|
# Access database
|
|
docker exec -it codeflash psql postgresql://codeflash:codeflash@localhost:5432/codeflash
|
|
|
|
# Check API keys in database
|
|
docker exec codeflash psql postgresql://codeflash:codeflash@localhost:5432/codeflash \
|
|
-c "SELECT key, suffix FROM cf_api_keys;"
|
|
```
|
|
|
|
## FAQ
|
|
|
|
**Q: Do I need GitHub App configuration?**
|
|
A: No, not if you use `--no-pr` mode. GitHub integration is optional.
|
|
|
|
**Q: Do I need Stripe configuration?**
|
|
A: No, billing features are not required for on-premise deployments.
|
|
|
|
**Q: What AI providers are supported?**
|
|
A: Azure OpenAI, OpenAI, and Anthropic Claude. You only need one.
|
|
|
|
**Q: Can I use my own PostgreSQL database?**
|
|
A: Yes, set the `DATABASE_URL` environment variable.
|
|
|
|
**Q: What ports need to be accessible?**
|
|
A: For CLI usage, only ports 3001 (cf-api) and 8000 (aiservice) are required. Port 3000 (webapp) is for the web interface, and 5432 (PostgreSQL) is only if you want direct database access.
|
|
|
|
**Q: How much disk space is needed?**
|
|
A: ~5GB for the image, plus storage for your data (depends on usage).
|
|
|
|
**Q: How much memory is needed?**
|
|
A: Minimum 2GB RAM, recommended 4GB+ for optimal performance.
|
|
|
|
## Performance Notes
|
|
|
|
- **Container size:** ~5GB (includes all services and dependencies)
|
|
- **Startup time:** ~15-20 seconds for all services
|
|
- **Memory usage:** ~500MB-2GB (depending on workload)
|
|
- **CPU:** Works on both x86_64 and ARM64 (Apple Silicon)
|
|
|
|
## File Structure
|
|
|
|
```
|
|
deployment/onprem-simple/
|
|
├── Dockerfile.unifiedall # Main unified Docker image
|
|
├── supervisord.conf # Process manager configuration
|
|
├── startup.sh # Container startup script
|
|
├── init-db.sh # Database initialization script
|
|
├── .env.onprem.minimal # Minimal environment variables template
|
|
├── .dockerignore # Docker build exclusions
|
|
├── README.md # This file
|
|
├── TESTING.md # Testing guide
|
|
└── archive/ # Old/experimental files
|
|
├── old-dockerfiles/ # Previous Dockerfile attempts
|
|
├── old-compose/ # Old docker-compose files
|
|
└── old-scripts/ # Previous build scripts
|
|
```
|
|
|
|
## Next Steps
|
|
|
|
- ✅ Container built and running
|
|
- ✅ Database initialized
|
|
- ✅ API key generated
|
|
- ✅ CLI configured
|
|
- 🚀 **Ready to optimize code!**
|
|
|
|
See `TESTING.md` for a complete testing guide with example workflows.
|
|
|
|
## Support
|
|
|
|
For issues or questions:
|
|
- GitHub Issues: https://github.com/codeflash-ai/codeflash/issues
|
|
- Documentation: https://docs.codeflash.ai |