Skip to content
Back to skills

Exa Deploy Integration

ASecurity

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".

  • 1,689 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 1, 2026
developmenttypescriptgobashnodedockerapidocumentation

Works with

  • cli
  • api

Security analysis

A100/100

Scanned September 1, 2026

npx -y skills add Dicklesworthstone/pi_agent_rust --skill exa-deploy-integration --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Exa Deploy Integration?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Exa Deploy Integration
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/dicklesworthstone-exa-deploy-integration/badge)](https://www.skillsdirectory.com/skills/dicklesworthstone-exa-deploy-integration)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: exa-deploy-integration
description: |
  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".
allowed-tools: Read, Write, Edit, Bash(vercel:*), Bash(fly:*), Bash(gcloud:*)
version: 1.0.0
license: MIT
author: Jeremy Longshore <jeremy@intentsolutions.io>
---

# Exa Deploy Integration

## Overview
Deploy Exa-powered applications to popular platforms with proper secrets management.

## Prerequisites
- Exa API keys for production environment
- Platform CLI installed (vercel, fly, or gcloud)
- Application code ready for deployment
- Environment variables documented

## Vercel Deployment

### Environment Setup
```bash
# 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
```

### vercel.json Configuration
```json
{
  "env": {
    "EXA_API_KEY": "@exa_api_key"
  },
  "functions": {
    "api/**/*.ts": {
      "maxDuration": 30
    }
  }
}
```

## Fly.io Deployment

### fly.toml
```toml
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
```

### Secrets
```bash
# Set Exa secrets
fly secrets set EXA_API_KEY=sk_live_***
fly secrets set EXA_WEBHOOK_SECRET=whsec_***

# Deploy
fly deploy
```

## Google Cloud Run

### Dockerfile
```dockerfile
FROM node:20-slim
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
CMD ["npm", "start"]
```

### Deploy Script
```bash
#!/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
```

## Environment Configuration Pattern

```typescript
// 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,
  };
}
```

## Health Check Endpoint

```typescript
// 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(),
  });
}
```

## Instructions

### Step 1: Choose Deployment Platform
Select the platform that best fits your infrastructure needs and follow the platform-specific guide below.

### Step 2: Configure Secrets
Store Exa API keys securely using the platform's secrets management.

### Step 3: Deploy Application
Use the platform CLI to deploy your application with Exa integration.

### Step 4: Verify Health
Test the health check endpoint to confirm Exa connectivity.

## Output
- Application deployed to production
- Exa secrets securely configured
- Health check endpoint functional
- Environment-specific configuration in place

## Error Handling
| 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 |

## Examples

### Quick Deploy Script
```bash
#!/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
    ;;
esac
```

## Resources
- [Vercel Documentation](https://vercel.com/docs)
- [Fly.io Documentation](https://fly.io/docs)
- [Cloud Run Documentation](https://cloud.google.com/run/docs)
- [Exa Deploy Guide](https://docs.exa.com/deploy)

## Next Steps
For webhook handling, see `exa-webhooks-events`.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…