myprod-control is the hosted dashboard for this repo.
Production URL:
https://control.sankalpjha.devVercel fallback URL: https://myprod-control.vercel.app.
GitHub repo:
https://github.com/blackdragoon26/MyprodAgent provisioning documentation:
https://github.com/blackdragoon26/Myprod/blob/main/docs/agent-runbook.mdProject owner:
https://sankalpjha.dev/The desired production flow is:
git push origin main -> GitHub -> Vercel production deployUse Vercel Git Integration as the production deployment path. The old GitHub
Actions fallback was removed because a missing VERCEL_TOKEN secret made every
push show a failed deployment even when Vercel had already deployed from Git.
Use this when the Vercel dashboard can access the GitHub account:
- Open the Vercel project
myprod-control. - Go to
Settings -> Git. - Connect
blackdragoon26/Myprod. - Set production branch to
main. - Keep framework preset as
Other. - Leave build command empty.
- Leave output directory empty.
- Confirm that pushes to
maincreate production deployments.
The dashboard is a static public/index.html, static assets under
public/assets/, the public Clerk bootstrap endpoint at api/auth-config.js,
and the serverless smoke endpoint at api/smoke.js. Busy
buttons use public/assets/waiting-cat.png; include that asset when checking a
deployment rather than validating only the HTML response.
The Clerk Marketplace integration supplies NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY
and CLERK_SECRET_KEY to Vercel Production. Only the publishable key is exposed
by /api/auth-config; the static dashboard and Oracle agent never receive the
secret key. See operator-authentication.md for the
split rollout and recovery procedure.
The static dashboard and Oracle agent are deployed separately. A Git push updates Vercel, but it does not replace /usr/local/bin/poolctl on Oracle.
The dashboard must remain compatible during that split rollout. New agent-only
controls are gated by capabilities returned from the authenticated status
response. When an older agent omits managedAppLifecycleV2, the dashboard keeps
the original registration and deploy flow, omits new request fields, and hides
edit, delete, generic image-update, and environment controls. This makes either
deployment order safe and does not resubmit or restart existing Nomad jobs.
The CI tokens control is independently gated by appDeployTokensV1; it is
hidden until the agent can mint, hash-store, list, and revoke scoped
credentials. Neither capability causes a Nomad job submission during rollout.
Clerk sessions are independently advertised by clerkOperatorAuthV1. The
dashboard retains recovery-token access whether that capability is absent or
present, so either deployment order remains safe.
For an agent change:
- Run
go test ./.... - Build a static Linux ARM64 binary for Oracle.
- Copy it to
/tmpover SSH. - Back up the current binary, atomically install the new binary, and restart only
poolctl-agent. - Verify the agent health route, authenticated status, Nomad state, and public smoke checks.
Never place POOLCTL_AGENT_TOKEN in a build command, repository file, shell history, or deployment log.
Managed DNS additionally reads NETLIFY_AUTH_TOKEN, MYPROD_DNS_ZONE, and
MYPROD_INGRESS_IPV4 from Oracle's root-readable agent environment. These are
runtime configuration and must never be supplied to Vercel or committed. Follow
netlify-dns.md for the one-time installation and verification.
Manual deploys are useful for quick iteration, but they are not the long-term source of truth. Production should be Git-driven so the deployed dashboard always matches main.