Loading...
Loading...
Deploy Exa integrations to Vercel, Fly.io, and Cloud Run platforms. Use when deploying Exa-powered applications to production, configuring platform-specific secrets, or setting up deployment pipelines. Trigger with phrases like "deploy exa", "exa Vercel", "exa production deploy", "exa Cloud Run", "exa Fly.io".
npx skill4agent add jeremylongshore/claude-code-plugins-plus-skills exa-deploy-integration# Add Exa secrets to Vercel
vercel secrets add exa_api_key sk_live_***
vercel secrets add exa_webhook_secret whsec_***
# Link to project
vercel link
# Deploy preview
vercel
# Deploy production
vercel --prod{
"env": {
"EXA_API_KEY": "@exa_api_key"
},
"functions": {
"api/**/*.ts": {
"maxDuration": 30
}
}
}app = "my-exa-app"
primary_region = "iad"
[env]
NODE_ENV = "production"
[http_service]
internal_port = 3000
force_https = true
auto_stop_machines = true
auto_start_machines = true# Set Exa secrets
fly secrets set EXA_API_KEY=sk_live_***
fly secrets set EXA_WEBHOOK_SECRET=whsec_***
# Deploy
fly deployFROM node:20-slim
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
CMD ["npm", "start"]#!/bin/bash
# deploy-cloud-run.sh
PROJECT_ID="${GOOGLE_CLOUD_PROJECT}"
SERVICE_NAME="exa-service"
REGION="us-central1"
# Build and push image
gcloud builds submit --tag gcr.io/$PROJECT_ID/$SERVICE_NAME
# Deploy to Cloud Run
gcloud run deploy $SERVICE_NAME \
--image gcr.io/$PROJECT_ID/$SERVICE_NAME \
--region $REGION \
--platform managed \
--allow-unauthenticated \
--set-secrets=EXA_API_KEY=exa-api-key:latest// config/exa.ts
interface ExaConfig {
apiKey: string;
environment: 'development' | 'staging' | 'production';
webhookSecret?: string;
}
export function getExaConfig(): ExaConfig {
const env = process.env.NODE_ENV || 'development';
return {
apiKey: process.env.EXA_API_KEY!,
environment: env as ExaConfig['environment'],
webhookSecret: process.env.EXA_WEBHOOK_SECRET,
};
}// api/health.ts
export async function GET() {
const exaStatus = await checkExaConnection();
return Response.json({
status: exaStatus ? 'healthy' : 'degraded',
services: {
exa: exaStatus,
},
timestamp: new Date().toISOString(),
});
}| Issue | Cause | Solution |
|---|---|---|
| Secret not found | Missing configuration | Add secret via platform CLI |
| Deploy timeout | Large build | Increase build timeout |
| Health check fails | Wrong API key | Verify environment variable |
| Cold start issues | No warm-up | Configure minimum instances |
#!/bin/bash
# Platform-agnostic deploy helper
case "$1" in
vercel)
vercel secrets add exa_api_key "$EXA_API_KEY"
vercel --prod
;;
fly)
fly secrets set EXA_API_KEY="$EXA_API_KEY"
fly deploy
;;
esacexa-webhooks-events