Labsco
openai logo

vercel-services

✓ Official4,081

by openai · part of openai/plugins

Vercel Services — deploy multiple services within a single Vercel project. Use for monorepo layouts or when combining a backend (Python, Go) with a frontend (Next.js, Vite) in one deployment.

🧩 One of 7 skills in the openai/plugins package — works on its own, and pairs well with its siblings.

This is the playbook your agent receives when the skill activates — you don't need to read it to use the skill, but it's here to audit before installing.

Deploy multi-service projects with Vercel

Services let you deploy multiple independently-built units within a single Vercel project. The typical use case is combining different runtimes (e.g. Python + JavaScript) in one deployment with shared routing and environment variables, but services work for any combination — multiple services of the same runtime, different frameworks, or a mix.

This skill covers project structure and configuration. For the actual deployment, defer to the deployments-cicd skill.

How It Works

A service is an independently built unit within your project, deployed to the same domain under a unique subpath. At build time, Vercel builds each service separately. At request time, Vercel routes incoming requests to the correct service based on the URL path prefix (longest prefix wins).

  • Services are enabled via the experimentalServices field in vercel.json (see reference project).
  • vercel dev -L auto-detects frameworks and runs all services locally as one application, handling routing automatically. The -L flag (short for --local) runs without authenticating with Vercel Cloud.
  • Only vercel.json lives at the root. Each service manages its own dependencies independently.

Supported runtimes and frameworks

Services is in beta. Python and Go are tested and production-ready. Other runtimes may work but are not yet validated.

Python

Works with FastAPI, Flask, Django, or any ASGI/WSGI application. Framework is auto-detected. Set entrypoint to the application file (e.g. "backend/main.py"). Dependencies go in pyproject.toml in the service directory.

Go

Set entrypoint to the service directory (e.g. "backend"), not a file. Must set "framework": "go" explicitly in vercel.json — auto-detection does not work for Go services. Dependencies in go.mod in the service directory.

Other runtimes (untested)

Vercel supports Node.js, Bun, Rust, Ruby, Wasm, and Edge runtimes for functions. These can theoretically be used as services but are not yet validated.

Routing

Vercel evaluates route prefixes from longest to shortest (most specific first), with the primary service (/) as the catch-all. Vercel automatically mounts services at their routePrefix, so service handlers should not include the prefix in their routes.

For frontend frameworks mounted on a subpath (not /), configure the framework's own base path (e.g. basePath in next.config.js) to match routePrefix.

Environment variables

Vercel auto-generates URL variables so services can find each other:

VariableExample valueAvailabilityUse case
{SERVICENAME}_URLhttps://your-deploy.vercel.app/svc/apiServer-sideServer-to-server requests
NEXT_PUBLIC_{SERVICENAME}_URL/svc/apiClient-sideBrowser requests (relative, no CORS)

SERVICENAME is the key name from experimentalServices, uppercased. If you define an env var with the same name in project settings, your value takes precedence.

Output

After scaffolding, present the created file structure to the user. After deployment, present the deployment URL (refer to the deployments-cicd skill for details).