npx skills add ...
npx skills add vercel-labs/open-agents --skill deploy-open-harness
npx skills add vercel-labs/open-agents --skill deploy-open-harness
Guides a user through collecting the credentials needed to deploy their own copy of Open Harness, deploying this repo on Vercel, and completing first-run setup. Use for requests about deploying, self-hosting, configuring credentials, or getting started with a fork of this app.
You are helping a user deploy their own copy of Open Harness.
Base your guidance on the current codebase, not on older Harness-era setup assumptions.
Before giving deployment advice, read these files if you have not already:
README.mdapps/web/.env.exampleapps/web/lib/db/client.tsapps/web/lib/jwe/encrypt.tsapps/web/lib/crypto.tsapps/web/app/api/auth/signin/vercel/route.tsapps/web/app/api/auth/vercel/callback/route.tsapps/web/app/api/github/app/install/route.tsapps/web/app/api/github/app/callback/route.tsapps/web/lib/github/app-auth.tsapps/web/lib/redis.tsapps/web/lib/sandbox/config.tsIf the code and the docs disagree, trust the code and say so.
Do not rely on scripts/setup.sh.
Help the user:
Start by determining which path the user wants:
A working hosted app where the user can deploy it, sign in with Vercel, and use the product without GitHub repo access.
Everything in the minimal deploy, plus GitHub account linking, GitHub App installation, private repo access, pushes, and PR creation.
If the user is unsure, recommend minimal deploy first, then layer on GitHub.
Use this checklist when guiding the user.
POSTGRES_URLJWE_SECRETENCRYPTION_KEYNEXT_PUBLIC_VERCEL_APP_CLIENT_IDVERCEL_APP_CLIENT_SECRETNEXT_PUBLIC_GITHUB_CLIENT_IDGITHUB_CLIENT_SECRETGITHUB_APP_IDGITHUB_APP_PRIVATE_KEYNEXT_PUBLIC_GITHUB_APP_SLUGGITHUB_WEBHOOK_SECRETREDIS_URL or KV_URLVERCEL_PROJECT_PRODUCTION_URLNEXT_PUBLIC_VERCEL_PROJECT_PRODUCTION_URLVERCEL_SANDBOX_BASE_SNAPSHOT_IDELEVENLABS_API_KEYTell the user to create a Postgres database and copy the connection string into POSTGRES_URL.
Explain that this is required for session encryption.
Recommended generation command:
Explain that provider tokens are encrypted at rest and the value must be a 64-character hex string.
Recommended generation command:
Tell the user to create a Vercel OAuth app and set:
https://YOUR_DOMAIN/api/auth/vercel/callbackhttp://localhost:3000/api/auth/vercel/callbackStore the credentials as:
NEXT_PUBLIC_VERCEL_APP_CLIENT_IDVERCEL_APP_CLIENT_SECRETTell the user they do not need a separate GitHub OAuth app. Open Harness uses the GitHub App's user authorization flow.
Tell the user to create a GitHub App and set:
https://YOUR_DOMAINhttps://YOUR_DOMAIN/api/github/app/callbackhttps://YOUR_DOMAIN/api/github/app/callbackhttp://localhost:3000, callback/setup http://localhost:3000/api/github/app/callbackAlso tell them to:
NEXT_PUBLIC_GITHUB_CLIENT_ID and GITHUB_CLIENT_SECRETStore the values as:
NEXT_PUBLIC_GITHUB_CLIENT_IDGITHUB_CLIENT_SECRETGITHUB_APP_IDGITHUB_APP_PRIVATE_KEYNEXT_PUBLIC_GITHUB_APP_SLUGGITHUB_WEBHOOK_SECRETMention that GITHUB_APP_PRIVATE_KEY can be stored either as PEM contents with escaped newlines or as a base64-encoded PEM.
Explain that Redis is optional. It improves resumable streams, stop signaling, and caching, but it is not required for the first deploy.
Guide the user through this sequence:
POSTGRES_URLJWE_SECRETENCRYPTION_KEYNEXT_PUBLIC_VERCEL_APP_CLIENT_ID and VERCEL_APP_CLIENT_SECRET.If the user already has a custom domain ready, it is fine to use that domain from the start instead of the default vercel.app production URL.
For a minimal deploy, walk the user through:
For the full deploy, also verify:
If something fails, identify the missing credential or callback mismatch instead of giving generic advice.
When helping a user, prefer this structure:
Be concise. Keep the user moving toward the next unblocker.