Vercel Deploy
Overview
Deploy to production quickly and leave the site in a shareable state: linked project, public access, memorable alias, and verified live URL.
Quick Workflow
- Check Vercel CLI and auth first with
which vercel,vercel whoami, andvercel teams ls. - If the repo is not linked, prefer creating or linking the project with the intended alias name first.
- Deploy production with
vercel --prod --yes. - Disable SSO protection after first deploy of a new project so the site is actually public.
- Set or confirm a short memorable alias.
- Verify the final URL with
curl -Iand report the public links back to the user.
Linking
- Prefer your default team scope unless the repo is already linked to a different one, or the user asks for another team.
- If
.vercel/project.jsonis missing and the user wants a specific hostname, create the project with that name first:
vercel project add <project-name> --scope <your-vercel-team>
vercel link --yes --project <project-name> --scope <your-vercel-team>
- If the repo is already linked, do not relink unless there is a concrete reason.
Deploy
- Use the fastest production path:
vercel --prod --yes --scope <your-vercel-team>
- Capture both the deployment URL and the final promoted production URL.
- For simple static HTML/CSS/JS projects, assume no build customization is needed unless the repo says otherwise.
Public Access
- Vercel team SSO can block public sharing on new projects. Run this idempotent patch after the project is linked:
TOKEN=$(python3 -c "import json; print(json.load(open('$HOME/Library/Application Support/com.vercel.cli/auth.json'))['token'])") && \
PROJECT_ID=$(python3 -c "import json; print(json.load(open('.vercel/project.json'))['projectId'])") && \
TEAM_ID=$(python3 -c "import json; print(json.load(open('.vercel/project.json'))['orgId'])") && \
curl -s -X PATCH "https://api.vercel.com/v9/projects/$PROJECT_ID?teamId=$TEAM_ID" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"ssoProtection":null}'
- Confirm the project still responds with
HTTP 200after the patch.
Alias Strategy
- If the user gives a target alias, try that exact
*.vercel.appname first. - Prefer short memorable names that match the project name, because Vercel often auto-promotes
<project-name>.vercel.appon production. - If the alias is taken, try 2-3 close fallbacks instead of stopping immediately.
- Manual alias command:
vercel alias set <deployment-url> <alias>.vercel.app
Verification
- Verify the main URL with
curl -I. - Verify any important secondary routes the user cares about.
- If the deployment is static-only, say so explicitly.
- If the app depends on local files, local servers, or writable disk state, call out that those behaviors will not persist on Vercel without an external backend.
Output
Report back with:
- Final public URL
- Any important secondary URL
- Whether SSO protection was disabled
- Whether the alias was claimed or a fallback was needed
- Any deployment caveat that affects real use