packages/examples/vercel/README.md
Deploy AI chat agents as serverless Vercel Edge Functions. These examples show how to run an elizaOS agent as a stateless worker that processes chat messages via HTTP.
All handlers use the full elizaOS runtime with OpenAI as the LLM provider, providing the same capabilities as the AWS Lambda examples.
┌──────────────┐ ┌─────────────────┐ ┌────────────────┐
│ Test Client │────▶│ Vercel Edge │────▶│ Edge Function │
│ (curl/bun) │◀────│ Network │◀────│ (elizaOS) │
└──────────────┘ └─────────────────┘ └────────────────┘
│
▼
┌────────────────┐
│ OpenAI API │
└────────────────┘
npm i -g vercel)Create a .env file in the project root (/home/shaw/eliza/.env):
OPENAI_API_KEY=your-openai-api-key
Or export directly:
export OPENAI_API_KEY="your-openai-api-key"
Before deploying, test locally to verify everything works.
cd examples/vercel
bun install
vercel dev
The development server runs at http://localhost:3000.
# Test the local dev server
bun run test
# Health check
curl http://localhost:3000/api/health
# Chat
curl -X POST http://localhost:3000/api/chat \
-H "Content-Type: application/json" \
-d '{"message": "Hello, Eliza!"}'
# Link to your Vercel account
vercel link
# Set your OpenAI API key as an environment variable
vercel env add OPENAI_API_KEY
# When prompted, enter your API key
# Preview deployment
vercel deploy
# Production deployment
vercel deploy --prod
After deployment, Vercel outputs your deployment URL. Test it:
# Using curl
curl -X POST https://your-app.vercel.app/api/chat \
-H "Content-Type: application/json" \
-d '{"message": "Hello, Eliza!"}'
# Using the test client
bun run test-client.ts --endpoint https://your-app.vercel.app
examples/vercel/
├── README.md
├── vercel.json
├── package.json
├── tsconfig.json
├── test-client.ts
└── api/
├── health.ts
└── chat.ts
Send a message to the elizaOS agent.
Request:
{
"message": "Hello, how are you?",
"userId": "optional-user-id",
"conversationId": "optional-conversation-id"
}
Response:
{
"response": "I'm doing well, thank you for asking!",
"conversationId": "uuid-for-conversation-tracking",
"timestamp": "2025-01-10T12:00:00.000Z"
}
Health check endpoint.
Response:
{
"status": "healthy",
"runtime": "elizaos-typescript",
"version": "2.0.0-beta.0"
}
Handlers live under api/ as Vercel Edge routes. Local workflow:
cd examples/vercel
bun install
vercel dev
| Variable | Required | Default | Description |
|---|---|---|---|
OPENAI_API_KEY | Yes | - | Your OpenAI API key |
OPENAI_SMALL_MODEL | No | gpt-5-mini | Small model to use |
OPENAI_LARGE_MODEL | No | gpt-5 | Large model to use |
CHARACTER_NAME | No | Eliza | Agent's name |
CHARACTER_BIO | No | A helpful AI assistant. | Agent's bio |
CHARACTER_SYSTEM | No | (default) | System prompt |
Customize the agent's personality by setting environment variables in the Vercel dashboard or CLI:
vercel env add CHARACTER_NAME
# Enter: MyBot
vercel env add CHARACTER_SYSTEM
# Enter: You are a friendly assistant that loves to help.
| Feature | Vercel Edge | AWS Lambda |
|---|---|---|
| Cold start | ~50ms | 2-5s |
| Global distribution | Automatic | Via CloudFront |
| Pricing | Per invocation | Per invocation + duration |
| Max execution time | 30s (Edge) | 15 min |
| Memory | 128MB (Edge) | Up to 10GB |
| Languages | JS/TS, WASM | Many |
View logs, metrics, and analytics in the Vercel dashboard:
# View production logs
vercel logs --output raw
# Follow logs in real-time
vercel logs -f
Vercel pricing (as of 2025):
Hobby (Free):
Pro ($20/month):
Example (10K requests/month, avg 2s response):
Ensure dependencies are installed:
bun install
Verify the environment variable is set in Vercel:
vercel env ls
If missing, add it:
vercel env add OPENAI_API_KEY
Redeploy:
vercel deploy --prod
Edge Functions have a 30-second limit. For longer operations:
CORS headers are included by default. If you need custom origins:
const headers = {
"Access-Control-Allow-Origin": "https://your-domain.com",
// ... other headers
};
Remove your Vercel deployment:
# Remove from Vercel
vercel remove your-project-name
# Or delete via dashboard at vercel.com