Deploy: GCP
Deploy agents to Google Cloud Run using praisonai deploy
Deploy agents to Google Cloud Run using praisonai deploy run --type cloud --provider gcp.
Quick Start – CLI
- Install PraisonAI
bash pip install praisonai - Set Environment Variables
bash export OPENAI_API_KEY="your-key" export GOOGLE_APPLICATION_CREDENTIALS="/path/to/service-account.json" - Initialize GCP Config
bash praisonai deploy init --file agents.yaml --type cloud --provider gcp - Check Readiness
bash praisonai deploy doctor --provider gcp - Deploy to GCP
bash praisonai deploy run --file agents.yaml --type cloud --provider gcpExpected Output:
🚀 Starting deployment... ☁️ Deploying to Google Cloud Run • Project: your-project-id • Region: us-central1 • Service: praisonai-service 📦 Building and pushing Docker image... 🚀 Deploying to Cloud Run... ✅ Deployment successful! 🔗 URL: https://praisonai-service-abc123-uc.a.run.app Metadata: • provider: gcp • project_id: your-project-id • region: us-central1 • service: praisonai-service - Verify
bash curl https://praisonai-service-abc123-uc.a.run.app/health
Quick Start – SDK
- Create Deploy Script
python from praisonai.deploy import Deploy, DeployConfig, DeployType, CloudProvider from praisonai.deploy.models import CloudConfig config = DeployConfig( type=DeployType.CLOUD, cloud=CloudConfig( provider=CloudProvider.GCP, region="us-central1", service_name="praisonai-service", project_id="your-project-id", cpu="1", memory="512", min_instances=0, max_instances=10 ) ) deploy = Deploy(config, "agents.yaml") result = deploy.deploy() print(f"URL: {result.url}") - Run
bash python deploy_gcp.py
agents.yaml with GCP Config
framework: praisonai
topic: helpful assistant
roles:
assistant:
role: Assistant
goal: Help users with their questions
backstory: You are a helpful assistant
tasks:
help_task:
description: Answer user questions
expected_output: Helpful response
deploy:
type: cloud
cloud:
provider: gcp
region: "us-central1"
service_name: "praisonai-service"
project_id: "${GOOGLE_CLOUD_PROJECT}"
cpu: "1"
memory: "512"
min_instances: 0
max_instances: 10
env_vars:
OPENAI_API_KEY: "${OPENAI_API_KEY}"GCP Cloud Config Options
| Field | Type | Default | Description |
|---|---|---|---|
provider | string | – | Must be gcp |
region | string | – | GCP region (e.g., us-central1) |
service_name | string | – | Cloud Run service name |
project_id | string | – | GCP project ID |
cpu | string | 1 | CPU allocation |
memory | string | 512 | Memory in MB |
min_instances | int | 0 | Minimum instances (0 = scale to zero) |
max_instances | int | 10 | Maximum instances |
env_vars | dict | null | Environment variables |
Check Deployment Status
praisonai deploy status --file agents.yamlDestroy Deployment
praisonai deploy destroy --file agents.yaml --yesTroubleshooting
| Issue | Fix |
|---|---|
| GCP credentials | gcloud auth login or set GOOGLE_APPLICATION_CREDENTIALS |
| Project not set | Add project_id to agents.yaml |
| Permission denied | Check IAM permissions for Cloud Run |
| Deploy failed | Run praisonai deploy doctor --provider gcp |
Manual GCP CLI Deployment (Optional)
These commands are for manual deployment only. Use praisonai deploy for automated deployment.
# Initialize and enable services
gcloud init
gcloud services enable run.googleapis.com
gcloud services enable containerregistry.googleapis.com
gcloud services enable cloudbuild.googleapis.com
# Set environment variables
export OPENAI_MODEL_NAME="gpt-4o"
export OPENAI_API_KEY="your-api-key"
export OPENAI_API_BASE="https://api.openai.com/v1"
# Configure Docker authentication
yes | gcloud auth configure-docker us-central1-docker.pkg.dev
gcloud artifacts repositories create praisonai-repository --repository-format=docker --location=us-central1
# Build and push Docker image
PROJECT_ID=$(gcloud config get-value project)
TAG="latest"
docker build --platform linux/amd64 -t gcr.io/${PROJECT_ID}/praisonai-app:${TAG} .
docker tag gcr.io/${PROJECT_ID}/praisonai-app:${TAG} us-central1-docker.pkg.dev/${PROJECT_ID}/praisonai-repository/praisonai-app:${TAG}
docker push us-central1-docker.pkg.dev/${PROJECT_ID}/praisonai-repository/praisonai-app:${TAG}
# Create secure env vars file (NEVER use --set-env-vars for secrets)
cat > /tmp/praisonai-env.yaml <<EOF
OPENAI_MODEL_NAME: "${OPENAI_MODEL_NAME}"
OPENAI_API_KEY: "${OPENAI_API_KEY}"
OPENAI_API_BASE: "${OPENAI_API_BASE}"
EOF
chmod 600 /tmp/praisonai-env.yaml
# Deploy to Cloud Run with secure env vars file
gcloud run deploy praisonai-service \
--image us-central1-docker.pkg.dev/${PROJECT_ID}/praisonai-repository/praisonai-app:${TAG} \
--platform managed \
--region us-central1 \
--allow-unauthenticated \
--env-vars-file /tmp/praisonai-env.yaml
# Clean up temp file
rm /tmp/praisonai-env.yamlSecurity: How praisonai deploy Handles Secrets
The praisonai deploy run command automatically handles secrets securely:
- Creates temp YAML via
tempfile.mkstemp()with mode0600(owner read/write only) - Passes secrets via
--env-vars-fileinstead of command line arguments - Removes temp file in
finallyblock, even if deployment fails - No secrets appear in
ps, shell history, or CI logs
Validation Commands:
# Verify GCP CLI
gcloud config get-value project
# List Cloud Run services
gcloud run services list
# Describe service
gcloud run services describe praisonai-service --region us-central1
# View logs
gcloud run services logs read praisonai-service --region us-central1Related
- Deploy CLI Overview – All deploy commands
- API Deploy – Deploy as local API server
- Docker Deploy – Deploy to Docker
- AWS Deploy – Deploy to AWS ECS/Fargate