When a deploy fails or your live app misbehaves, work through this page. It’s written for you and your coding AI. If your AI is doing the deploying, give it this page’s URL and it can diagnose most problems on its own.
Every deploy is a build that moves through these states:
If something goes wrong, the state becomes error and a message explains what happened. Watch the state under Deployments on the project page. If your AI is connected through MCP or the API, it can poll the build with get_build.
ready or error, then start the new one. Nothing is queued automatically, so retry after it finishes.package.json, which JustDeploy uses to detect the runtime, or a zip that includes node_modules/ or build output. Include package.json and the lock file, but exclude node_modules/, .next/, and .git/.GET / without requiring sign-in or a database, listen on the platform port PORT=8080, and not bind to localhost or 127.0.0.1. If the health check fails or the process crashes, JustDeploy automatically restores the previous version. Scheduler projects are not health-checked. See Scheduler issues below.Ready and still fail to serve a working page because the health check accepts any response. In that case, the deployment shows an amber Deployed, but it may not be working yet note with what the check found, such as every path returning 404. This usually means no route is registered or the app rejects its current host. The note also reports build-time problems, such as an incomplete, deleted, expired, or wrong-project JustDeploy key. The deployment itself may succeed while the app cannot reach its database or files. Your AI receives the same information in the build’s warning field.get_logs MCP tool or the Logs API. Log lines with the same instance value came from the same running container, which is useful for tracing one crash.[JUSTDEPLOY_FIREWALL]. Rule changes take 1–2 minutes to apply. Deleting every rule blocks all traffic (add a rule for 0.0.0.0/0 to allow everyone).Cache-Control: private. Ask your AI to check what the app sends on those pages. JustDeploy also guards the worst case on its own: a response that sets a cookie is marked private automatically, so a login response is never shared. Apps deployed before this guard pick it up on their next build.A Scheduler project that “doesn’t run” is usually paused, so check that its schedule is Active on the project page. Use Run now to trigger a run immediately and confirm the code works; runs are asynchronous, so the result shows up in Logs, not in the response.
Unlike Web and API projects, a Scheduler deploy is not health-checked and is never rolled back automatically, because there is no inbound request to test and invoking your code to check it would run the job for real. That means a broken update stays live until you replace it. After deploying a Scheduler project, press Run now and read Logs to confirm the new version works.
A Scheduler deployment can still show a warning even though it is not health-checked. During the build, JustDeploy reads the code and flags problems that would break the job, such as an invalid JustDeploy key or an attempt to write outside /tmp. A running app can write only inside that directory. After each deployment, check the amber note under Deployments. Your AI receives the same note in the build’s warning field.
Ask your AI to run list_organizations to check the connection. If it returns your organizations, the connection works. If the sign-in page keeps reopening or the client does not list the tools, see MCP for tool-specific remote MCP setup and why “Authorization successful” does not always mean the client is connected.
A domain can stay pending because its DNS records do not match what JustDeploy shows, or because the organization no longer has a paid plan. Check the message on the Custom Domain card first. If it asks for a paid plan, an owner or admin needs to choose one. Otherwise, re-copy the DNS names and values exactly. DNS changes can take up to 24–48 hours to propagate depending on the provider. Domains are managed in the console only; your AI can’t connect one for you.