<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Saif Ali</title>
    <description>The latest articles on DEV Community by Saif Ali (@sali_ac161a1b71406354896c).</description>
    <link>https://dev.to/sali_ac161a1b71406354896c</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3780544%2F353acf11-059d-471c-a779-825d98da6c00.png</url>
      <title>DEV Community: Saif Ali</title>
      <link>https://dev.to/sali_ac161a1b71406354896c</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sali_ac161a1b71406354896c"/>
    <language>en</language>
    <item>
      <title>When your AI agent's deployment fails, it can open the support ticket too</title>
      <dc:creator>Saif Ali</dc:creator>
      <pubDate>Sat, 12 Sep 2026 21:04:34 +0000</pubDate>
      <link>https://dev.to/sali_ac161a1b71406354896c/when-your-ai-agents-deployment-fails-it-can-open-the-support-ticket-too-2o0i</link>
      <guid>https://dev.to/sali_ac161a1b71406354896c/when-your-ai-agents-deployment-fails-it-can-open-the-support-ticket-too-2o0i</guid>
      <description>&lt;h2&gt;
  
  
  When your AI agent's deployment fails, it can open the support ticket too
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Published:&lt;/strong&gt; September 6, 2026&lt;br&gt;
&lt;strong&gt;Category:&lt;/strong&gt; AI · MCP · Operations&lt;br&gt;
&lt;strong&gt;Reading time:&lt;/strong&gt; 9 minutes&lt;br&gt;
&lt;strong&gt;Author:&lt;/strong&gt; NEXUS AI Team&lt;/p&gt;



&lt;p&gt;An agent wrote the code. An agent built the container. An agent ran the deploy. Then the health check went red and the agent stopped, because that is where most agent workflows end: generation succeeds, operations fail silently, and a human finds out later.&lt;/p&gt;

&lt;p&gt;It does not have to end there. The same NEXUS AI MCP connection that let the agent deploy also lets it read the logs, try the reversible fixes, and, when the problem is on the platform side, open a support ticket with the full context already attached.&lt;/p&gt;

&lt;p&gt;This post is the workflow for that last step. When to escalate, what to put in the ticket, and how to keep the agent from filing noise.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why an agent-filed ticket is a better ticket
&lt;/h2&gt;

&lt;p&gt;A human filing a deployment ticket at 2 AM writes three sentences and goes back to bed. "Deploy is failing. Not sure why. Here is the URL." The support engineer then spends the first reply asking for the deployment ID, the build logs, the last thing that changed, and the exact error text.&lt;/p&gt;

&lt;p&gt;The agent already has all of that. It is in the conversation. It knows the deployment ID because it created the deployment. It has the build logs because it just read them. It knows what changed because it made the change. An agent-filed ticket can open with the evidence that a human ticket takes two round trips to collect.&lt;/p&gt;

&lt;p&gt;That is the real argument for handing this to the agent. Not that humans cannot file tickets, but that the agent is holding the context at the exact moment it is worth capturing.&lt;/p&gt;
&lt;h2&gt;
  
  
  Before the agent files anything
&lt;/h2&gt;

&lt;p&gt;Most failed deploys are not support tickets. They are one of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A build error in the generated code. The agent should read the log, fix the code, and redeploy.&lt;/li&gt;
&lt;li&gt;A missing environment variable or secret. The agent should check what the app expects and what is set.&lt;/li&gt;
&lt;li&gt;A bad start command or port. The agent should correct it and redeploy in place.&lt;/li&gt;
&lt;li&gt;A transient failure. A plain redeploy fixes it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A support ticket is for the cases that survive all of that: the build succeeds but the container never becomes healthy, a platform resource is stuck, provisioning hangs, or the behavior contradicts the documentation. Teach the agent to exhaust the cheap fixes first. The workflow below builds that in as Step 3.&lt;/p&gt;
&lt;h2&gt;
  
  
  Connect the NEXUS AI MCP server
&lt;/h2&gt;

&lt;p&gt;If the agent already deploys to NEXUS AI, this is done. If not:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add &lt;span class="nt"&gt;--transport&lt;/span&gt; http nexus-ai https://mcp.nexusai.run/mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For Claude Desktop, ChatGPT, Cursor, or any other MCP client, add the same URL as a custom connector and sign in with your NEXUS AI account. Authentication is OAuth, so the agent acts as you, sees only your organization, and every call it makes is written to the audit log against its own token. Full setup for each client is in &lt;a href="https://nexusai.run/blog/mcp-driven-deploys-5-tasks-your-claude-agent-should-run" rel="noopener noreferrer"&gt;MCP-driven deploys&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The four support tools the agent needs:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;nexusai_support_ticket_create&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Open a ticket. Requires &lt;code&gt;subject&lt;/code&gt; and &lt;code&gt;description&lt;/code&gt;. Optional &lt;code&gt;priority&lt;/code&gt; and &lt;code&gt;category&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;nexusai_support_ticket_list&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;List your organization's tickets, filterable by status.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;nexusai_support_ticket_get&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Read one ticket and its full message thread.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;nexusai_support_ticket_reply&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Post a reply into an existing ticket.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  The failure-to-ticket workflow
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1 - Confirm the deployment actually failed
&lt;/h3&gt;

&lt;p&gt;A red status in one place is not confirmation. The agent should check status and health together before deciding anything is wrong.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;nexusai_deploy_status   deploymentId: &amp;lt;id&amp;gt;
nexusai_deploy_health   deploymentId: &amp;lt;id&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;status&lt;/code&gt; tells you whether the build finished and what state the deployment is in. &lt;code&gt;health&lt;/code&gt; returns the health check result and recent health-probe output. A deployment that is &lt;code&gt;RUNNING&lt;/code&gt; with a failing health check is a different problem from one stuck in &lt;code&gt;BUILDING&lt;/code&gt;, and the ticket should say which.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2 - Pull the evidence
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;nexusai_deploy_logs   deploymentId: &amp;lt;id&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This returns the recent build and runtime log lines. The agent should read them, not summarize them away. The specific error string is what a support engineer searches for. The agent should also note, from its own conversation history:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The deployment ID and the deployment URL.&lt;/li&gt;
&lt;li&gt;The framework and provider (NEXUS AI managed, AWS, Google Cloud, or Azure).&lt;/li&gt;
&lt;li&gt;The last change it made before the failure, and whether a previous revision of this deployment was healthy.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 3 - Try the reversible fixes
&lt;/h3&gt;

&lt;p&gt;If a previous revision was healthy and the current one is not, roll back first and confirm the app recovers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;nexusai_deploy_rollback   deploymentId: &amp;lt;id&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the failure looks transient, or the fix was a corrected env var or start command, rebuild in place:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;nexusai_deploy_redeploy   deploymentId: &amp;lt;id&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Redeploy keeps the same deployment ID, the same URL, and the same attached databases. If either of these resolves it, there is no ticket to file. The agent should report what it did and stop.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4 - Open the ticket with full context
&lt;/h3&gt;

&lt;p&gt;If the deployment still will not become healthy and the cause is not in the code or the configuration, this is a platform issue. Open the ticket:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="s"&gt;nexusai_support_ticket_create&lt;/span&gt;
  &lt;span class="s"&gt;subject&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;     &lt;span class="s"&gt;Deployment &amp;lt;id&amp;gt; builds successfully but never passes health check&lt;/span&gt;
  &lt;span class="s"&gt;description&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
    &lt;span class="s"&gt;Deployment ID: 84a423e5089f&lt;/span&gt;
    &lt;span class="s"&gt;URL: https://my-app.nexusai.run&lt;/span&gt;
    &lt;span class="s"&gt;Provider: NEXUS AI managed&lt;/span&gt;
    &lt;span class="s"&gt;Framework: Next.js&lt;/span&gt;

    &lt;span class="s"&gt;The build completes and the container starts, but the HTTP health&lt;/span&gt;
    &lt;span class="s"&gt;check on port 3000 has failed continuously for 20 minutes. The app&lt;/span&gt;
    &lt;span class="s"&gt;logs show it bound to port 3000 and printed "ready on 3000".&lt;/span&gt;

    &lt;span class="s"&gt;Last runtime log lines:&lt;/span&gt;
    &lt;span class="s"&gt;&amp;lt;paste the exact lines&amp;gt;&lt;/span&gt;

    &lt;span class="s"&gt;Tried: redeploy in place (same result), rollback to the previous&lt;/span&gt;
    &lt;span class="s"&gt;revision 7c1f0a2 (that revision is healthy). The only change between&lt;/span&gt;
    &lt;span class="s"&gt;them is an added POST /api/upload route.&lt;/span&gt;
  &lt;span class="na"&gt;category&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;    &lt;span class="s"&gt;deployment&lt;/span&gt;
  &lt;span class="na"&gt;priority&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;    &lt;span class="s"&gt;HIGH&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Category should be &lt;code&gt;deployment&lt;/code&gt; for a deploy that will not run, &lt;code&gt;database&lt;/code&gt; for a managed database problem, &lt;code&gt;billing&lt;/code&gt; for anything about plan limits or charges, &lt;code&gt;technical&lt;/code&gt; for API or MCP behavior, and &lt;code&gt;general&lt;/code&gt; for the rest. Priority should be &lt;code&gt;URGENT&lt;/code&gt; only for a production outage with users affected, &lt;code&gt;HIGH&lt;/code&gt; for a blocked deploy with no workaround, &lt;code&gt;MEDIUM&lt;/code&gt; for most things, and &lt;code&gt;LOW&lt;/code&gt; for questions.&lt;/p&gt;

&lt;p&gt;The tool returns the ticket ID. The agent should surface it to you.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5 - Track and close it
&lt;/h3&gt;

&lt;p&gt;The ticket is a normal ticket. It appears in the dashboard Support screen, and the agent can follow it from chat:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;nexusai_support_ticket_list   status: OPEN
nexusai_support_ticket_get    ticketId: &amp;lt;id&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When the team replies with a fix or a question, the agent can respond in the same thread:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="s"&gt;nexusai_support_ticket_reply&lt;/span&gt;
  &lt;span class="s"&gt;ticketId&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;lt;id&amp;gt;&lt;/span&gt;
  &lt;span class="s"&gt;message&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;  &lt;span class="s"&gt;Applied the suggested start command override. The health&lt;/span&gt;
            &lt;span class="s"&gt;check passed on the next redeploy and the container is&lt;/span&gt;
            &lt;span class="s"&gt;stable. Please close this.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There is one queue. A reply the agent posts here is visible to you in the dashboard, and a reply you post in the browser is visible to the agent.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a good agent-filed ticket looks like
&lt;/h2&gt;

&lt;p&gt;The difference is entirely in the description.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Weak:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;My deployment is not working. Can someone look at it?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Strong:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Deployment &lt;code&gt;84a423e5089f&lt;/code&gt; (&lt;code&gt;https://my-app.nexusai.run&lt;/code&gt;, NEXUS AI managed, Next.js). Build succeeds, container starts, HTTP health check on port 3000 has failed for 20 minutes. App logs show it bound to 3000. Rollback to revision &lt;code&gt;7c1f0a2&lt;/code&gt; is healthy; the only diff is a new &lt;code&gt;POST /api/upload&lt;/code&gt; route. Redeploy in place did not help. Runtime logs attached below.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The strong version is answerable on the first reply. The agent can produce it in one turn because it is not reconstructing anything. It is reporting what it already did.&lt;/p&gt;

&lt;h2&gt;
  
  
  A system prompt for knowing when to escalate
&lt;/h2&gt;

&lt;p&gt;Drop this into the agent's instructions for operations work:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;When a NEXUS AI deployment fails:
1. Check nexusai_deploy_status and nexusai_deploy_health.
2. Read nexusai_deploy_logs in full. Identify the exact error.
3. If the error is in the code or config, fix it and redeploy.
4. If a previous revision was healthy, roll back and confirm recovery.
5. If the build succeeds but the container never becomes healthy, or a
   platform resource is stuck, or behavior contradicts the docs: open a
   support ticket with nexusai_support_ticket_create. Include the
   deployment ID, URL, provider, framework, exact error lines, and every
   fix you already tried. Category "deployment". Priority "HIGH" unless
   users are affected, then "URGENT" and tell me first.
6. Never open a second ticket for a problem that already has an open one.
   Check nexusai_support_ticket_list first.
7. Report the ticket ID to me.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What the agent should not do
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;File duplicates.&lt;/strong&gt; Before creating a ticket, the agent should call &lt;code&gt;nexusai_support_ticket_list&lt;/code&gt; with &lt;code&gt;status: OPEN&lt;/code&gt; and check whether this deployment already has one. A second ticket for the same failure splits the thread.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;File for user errors.&lt;/strong&gt; A wrong environment variable, a typo in the start command, code that does not compile: the agent fixes those, it does not escalate them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open URGENT tickets unattended.&lt;/strong&gt; &lt;code&gt;URGENT&lt;/code&gt; should mean a human is also being paged. The agent should confirm with you before setting it, unless you have explicitly told it that a production outage is always URGENT.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Paste secrets into the description.&lt;/strong&gt; &lt;code&gt;nexusai_secrets_list&lt;/code&gt; returns names and metadata, never values, and the platform never returns a decrypted secret over the API or MCP. The agent should keep it that way and never quote a secret value, a token, or a connection string into a ticket body.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Can Claude or ChatGPT actually create a support ticket on my NEXUS AI account?
&lt;/h3&gt;

&lt;p&gt;Yes. Once the NEXUS AI MCP connector is attached and signed in, the assistant can call &lt;code&gt;nexusai_support_ticket_create&lt;/code&gt;. It acts as your account, scoped to your organization, and the ticket is identical to one opened from the dashboard.&lt;/p&gt;

&lt;h3&gt;
  
  
  Does an agent-filed ticket go to a different queue?
&lt;/h3&gt;

&lt;p&gt;No. There is one queue. Tickets opened through MCP appear in the dashboard Support screen with the same thread, and replies posted in either place are visible in both. See the &lt;a href="https://nexusai.run/customer-support" rel="noopener noreferrer"&gt;customer support page&lt;/a&gt; for the full picture.&lt;/p&gt;

&lt;h3&gt;
  
  
  Which NEXUS AI plans include support tickets?
&lt;/h3&gt;

&lt;p&gt;Starter and above. Starter includes email support and support tickets. Pro adds phone support on top. Free is community support. The &lt;a href="https://nexusai.run/pricing" rel="noopener noreferrer"&gt;pricing page&lt;/a&gt; has the breakdown.&lt;/p&gt;

&lt;h3&gt;
  
  
  Should the agent try to fix the deployment before filing a ticket?
&lt;/h3&gt;

&lt;p&gt;Yes, and the workflow above makes that Step 3. Read the logs, fix code or config errors, roll back if a previous revision was healthy, and redeploy. A support ticket is for what survives all of that: a build that succeeds but never runs, a stuck platform resource, or behavior that contradicts the documentation.&lt;/p&gt;

&lt;h3&gt;
  
  
  How does the agent follow up on a support ticket?
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;nexusai_support_ticket_list&lt;/code&gt; to see open tickets, &lt;code&gt;nexusai_support_ticket_get&lt;/code&gt; to read a thread, and &lt;code&gt;nexusai_support_ticket_reply&lt;/code&gt; to respond. The agent can confirm a fix worked and ask for the ticket to be closed, all from chat.&lt;/p&gt;

&lt;h3&gt;
  
  
  What stops an agent from spamming tickets?
&lt;/h3&gt;

&lt;p&gt;Instruction and the audit log. The system prompt above tells it to check for an existing open ticket first. Every ticket action is recorded against the agent's token, so a misbehaving agent is visible and its access is revocable from the dashboard.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can the agent see other organizations' tickets?
&lt;/h3&gt;

&lt;p&gt;No. The connector signs in as you, so it reaches only your own organization, with no more access than your account has.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where to start
&lt;/h2&gt;

&lt;p&gt;Give your agent read access first and watch it triage a few failures. When you trust its judgment on what is a real platform issue, let it file. From that point, a failed deploy at 2 AM is a ticket that is already written, already has the logs, and is waiting for a reply when you wake up.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://nexusai.run/register" rel="noopener noreferrer"&gt;Start free&lt;/a&gt; and connect the MCP server, or read &lt;a href="https://nexusai.run/blog/your-ai-app-is-generated-now-how-do-you-deploy-it" rel="noopener noreferrer"&gt;Your AI app is generated. Now how do you deploy it?&lt;/a&gt; for the wider shift this is part of.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://nexusai.run/customer-support" rel="noopener noreferrer"&gt;How to open a NEXUS AI support ticket&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nexusai.run/blog/mcp-driven-deploys-5-tasks-your-claude-agent-should-run" rel="noopener noreferrer"&gt;MCP-driven deploys: 5 tasks your Claude agent should run&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nexusai.run/blog/deploy-from-claude-code" rel="noopener noreferrer"&gt;Deploy from Claude Code to a live URL&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nexusai.run/pricing" rel="noopener noreferrer"&gt;NEXUS AI pricing and support tiers&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>mcp</category>
      <category>claude</category>
      <category>chatgpt</category>
      <category>agents</category>
    </item>
    <item>
      <title>When your AI-generated app outgrows Vercel</title>
      <dc:creator>Saif Ali</dc:creator>
      <pubDate>Sat, 12 Sep 2026 21:00:42 +0000</pubDate>
      <link>https://dev.to/sali_ac161a1b71406354896c/when-your-ai-generated-app-outgrows-vercel-3e1b</link>
      <guid>https://dev.to/sali_ac161a1b71406354896c/when-your-ai-generated-app-outgrows-vercel-3e1b</guid>
      <description>&lt;h2&gt;
  
  
  When your AI-generated app outgrows Vercel
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Published:&lt;/strong&gt; September 6, 2026&lt;br&gt;
&lt;strong&gt;Category:&lt;/strong&gt; AI Deployments · Platforms&lt;br&gt;
&lt;strong&gt;Reading time:&lt;/strong&gt; 7 minutes&lt;br&gt;
&lt;strong&gt;Author:&lt;/strong&gt; NEXUS AI Team&lt;/p&gt;




&lt;p&gt;You built the app with v0, Claude, or Cursor. You pushed it to Vercel. The preview URL worked, the production URL worked, and for a week everything was fine.&lt;/p&gt;

&lt;p&gt;Then you added the first feature that has to remember something. A saved record, an uploaded file, a job that runs after the request finishes. And the deploy that took thirty seconds now needs a database, a place to put files, and a process that stays running. That is the moment people start searching for a Vercel alternative, and it is worth understanding what actually changed.&lt;/p&gt;

&lt;p&gt;This post is a decision guide. What Vercel is genuinely good at, the specific signals that your app has moved past it, the options when it has, and what moving looks like.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Vercel does well
&lt;/h2&gt;

&lt;p&gt;Vercel is one of the best frontend platforms available. Git-connected deploys, a preview URL for every pull request, an edge network that is fast almost everywhere, and a developer experience that set the standard the rest of the industry now copies. For a marketing site, a docs site, a dashboard that talks to an API you host elsewhere, or a Next.js frontend with light serverless routes, it is hard to beat and there is no reason to leave.&lt;/p&gt;

&lt;p&gt;The question is not whether Vercel is good. It is whether your app still fits the shape Vercel is built for.&lt;/p&gt;

&lt;h2&gt;
  
  
  The four signs your app has outgrown it
&lt;/h2&gt;

&lt;h3&gt;
  
  
  A database is now the center of the app
&lt;/h3&gt;

&lt;p&gt;An AI code generator does not stop at the interface. Ask it for a working app and it gives you a &lt;code&gt;users&lt;/code&gt; table, a &lt;code&gt;posts&lt;/code&gt; table, auth, and a schema that the whole thing depends on. That database is not an add-on to your frontend. It is the app.&lt;/p&gt;

&lt;p&gt;On Vercel, persistent data comes through the storage marketplace: a managed Postgres, a key-value store, and blob storage, each provisioned as a separate integration with its own billing line and its own access model. It works, and for a single database it is convenient. It also means the thing your app is built around lives outside the platform that deploys your app, wired together by you.&lt;/p&gt;

&lt;h3&gt;
  
  
  You need something that runs longer than a request
&lt;/h3&gt;

&lt;p&gt;Serverless functions are built to handle a request and exit. They are excellent at that. They are not built to run a queue consumer, process an upload in the background, keep a websocket open, run a nightly reconciliation job that takes four minutes, or hold a warm connection pool.&lt;/p&gt;

&lt;p&gt;If your AI-generated app has a "send the email after checkout", an "process the CSV the user uploaded", or a "poll this external API every few minutes", you are now trying to fit a long-running workload into a request-shaped runtime. That is the point where you want a container that stays up and a worker process next to it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Files have to live somewhere
&lt;/h3&gt;

&lt;p&gt;Profile pictures, exported reports, generated images, model artifacts. The moment your app accepts an upload or produces a file, you need object storage, and on a frontend platform that is another marketplace integration and another bill.&lt;/p&gt;

&lt;h3&gt;
  
  
  You want it running in your own cloud account
&lt;/h3&gt;

&lt;p&gt;Sometimes the reason has nothing to do with the app's shape. A compliance requirement, an existing committed spend on AWS, Google Cloud, or Azure, a data residency rule, or a security review that asks where exactly the data sits. Vercel runs your app on Vercel's infrastructure. If the answer needs to be "in our own account", that is a different kind of platform.&lt;/p&gt;

&lt;h2&gt;
  
  
  The options once you have outgrown it
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Path&lt;/th&gt;
&lt;th&gt;What it looks like&lt;/th&gt;
&lt;th&gt;Trade-off&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Stay on Vercel, add the pieces&lt;/td&gt;
&lt;td&gt;Keep the frontend on Vercel, add a Postgres integration, a KV store, blob storage, and a separate service for background jobs&lt;/td&gt;
&lt;td&gt;Fastest to set up. Several billing lines, several dashboards, and background work still has no natural home.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Move to a container platform&lt;/td&gt;
&lt;td&gt;Redeploy the app as a long-running container on Railway, Render, or Fly, add a managed database from the same provider&lt;/td&gt;
&lt;td&gt;One runtime that fits the app. You still wire storage, backups, and multi-cloud yourself, and the AI build-and-deploy loop is gone.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Move to NEXUS AI&lt;/td&gt;
&lt;td&gt;One deploy provisions the app container, a managed database, an optional Redis, a worker, an S3-compatible bucket, encrypted secrets, backups, and a public URL&lt;/td&gt;
&lt;td&gt;One platform for the full stack. Frontend-only edge cases are better served by a frontend platform.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;There is no single right answer. If you have one database and no background work, adding a Vercel Postgres integration is genuinely the least effort. If the app has a backend, a queue, uploads, and a schema it lives on, a platform built for that shape will cost you less over the next year in wiring and operations.&lt;/p&gt;

&lt;h2&gt;
  
  
  What NEXUS AI gives you in one deploy
&lt;/h2&gt;

&lt;p&gt;NEXUS AI is a Vercel alternative for the case where the app is full-stack. One &lt;code&gt;nexus deploy&lt;/code&gt; builds the container, provisions the Postgres, Redis, and workers the app asks for, attaches a bucket for uploads, injects secrets from an encrypted vault, opens a public HTTPS URL, and starts streaming build and runtime logs. After that first deploy you get versioned rollback, replica scaling, encrypted backups with signed download URLs, and cross-service restore, from the dashboard, the CLI, the REST API, or an MCP agent.&lt;/p&gt;

&lt;p&gt;You do not have to start over to try it. Import the repository from GitHub, keep the Next.js frontend exactly as it is, and keep iterating in the &lt;a href="https://nexusai.run/ai-app-builder" rel="noopener noreferrer"&gt;AI App Builder&lt;/a&gt; with a live preview. The &lt;a href="https://nexusai.run/vercel-alternative" rel="noopener noreferrer"&gt;full comparison is on the Vercel alternative page&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Moving over: what to check first
&lt;/h2&gt;

&lt;p&gt;Before you migrate anything, make a list of what the app actually depends on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Environment variables.&lt;/strong&gt; Everything in Vercel's project settings needs to move to the NEXUS AI secrets vault. Database URLs and storage credentials will be replaced with the ones NEXUS AI provisions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The database.&lt;/strong&gt; You can point the app at the managed Postgres NEXUS AI creates, or bring an existing Neon, Supabase, or PlanetScale database and connect it. Migrating the data is a &lt;code&gt;pg_dump&lt;/code&gt; and restore.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;File storage.&lt;/strong&gt; Any code that reads or writes to Vercel Blob needs to point at the attached S3-compatible bucket instead. The API is S3-compatible, so an existing AWS SDK client usually needs only a new endpoint and credentials.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Background jobs.&lt;/strong&gt; Anything currently running as a Vercel Cron or a fire-and-forget function moves to a worker process, which runs continuously next to the app.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The frontend build.&lt;/strong&gt; Framework detection handles Next.js, Vite, Astro, and the rest. The build command and output directory carry over from what you already have.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a worked example of taking an AI-generated frontend and giving it a real backend end to end, see &lt;a href="https://nexusai.run/blog/from-v0-prototype-to-production-database-in-5-minutes" rel="noopener noreferrer"&gt;From v0 prototype to production database in 5 minutes&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Is NEXUS AI a Vercel alternative?
&lt;/h3&gt;

&lt;p&gt;For full-stack apps, yes. NEXUS AI deploys a long-running backend container alongside managed databases, Redis, workers, persistent volumes, S3-compatible storage, backups, and rollback, in one workflow. For a frontend-only site with light edge functions, a dedicated frontend platform is the better fit.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I keep my Next.js app?
&lt;/h3&gt;

&lt;p&gt;Yes. NEXUS AI detects Next.js and builds it the same way you build it locally. You keep the framework, the code, and the routing. What changes is the runtime underneath and the services attached to it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do I have to move my database?
&lt;/h3&gt;

&lt;p&gt;No. You can use the managed Postgres NEXUS AI provisions, or connect an existing database from Neon, Supabase, PlanetScale, or your own instance. If you do move the data, it is a standard dump and restore.&lt;/p&gt;

&lt;h3&gt;
  
  
  What replaces Vercel's preview deployments?
&lt;/h3&gt;

&lt;p&gt;The AI App Builder gives a live preview of the app as you change it, and NEXUS AI supports separate development and production environments per project so you can test a change before it reaches the production URL.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is NEXUS AI cheaper than Vercel?
&lt;/h3&gt;

&lt;p&gt;It depends on the app. A frontend with almost no backend is cheap to run on Vercel and there is little to gain by moving. A full-stack app that needs a database, a KV store, blob storage, and a background worker adds up to several billing lines on a frontend platform, and consolidating those onto one platform usually costs less. Compare against your actual usage on the &lt;a href="https://nexusai.run/pricing" rel="noopener noreferrer"&gt;pricing page&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can my AI agent do the migration?
&lt;/h3&gt;

&lt;p&gt;Yes. NEXUS AI exposes 73 MCP tools, so Claude, Cursor, or Codex can import the repository, provision the database and storage, move the environment variables, deploy, and stream the logs back to you. See &lt;a href="https://nexusai.run/blog/mcp-driven-deploys-5-tasks-your-claude-agent-should-run" rel="noopener noreferrer"&gt;MCP-driven deploys&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where to start
&lt;/h2&gt;

&lt;p&gt;If your app is still mostly a frontend, you probably do not need to move. If it has a database it is built around, background work, file uploads, or a requirement to run in your own cloud account, it has outgrown a frontend platform, and the wiring only gets heavier from here.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://nexusai.run/register" rel="noopener noreferrer"&gt;Start free&lt;/a&gt; and import your repository, or read the &lt;a href="https://nexusai.run/vercel-alternative" rel="noopener noreferrer"&gt;Vercel alternative comparison&lt;/a&gt; for the feature-by-feature breakdown.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://nexusai.run/vercel-alternative" rel="noopener noreferrer"&gt;Vercel alternative for full-stack apps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nexusai.run/blog/from-v0-prototype-to-production-database-in-5-minutes" rel="noopener noreferrer"&gt;From v0 prototype to production database in 5 minutes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nexusai.run/blog/your-ai-app-is-generated-now-how-do-you-deploy-it" rel="noopener noreferrer"&gt;Your AI app is generated. Now how do you deploy it?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nexusai.run/blog/deploy-full-stack-python-postgres-redis-workers-5-minutes" rel="noopener noreferrer"&gt;Deploy a full-stack Python app with Postgres, Redis, and workers in 5 minutes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>vercel</category>
      <category>vercelalternative</category>
      <category>fullstack</category>
      <category>database</category>
    </item>
    <item>
      <title>Headless App Deployment with MCP: How AI Agents Push, Preview, and Ship Apps Without a Dashboard</title>
      <dc:creator>Saif Ali</dc:creator>
      <pubDate>Sat, 12 Sep 2026 20:57:34 +0000</pubDate>
      <link>https://dev.to/sali_ac161a1b71406354896c/headless-app-deployment-with-mcp-how-ai-agents-push-preview-and-ship-apps-without-a-dashboard-1fbd</link>
      <guid>https://dev.to/sali_ac161a1b71406354896c/headless-app-deployment-with-mcp-how-ai-agents-push-preview-and-ship-apps-without-a-dashboard-1fbd</guid>
      <description>&lt;h2&gt;
  
  
  What headless app deployment actually means
&lt;/h2&gt;

&lt;p&gt;Most "AI app builders" still expect a person in the loop: open a browser, click Deploy, wait for a progress bar. &lt;strong&gt;Headless app deployment&lt;/strong&gt; removes that step entirely. Every action in the lifecycle, from writing the first file to rolling back a bad release, happens through a tool call an agent can make on its own, with no dashboard tab ever required to open.&lt;/p&gt;

&lt;p&gt;NEXUS AI exposes its full app lifecycle, generation, live preview, container builds, deployment, logs, health checks, scaling, and rollback, as MCP (Model Context Protocol) tools with structured, AI-readable responses. That means a conversation with Claude, Cursor, Codex, or a custom MCP client can start with a one-line prompt and end with a running production app and a public URL, without a human touching a UI in between.&lt;/p&gt;

&lt;p&gt;This guide covers the two tools that make headless deployment possible, nexusai_builder_push and nexusai_builder_pull, then walks through the complete headless workflow: generate, preview, deploy, operate.&lt;/p&gt;




&lt;h2&gt;
  
  
  The headless preview layer: nexusai_builder_push and nexusai_builder_pull
&lt;/h2&gt;

&lt;p&gt;Before an app deploys, it usually needs a preview. In a normal AI app builder, that preview only exists inside a browser tab a person is looking at. Headless deployment needs the same preview, but reachable from a tool call instead of a click.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;nexusai_builder_push&lt;/strong&gt; takes a &lt;code&gt;projectId&lt;/code&gt; and an array of files, each with a &lt;code&gt;path&lt;/code&gt; and full &lt;code&gt;content&lt;/code&gt; (not a diff), plus an optional &lt;code&gt;note&lt;/code&gt;. It writes those files into that project's Builder session and returns:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"sessionId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"bld_8f2a1c"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"builderUrl"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://nexusai.run/projects/proj_419/builder"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"filesCount"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"snapshotMessageId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"msg_a91f"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;builderUrl&lt;/code&gt; is a live, in-browser preview a person can open at any point, but the agent never has to open it itself to keep working. Every push is a restorable checkpoint, so nothing from an earlier round is ever lost.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;nexusai_builder_pull&lt;/strong&gt; takes just a &lt;code&gt;projectId&lt;/code&gt; and reads the latest file snapshot back, including any changes a person made by hand in the browser UI. This is what keeps an agent-authored app and a human-edited one in the same conversation instead of forking into two versions: an agent can push a first draft, a designer can nudge the layout in the browser, and the agent's next &lt;code&gt;nexusai_builder_pull&lt;/code&gt; call sees that edit before writing another line of code.&lt;/p&gt;

&lt;p&gt;Used together, these two tools form a loop: push files, get a preview URL, optionally pull back changes, repeat, all without a dashboard.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 1 — Generate the files from a prompt
&lt;/h2&gt;

&lt;p&gt;An MCP-compatible agent starts the same way a person would in the AI App Builder: with a description of the app. The difference is that instead of typing into a chat window inside NEXUS AI, the agent is already inside its own conversation (Claude, Cursor, Codex, or a custom client) and generates the file set itself, in memory, based on the prompt.&lt;/p&gt;

&lt;p&gt;There is no NEXUS AI-specific step here. This is ordinary code generation. The headless part starts at the next step.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 2 — Push to a live preview with nexusai_builder_push
&lt;/h2&gt;

&lt;p&gt;Once the files exist, the agent calls &lt;code&gt;nexusai_builder_push&lt;/code&gt; with the target &lt;code&gt;projectId&lt;/code&gt; and the generated files:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"tool"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"nexusai_builder_push"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"arguments"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"projectId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"proj_419"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"files"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"path"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"app/page.tsx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"content"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"export default function Page() { ... }"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"path"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"app/api/tasks/route.ts"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"content"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"export async function GET() { ... }"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"note"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Initial generation: task list with a Postgres-backed API route"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The response includes the &lt;code&gt;builderUrl&lt;/code&gt;. The agent can hand that URL straight back to the person it's working for, "here's a live preview," without NEXUS AI, the agent, or the person needing to spin up any infrastructure. Nothing is deployed yet; this is a sandboxed, in-browser preview only.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 3 — Pull back any edits with nexusai_builder_pull
&lt;/h2&gt;

&lt;p&gt;If a person opens the &lt;code&gt;builderUrl&lt;/code&gt; and tweaks something by hand, the agent's next move before writing more code should be:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"tool"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"nexusai_builder_pull"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"arguments"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"projectId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"proj_419"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This returns the current file snapshot, browser edits included. The agent now has the real, current state of the project before it generates the next round of changes or decides the app is ready to ship. Skipping this step is the single most common way an agent silently overwrites a person's manual fix.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 4 — Deploy and operate without opening a dashboard
&lt;/h2&gt;

&lt;p&gt;Once the preview looks right, the same MCP session moves straight into deployment. No context switch, no separate dashboard login, just more tool calls in the same conversation:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;nexusai_deploy_create&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Builds a container from the current project state and ships it, provisioning any declared database, worker, or storage resources&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;nexusai_deploy_logs&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Streams build and runtime logs to confirm the deploy came up clean&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;nexusai_deploy_health&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Checks whether the running service is passing health checks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;nexusai_deploy_scale&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Adjusts replica count or resources&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;nexusai_deploy_rollback&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Reverts to a previous deployment if something breaks&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A full headless round trip looks like this in practice:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Agent generates files → &lt;code&gt;nexusai_builder_push&lt;/code&gt; → gets a preview URL&lt;/li&gt;
&lt;li&gt;Person reviews it (optional) → agent calls &lt;code&gt;nexusai_builder_pull&lt;/code&gt; if anything changed&lt;/li&gt;
&lt;li&gt;Agent calls &lt;code&gt;nexusai_deploy_create&lt;/code&gt; → app builds and gets a public HTTPS URL&lt;/li&gt;
&lt;li&gt;Agent calls &lt;code&gt;nexusai_deploy_logs&lt;/code&gt; and &lt;code&gt;nexusai_deploy_health&lt;/code&gt; → confirms it's actually up&lt;/li&gt;
&lt;li&gt;Days later, a bad change ships → agent calls &lt;code&gt;nexusai_deploy_rollback&lt;/code&gt; → previous version is live again&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;At no point in that sequence does a browser dashboard have to open. It can, at any point, for a human who wants to look, but it is never a required step.&lt;/p&gt;




&lt;h2&gt;
  
  
  Governance doesn't disappear just because the dashboard does
&lt;/h2&gt;

&lt;p&gt;A reasonable worry with headless workflows is losing visibility into what an agent actually did. NEXUS AI headless deployments use the same OAuth-scoped access tokens and role-based permissions as dashboard use, scoped to exactly the actions a given token is allowed to take. Every tool call an agent makes, pushes, pulls, deploys, scales, rolls back, is written to the audit log with the acting identity and a timestamp. A headless deployment is still a fully attributable one; it just doesn't require a person to be the one clicking the buttons.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Try it now:&lt;/strong&gt; connect an MCP-compatible client to NEXUS AI and ask it to push a small app to a preview with &lt;code&gt;nexusai_builder_push&lt;/code&gt;, then deploy it with &lt;code&gt;nexusai_deploy_create&lt;/code&gt;, all from the same conversation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What is headless app deployment?
&lt;/h3&gt;

&lt;p&gt;Headless app deployment is shipping and operating an application entirely through programmatic tool calls, with no person clicking through a web dashboard. An AI agent generates the code, previews it, deploys it, and manages it afterward using API or MCP calls end to end.&lt;/p&gt;

&lt;h3&gt;
  
  
  How is headless deployment different from using the AI App Builder in a browser?
&lt;/h3&gt;

&lt;p&gt;The underlying platform is the same. The difference is who drives it. In the browser, a person opens the Builder, reviews the preview, and clicks Deploy. In a headless workflow, an MCP-compatible agent calls the same underlying actions, nexusai_builder_push for a preview, nexusai_deploy_create to ship it, as tool calls inside its own conversation, so no dashboard interaction is required at any point.&lt;/p&gt;

&lt;h3&gt;
  
  
  What does nexusai_builder_push actually return?
&lt;/h3&gt;

&lt;p&gt;It returns a sessionId for the Builder session, a builderUrl for an instant browser preview, a filesCount confirming how many files were written, and a snapshotMessageId identifying that push as a restorable checkpoint.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can nexusai_builder_pull lose an agent's own changes?
&lt;/h3&gt;

&lt;p&gt;No. Pulling reads the latest snapshot, which includes both agent-pushed files and any browser-side edits layered on top. It does not discard prior pushes; each push remains a separate, restorable checkpoint in the session history.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is a headless deployment less secure than a dashboard deployment?
&lt;/h3&gt;

&lt;p&gt;No. Headless workflows authenticate with the same OAuth-scoped access tokens and role-based permissions as dashboard sessions, and every tool call is written to the audit log with the acting identity and timestamp, so a headless deployment is fully attributable after the fact.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;NEXUS AI — AI-native cloud infrastructure · &lt;a href="https://nexusai.run" rel="noopener noreferrer"&gt;nexusai.run&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>headlessdeployment</category>
      <category>aiagents</category>
      <category>aiappbuilder</category>
    </item>
    <item>
      <title>Deploy from Claude Code to a live URL</title>
      <dc:creator>Saif Ali</dc:creator>
      <pubDate>Thu, 03 Sep 2026 09:54:38 +0000</pubDate>
      <link>https://dev.to/sali_ac161a1b71406354896c/deploy-from-claude-code-to-a-live-url-4pje</link>
      <guid>https://dev.to/sali_ac161a1b71406354896c/deploy-from-claude-code-to-a-live-url-4pje</guid>
      <description>&lt;h2&gt;
  
  
  Deploy from Claude Code to a live URL
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Published:&lt;/strong&gt; September 2, 2026&lt;br&gt;
&lt;strong&gt;Category:&lt;/strong&gt; AI Deployments · MCP&lt;br&gt;
&lt;strong&gt;Reading time:&lt;/strong&gt; 6 minutes&lt;br&gt;
&lt;strong&gt;Author:&lt;/strong&gt; NEXUS AI Team&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Claude Code can write a working app in a session. The gap is everything after the agent stops generating: a database, secrets, a public URL, backups, and a rollback path.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;NEXUS AI is the deploy layer for that session. You add one MCP server, sign in once, and paste one prompt. The same agent that wrote the code calls &lt;code&gt;nexusai_deploy_source&lt;/code&gt;. About five minutes later you have a live URL.&lt;/p&gt;

&lt;p&gt;This is the Claude Code path. Cursor, Claude Desktop, and Codex use the same MCP server and the same sign-in. See &lt;a href="https://nexusai.run/docs#mcp-claude-cursor-codex-setup" rel="noopener noreferrer"&gt;Connect NEXUS AI MCP in your editor&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  What you need
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A NEXUS AI account (&lt;a href="https://nexusai.run/pricing" rel="noopener noreferrer"&gt;start free&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Claude Code installed and signed in&lt;/li&gt;
&lt;li&gt;An app in a Git repo Claude Code can see (GitHub is the usual case)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No API key to copy. Claude Code runs an OAuth sign-in the first time it connects, and you approve exactly the access you want the agent to have.&lt;/p&gt;
&lt;h2&gt;
  
  
  1. Add the NEXUS AI MCP server
&lt;/h2&gt;

&lt;p&gt;In the project directory:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add &lt;span class="nt"&gt;--transport&lt;/span&gt; http nexus-ai https://mcp.nexusai.run/mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;--transport http&lt;/code&gt; has to come before the server name. Without it, Claude Code treats the entry as a stdio command and the connection fails.&lt;/p&gt;

&lt;p&gt;The first time an agent session uses the server, Claude Code opens a browser tab on &lt;code&gt;mcp.nexusai.run&lt;/code&gt;, you sign in to NEXUS AI, and you approve the scopes. Claude Code stores the token locally, not in your repo, and refreshes it for you (access tokens last an hour). You can also start the sign-in by hand: run &lt;code&gt;/mcp&lt;/code&gt; in a session, select &lt;code&gt;nexus-ai&lt;/code&gt;, then &lt;strong&gt;Authenticate&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Approve only what the agent needs.&lt;/strong&gt; To watch first, &lt;code&gt;deployments:read&lt;/code&gt; and &lt;code&gt;deployments:logs&lt;/code&gt; are enough. For the deploy in step 2, add &lt;code&gt;deployments:create&lt;/code&gt;. Add &lt;code&gt;secrets:manage&lt;/code&gt; when you want the agent to write secrets, and &lt;code&gt;db:admin&lt;/code&gt; for database backups, restores, and applied schema fixes. Leave the delete scopes (&lt;code&gt;deployments:delete&lt;/code&gt;, &lt;code&gt;buckets:delete&lt;/code&gt;, &lt;code&gt;volumes:delete&lt;/code&gt;, &lt;code&gt;db:source:delete&lt;/code&gt;) off unless you specifically want them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Share the server with a team.&lt;/strong&gt; Add &lt;code&gt;--scope project&lt;/code&gt; and Claude Code writes &lt;code&gt;.mcp.json&lt;/code&gt; at the repo root:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"nexus-ai"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"http"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://mcp.nexusai.run/mcp"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Commit that file. No token goes in it. Each teammate does the OAuth sign-in once on their own machine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Confirm it connected.&lt;/strong&gt; Inside a session, &lt;code&gt;/mcp&lt;/code&gt; should show &lt;code&gt;nexus-ai&lt;/code&gt; as connected, not failed. Then check the identity:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Call &lt;code&gt;nexusai_whoami&lt;/code&gt; and tell me which tenant I am connected to.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If it shows as failed, the usual causes are a missing &lt;code&gt;--transport http&lt;/code&gt;, the wrong host, or a declined or expired sign-in. Re-run &lt;code&gt;/mcp&lt;/code&gt; and choose Authenticate. To disconnect entirely, &lt;code&gt;claude mcp remove nexus-ai&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Paste this prompt
&lt;/h2&gt;

&lt;p&gt;Open Claude Code in the repo and send:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Deploy this repo to NEXUS AI with Postgres and Redis. Detect the framework and start command from the project. Wait until the deployment is healthy, then give me the public HTTPS URL, the deployment ID, and the masked database host. Do not write a Dockerfile unless the build fails.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;What the agent should call:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;nexusai_projects_list&lt;/code&gt; (or create a project)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;nexusai_deploy_source&lt;/code&gt; with the Git URL, the detected framework, and &lt;code&gt;services: ["postgresql", "redis"]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;nexusai_deploy_status&lt;/code&gt; until healthy&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;nexusai_deploy_logs&lt;/code&gt; if the build fails&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You did not open a cloud console. You did not write compose YAML. The agent already has the repo context.&lt;/p&gt;

&lt;p&gt;Postgres and Redis run as sidecars on the NEXUS managed container platform, with &lt;code&gt;DATABASE_URL&lt;/code&gt; and &lt;code&gt;REDIS_URL&lt;/code&gt; injected automatically. If you target a single-container cloud runtime instead (App Runner, Cloud Run, Container Apps), Postgres becomes a managed instance and Redis is not available there.&lt;/p&gt;

&lt;p&gt;If the app needs uploads, follow with:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Create a bucket called &lt;code&gt;user-uploads&lt;/code&gt;, attach it to this deployment, and redeploy so the app gets &lt;code&gt;S3_ENDPOINT&lt;/code&gt;, &lt;code&gt;S3_BUCKET&lt;/code&gt;, &lt;code&gt;S3_ACCESS_KEY&lt;/code&gt;, and &lt;code&gt;S3_SECRET_KEY&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is &lt;code&gt;nexusai_bucket_create&lt;/code&gt;, &lt;code&gt;nexusai_bucket_attach&lt;/code&gt;, then &lt;code&gt;nexusai_deploy_redeploy&lt;/code&gt;. The attach step needs &lt;code&gt;buckets:manage&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Operate from the same session
&lt;/h2&gt;

&lt;p&gt;These are the next prompts worth saving.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Snapshot before a migration&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Before you run the migration, take a Postgres backup of this deployment. If the migration fails, restore that backup and roll back the deploy.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Triage a 500&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Tail the last 200 log lines for this deployment, name the failure, and fix it. If it is a missing secret, create it in the vault and redeploy.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Roll back&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Snapshot Postgres, then roll this deployment back to the previous release. Confirm it is healthy.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Backups and rollback are safe operations. The tools that overwrite or delete data (&lt;code&gt;nexusai_db_restore&lt;/code&gt;, &lt;code&gt;nexusai_db_apply_fix&lt;/code&gt;, &lt;code&gt;nexusai_deploy_delete&lt;/code&gt;, bucket and volume delete) carry a destructive hint, so Claude Code asks you to confirm each call before it runs. SQL that writes rows or changes schema also needs an explicit &lt;code&gt;confirmed: true&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Optional: preview in the builder first
&lt;/h2&gt;

&lt;p&gt;If you want a live preview link before production, ask Claude Code to push the current files with &lt;code&gt;nexusai_builder_push&lt;/code&gt;, open the preview, then deploy. Pull builder-side edits back with &lt;code&gt;nexusai_builder_pull&lt;/code&gt;. Same MCP server, no extra install.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Does this work if the app was generated in this Claude Code session?
&lt;/h3&gt;

&lt;p&gt;Yes. Push or commit so &lt;code&gt;nexusai_deploy_source&lt;/code&gt; has a Git URL, or deploy from local source if you use that path. The agent already knows the framework, port, and start command.&lt;/p&gt;

&lt;h3&gt;
  
  
  How does authentication work? Is there an API key?
&lt;/h3&gt;

&lt;p&gt;No static key. The MCP server uses OAuth with PKCE. Claude Code registers itself, opens a browser sign-in the first time it connects, and stores a short-lived token locally that it refreshes on its own. You approve the scopes during sign-in and can re-approve a wider set later by running &lt;code&gt;/mcp&lt;/code&gt; and authenticating again. The personal access tokens at &lt;code&gt;nexusai.run/settings/tokens&lt;/code&gt; are for the REST API, not the MCP server.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is this an MCP gateway?
&lt;/h3&gt;

&lt;p&gt;No. NEXUS AI is an app deploy platform that agents drive over MCP. It is not a gateway for hosting other MCP servers.&lt;/p&gt;

&lt;h3&gt;
  
  
  What does the live stack include?
&lt;/h3&gt;

&lt;p&gt;App container, optional Postgres, MySQL, or Mongo, Redis, workers, volumes, S3-compatible buckets, HTTPS, logs, backups, and rollback. Full-stack deploys run on the NEXUS managed container platform. Single-container apps can target AWS App Runner, Google Cloud Run, or Azure Container Apps.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I do this from Cursor or Claude Desktop instead?
&lt;/h3&gt;

&lt;p&gt;Yes. Same MCP URL, same OAuth sign-in. See &lt;a href="https://nexusai.run/docs#mcp-claude-cursor-codex-setup" rel="noopener noreferrer"&gt;Connect NEXUS AI MCP in your editor&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do I cut off access?
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;claude mcp remove nexus-ai&lt;/code&gt; deletes the server and its stored token from that machine. Manage account tokens at &lt;a href="https://nexusai.run/settings/tokens" rel="noopener noreferrer"&gt;nexusai.run/settings/tokens&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://nexusai.run/mcp-deployment-platform" rel="noopener noreferrer"&gt;MCP deployment platform&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nexusai.run/deploy-full-stack-app" rel="noopener noreferrer"&gt;Deploy a full-stack app with a database&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nexusai.run/blog/mcp-driven-deploys-5-tasks-your-claude-agent-should-run" rel="noopener noreferrer"&gt;MCP-driven deploys: 5 tasks your Claude agent should be running for you&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nexusai.run/docs#mcp-oauth-flow" rel="noopener noreferrer"&gt;Connect NEXUS AI MCP over OAuth&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>mcp</category>
      <category>claude</category>
      <category>claudecode</category>
      <category>deployments</category>
    </item>
    <item>
      <title>Deploy from Codex to a live URL</title>
      <dc:creator>Saif Ali</dc:creator>
      <pubDate>Thu, 03 Sep 2026 09:53:27 +0000</pubDate>
      <link>https://dev.to/sali_ac161a1b71406354896c/deploy-from-codex-to-a-live-url-2oa7</link>
      <guid>https://dev.to/sali_ac161a1b71406354896c/deploy-from-codex-to-a-live-url-2oa7</guid>
      <description>&lt;h2&gt;
  
  
  Deploy from Codex to a live URL
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Published:&lt;/strong&gt; September 2, 2026&lt;br&gt;
&lt;strong&gt;Category:&lt;/strong&gt; AI Deployments · MCP&lt;br&gt;
&lt;strong&gt;Reading time:&lt;/strong&gt; 6 minutes&lt;br&gt;
&lt;strong&gt;Author:&lt;/strong&gt; NEXUS AI Team&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Connect OpenAI Codex to NEXUS AI over MCP, deploy the repo you just worked on, and get a public HTTPS URL with Postgres. Then back up, tail logs, and roll back without leaving the terminal.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Codex is good at reading a repo and changing it. Production still needs a database, secrets, a URL, and a rollback path. NEXUS AI is the deploy layer for that session: one MCP server, one OAuth sign-in, one prompt, and the same agent that edited the code calls &lt;code&gt;nexusai_deploy_source&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;This is the Codex path. See also &lt;a href="https://nexusai.run/blog/deploy-from-claude-code" rel="noopener noreferrer"&gt;Deploy from Claude Code&lt;/a&gt; and &lt;a href="https://nexusai.run/blog/deploy-from-cursor" rel="noopener noreferrer"&gt;Deploy from Cursor&lt;/a&gt; — same MCP server, same tools.&lt;/p&gt;
&lt;h2&gt;
  
  
  What you need
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A NEXUS AI account (&lt;a href="https://nexusai.run/pricing" rel="noopener noreferrer"&gt;start free&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Codex CLI installed and signed in to OpenAI&lt;/li&gt;
&lt;li&gt;An app in a Git repo Codex can see&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No API key to paste. Codex runs an OAuth sign-in against the server and stores the token in its own credential store.&lt;/p&gt;
&lt;h2&gt;
  
  
  1. Add the NEXUS AI MCP server
&lt;/h2&gt;

&lt;p&gt;Two commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;codex mcp add nexus-ai &lt;span class="nt"&gt;--url&lt;/span&gt; https://mcp.nexusai.run/mcp
codex mcp login nexus-ai
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;codex mcp add&lt;/code&gt; writes a &lt;code&gt;[mcp_servers.nexus-ai]&lt;/code&gt; block to &lt;code&gt;~/.codex/config.toml&lt;/code&gt;. &lt;code&gt;codex mcp login&lt;/code&gt; reads the server's OAuth metadata, opens a browser, and stores the access token — nothing lands in the config file or your shell history.&lt;/p&gt;

&lt;p&gt;Prefer to edit the file yourself? Add this to &lt;code&gt;~/.codex/config.toml&lt;/code&gt; (global) or &lt;code&gt;.codex/config.toml&lt;/code&gt; in the repo (project-scoped), then run &lt;code&gt;codex mcp login nexus-ai&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="nn"&gt;[mcp_servers.nexus-ai]&lt;/span&gt;
&lt;span class="py"&gt;url&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"https://mcp.nexusai.run/mcp"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Approve only what the agent needs&lt;/strong&gt; in the browser consent screen. &lt;code&gt;deployments:read&lt;/code&gt; and &lt;code&gt;deployments:logs&lt;/code&gt; to inspect. Add &lt;code&gt;deployments:create&lt;/code&gt; to deploy, &lt;code&gt;secrets:manage&lt;/code&gt; to write secrets, &lt;code&gt;db:admin&lt;/code&gt; for backups and restores, &lt;code&gt;buckets:manage&lt;/code&gt; for storage. Leave the delete scopes (&lt;code&gt;deployments:delete&lt;/code&gt;, &lt;code&gt;buckets:delete&lt;/code&gt;, &lt;code&gt;db:source:delete&lt;/code&gt;) off unless you want them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Confirm it connected:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;codex mcp list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;nexus-ai&lt;/code&gt; should show as authenticated. Then, in a session:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Call &lt;code&gt;nexusai_whoami&lt;/code&gt; and tell me which tenant I am connected to.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If login failed, re-run &lt;code&gt;codex mcp login nexus-ai&lt;/code&gt;. To remove the server, &lt;code&gt;codex mcp remove nexus-ai&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Paste this prompt
&lt;/h2&gt;

&lt;p&gt;In the repo, start Codex and send:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Deploy this repo to NEXUS AI with Postgres and Redis. Detect the framework and start command from the project. Wait until the deployment is healthy, then give me the public HTTPS URL, the deployment ID, and the masked database host. Do not write a Dockerfile unless the build fails.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;What the agent should call:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;nexusai_projects_list&lt;/code&gt; (or create a project)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;nexusai_deploy_source&lt;/code&gt; with the Git URL, framework, and &lt;code&gt;services: ["postgresql", "redis"]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;nexusai_deploy_status&lt;/code&gt; until healthy&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;nexusai_deploy_logs&lt;/code&gt; if the build fails&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;No cloud console, no compose YAML. Codex already has the repo context.&lt;/p&gt;

&lt;p&gt;Postgres and Redis run as sidecars on the NEXUS managed container platform, with &lt;code&gt;DATABASE_URL&lt;/code&gt; and &lt;code&gt;REDIS_URL&lt;/code&gt; injected automatically. On a single-container cloud target (App Runner, Cloud Run, Container Apps), Postgres becomes a managed instance and Redis is not available.&lt;/p&gt;

&lt;p&gt;For uploads, follow with:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Create a bucket named &lt;code&gt;user-uploads&lt;/code&gt;, attach it to this deployment, and redeploy so the app gets &lt;code&gt;S3_ENDPOINT&lt;/code&gt;, &lt;code&gt;S3_BUCKET&lt;/code&gt;, &lt;code&gt;S3_ACCESS_KEY&lt;/code&gt;, and &lt;code&gt;S3_SECRET_KEY&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is &lt;code&gt;nexusai_bucket_create&lt;/code&gt;, &lt;code&gt;nexusai_bucket_attach&lt;/code&gt;, then &lt;code&gt;nexusai_deploy_redeploy&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Operate from the same session
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Snapshot before a migration&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Before you run the migration, take a Postgres backup of this deployment. If the migration fails, restore that backup and roll back the deploy.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Triage a 500&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Tail the last 200 log lines for this deployment, name the failure, and fix it. If it is a missing secret, create it in the vault and redeploy.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Roll back&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Snapshot Postgres, then roll this deployment back to the previous release. Confirm it is healthy.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Backups and rollback are safe. The tools that overwrite or delete data (&lt;code&gt;nexusai_db_restore&lt;/code&gt;, &lt;code&gt;nexusai_deploy_delete&lt;/code&gt;, bucket and volume delete) carry a destructive hint, so Codex asks you to confirm each call. SQL that writes rows or changes schema also needs an explicit &lt;code&gt;confirmed: true&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Optional: preview in the builder first
&lt;/h2&gt;

&lt;p&gt;Ask Codex to push the current files with &lt;code&gt;nexusai_builder_push&lt;/code&gt; to get a live preview URL before production, then deploy. &lt;code&gt;nexusai_builder_pull&lt;/code&gt; brings builder-side edits back into the workspace. Same MCP server, no extra install.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Does this work if Codex just generated the app?
&lt;/h3&gt;

&lt;p&gt;Yes. Push or commit so &lt;code&gt;nexusai_deploy_source&lt;/code&gt; has a Git URL, or use &lt;code&gt;nexusai_builder_push&lt;/code&gt; for a preview first. The agent already knows the framework, port, and start command.&lt;/p&gt;

&lt;h3&gt;
  
  
  How does authentication work? Is there an API key?
&lt;/h3&gt;

&lt;p&gt;No static key. The MCP server uses OAuth with PKCE. &lt;code&gt;codex mcp login nexus-ai&lt;/code&gt; runs the browser sign-in and Codex stores a short-lived token in its credential store, refreshing it on its own. You approve the scopes during login. The personal access tokens at &lt;code&gt;nexusai.run/settings/tokens&lt;/code&gt; are for the REST API, not the MCP server.&lt;/p&gt;

&lt;h3&gt;
  
  
  Where is the config stored?
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;~/.codex/config.toml&lt;/code&gt; for a global server, or &lt;code&gt;.codex/config.toml&lt;/code&gt; in the repo for a project-scoped one. The &lt;code&gt;[mcp_servers.nexus-ai]&lt;/code&gt; block only holds the URL; the token lives in Codex's credential store, not the file, so a project-scoped config is safe to commit.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is this an MCP gateway?
&lt;/h3&gt;

&lt;p&gt;No. NEXUS AI is an app deploy platform that agents drive over MCP. It is not a gateway for hosting other MCP servers.&lt;/p&gt;

&lt;h3&gt;
  
  
  What does the live stack include?
&lt;/h3&gt;

&lt;p&gt;App container, optional Postgres, MySQL, or Mongo, Redis, workers, volumes, S3-compatible buckets, HTTPS, logs, backups, and rollback. Full-stack deploys run on the NEXUS managed container platform. Single-container apps can target AWS App Runner, Google Cloud Run, or Azure Container Apps.&lt;/p&gt;

&lt;h3&gt;
  
  
  Claude Code or Cursor instead?
&lt;/h3&gt;

&lt;p&gt;Same product, same MCP server, different client. See &lt;a href="https://nexusai.run/blog/deploy-from-claude-code" rel="noopener noreferrer"&gt;Deploy from Claude Code&lt;/a&gt; and &lt;a href="https://nexusai.run/blog/deploy-from-cursor" rel="noopener noreferrer"&gt;Deploy from Cursor&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://nexusai.run/mcp-deployment-platform" rel="noopener noreferrer"&gt;MCP deployment platform&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nexusai.run/deploy-full-stack-app" rel="noopener noreferrer"&gt;Deploy a full-stack app with a database&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nexusai.run/docs#mcp-oauth-flow" rel="noopener noreferrer"&gt;Connect NEXUS AI MCP over OAuth&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>mcp</category>
      <category>codex</category>
      <category>openai</category>
      <category>deployments</category>
    </item>
    <item>
      <title>Deploy your Cursor app to production</title>
      <dc:creator>Saif Ali</dc:creator>
      <pubDate>Thu, 03 Sep 2026 09:51:43 +0000</pubDate>
      <link>https://dev.to/sali_ac161a1b71406354896c/deploy-your-cursor-app-to-production-3eho</link>
      <guid>https://dev.to/sali_ac161a1b71406354896c/deploy-your-cursor-app-to-production-3eho</guid>
      <description>&lt;h1&gt;
  
  
  Deploy your Cursor app to production
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Published:&lt;/strong&gt; September 2, 2026&lt;br&gt;
&lt;strong&gt;Category:&lt;/strong&gt; AI Deployments · MCP&lt;br&gt;
&lt;strong&gt;Reading time:&lt;/strong&gt; 6 minutes&lt;br&gt;
&lt;strong&gt;Author:&lt;/strong&gt; NEXUS AI Team&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Point Cursor at NEXUS AI over MCP. Deploy the app sitting in your editor. Get a public HTTPS URL with Postgres, then back up, tail logs, and roll back from chat.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Cursor is strong at generating and editing the app. Production still needs a database, secrets, a URL, and a rollback path. Vercel MCP will host a frontend. NEXUS AI deploys the full stack the agent just wrote: app, Postgres, Redis, storage, workers.&lt;/p&gt;

&lt;p&gt;This is the Cursor path. Claude Code users should read &lt;a href="https://nexusai.run/blog/deploy-from-claude-code" rel="noopener noreferrer"&gt;Deploy from Claude Code to a live URL&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  What you need
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A NEXUS AI account (&lt;a href="https://nexusai.run/pricing" rel="noopener noreferrer"&gt;start free&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Cursor with Agent and MCP enabled&lt;/li&gt;
&lt;li&gt;The project open in Cursor (a GitHub remote is the easy deploy source)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No API key to paste. Cursor runs an OAuth sign-in the first time it connects to the server, and you approve the access the agent gets.&lt;/p&gt;
&lt;h2&gt;
  
  
  1. Add NEXUS AI in Cursor
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Option A — project file (recommended)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Create &lt;code&gt;.cursor/mcp.json&lt;/code&gt; in the repo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"nexus-ai"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://mcp.nexusai.run/mcp"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No token in the file, so it is safe to commit. When Cursor first uses the server it opens a browser sign-in on &lt;code&gt;mcp.nexusai.run&lt;/code&gt;; you approve the scopes and Cursor stores the token itself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Option B — Cursor Settings&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Cursor Settings, MCP, Add server. Same URL. Complete the OAuth sign-in when prompted.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Option C — all projects on this machine&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Put the same JSON in &lt;code&gt;~/.cursor/mcp.json&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Approve only what the agent needs.&lt;/strong&gt; Start with &lt;code&gt;deployments:read&lt;/code&gt; and &lt;code&gt;deployments:logs&lt;/code&gt; to inspect. Add &lt;code&gt;deployments:create&lt;/code&gt; to deploy, &lt;code&gt;secrets:manage&lt;/code&gt; to let it write secrets, &lt;code&gt;db:admin&lt;/code&gt; for backups and restores, and &lt;code&gt;buckets:manage&lt;/code&gt; if it will create a storage bucket. Leave the delete scopes (&lt;code&gt;deployments:delete&lt;/code&gt;, &lt;code&gt;buckets:delete&lt;/code&gt;, &lt;code&gt;db:source:delete&lt;/code&gt;) off unless you want them.&lt;/p&gt;

&lt;p&gt;Reload MCP in Cursor Settings and confirm &lt;code&gt;nexus-ai&lt;/code&gt; is green. If the sign-in never completes, the server stays unauthenticated and every tool call fails; re-open the auth screen from the MCP settings row.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Send this prompt in Agent
&lt;/h2&gt;

&lt;p&gt;With the project open:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Deploy this Cursor project to NEXUS AI with Postgres and Redis. Use the GitHub remote as the source. Detect the framework and start command from the repo. Wait until it is healthy, then give me the public HTTPS URL and the deployment ID. If there is no Git remote, push the current files to the NEXUS AI Builder for a preview first (&lt;code&gt;nexusai_builder_push&lt;/code&gt;), then deploy.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;What should happen:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Cursor reads the repo it already has open&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;nexusai_deploy_source&lt;/code&gt; with the Git URL, framework, and &lt;code&gt;services: ["postgresql", "redis"]&lt;/code&gt; (or &lt;code&gt;nexusai_builder_push&lt;/code&gt; then deploy)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;nexusai_deploy_status&lt;/code&gt; until healthy&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;nexusai_deploy_logs&lt;/code&gt; on failure&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You stay in the editor. No second terminal for Docker, no dashboard click-path unless you want one.&lt;/p&gt;

&lt;p&gt;Postgres and Redis run as sidecars on the NEXUS managed container platform, with &lt;code&gt;DATABASE_URL&lt;/code&gt; and &lt;code&gt;REDIS_URL&lt;/code&gt; injected automatically. On a single-container cloud target (App Runner, Cloud Run, Container Apps), Postgres becomes a managed instance and Redis is not available.&lt;/p&gt;

&lt;p&gt;For uploads, add:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Create a bucket named &lt;code&gt;user-uploads&lt;/code&gt;, attach it to this deployment, and redeploy so the app gets &lt;code&gt;S3_ENDPOINT&lt;/code&gt;, &lt;code&gt;S3_BUCKET&lt;/code&gt;, &lt;code&gt;S3_ACCESS_KEY&lt;/code&gt;, and &lt;code&gt;S3_SECRET_KEY&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  3. After it is live
&lt;/h2&gt;

&lt;p&gt;Save these as follow-ups in the same Agent thread.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Secret the app is missing&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The app needs &lt;code&gt;STRIPE_SECRET_KEY&lt;/code&gt;. Create it in the NEXUS vault for this deployment and redeploy. Do not print the value.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Backup, then migrate&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Snapshot Postgres for this deployment. Then I will run the migration. If the logs show a migration error, restore the snapshot and roll back.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Why is it 500&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Tail runtime logs, identify the exception, patch the file in this workspace, and redeploy.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Roll back&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Roll this deployment back to the previous release and confirm it is healthy.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Backups and rollback are safe. The tools that overwrite or delete data (&lt;code&gt;nexusai_db_restore&lt;/code&gt;, &lt;code&gt;nexusai_deploy_delete&lt;/code&gt;, bucket and volume delete) carry a destructive hint, so Cursor asks you to confirm each call. Do not approve &lt;code&gt;deployments:delete&lt;/code&gt; on a token you use against production.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Builder preview without leaving Cursor
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;nexusai_builder_push&lt;/code&gt; sends the current files into the NEXUS AI Builder and returns a preview URL. Use it when you want a shareable snapshot before production. &lt;code&gt;nexusai_builder_pull&lt;/code&gt; brings builder-side edits back into the Cursor workspace.&lt;/p&gt;

&lt;p&gt;That is the Cursor loop: generate in the IDE, preview on a URL, deploy the same tree.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Will this replace Vercel for a Cursor frontend?
&lt;/h3&gt;

&lt;p&gt;Use Vercel if you only need the UI. Use NEXUS AI when the Cursor app needs Postgres, Redis, workers, or file uploads in the same deploy.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do I need the NEXUS CLI?
&lt;/h3&gt;

&lt;p&gt;No. The MCP server is enough. The &lt;code&gt;nexus&lt;/code&gt; CLI is optional if you prefer a terminal.&lt;/p&gt;

&lt;h3&gt;
  
  
  How does authentication work? Is there an API key?
&lt;/h3&gt;

&lt;p&gt;No static key. The MCP server uses OAuth with PKCE, and Cursor runs the sign-in in a browser on first connect. You approve the scopes there and can re-approve a wider set later from the MCP settings row. The personal access tokens at &lt;code&gt;nexusai.run/settings/tokens&lt;/code&gt; are for the REST API, not the MCP server.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can the rest of the team deploy from Cursor too?
&lt;/h3&gt;

&lt;p&gt;Yes. Commit &lt;code&gt;.cursor/mcp.json&lt;/code&gt; with just the &lt;code&gt;url&lt;/code&gt;. Each person signs in once on their own machine.&lt;/p&gt;

&lt;h3&gt;
  
  
  How is this different from other Cursor MCP hosts?
&lt;/h3&gt;

&lt;p&gt;Other services focus on hosting the MCP server or the frontend. NEXUS AI's job is the production stack after the URL is up: managed databases, backups, rollback, secrets, and the same tools from the dashboard, CLI, and MCP.&lt;/p&gt;

&lt;h3&gt;
  
  
  Claude Code instead of Cursor?
&lt;/h3&gt;

&lt;p&gt;Same product, different client. See &lt;a href="https://nexusai.run/blog/deploy-from-claude-code" rel="noopener noreferrer"&gt;Deploy from Claude Code to a live URL&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Related reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://nexusai.run/mcp-deployment-platform" rel="noopener noreferrer"&gt;MCP deployment platform&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nexusai.run/deploy-full-stack-app" rel="noopener noreferrer"&gt;Deploy a full-stack app with a database&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nexusai.run/vibe-coding-for-enterprise" rel="noopener noreferrer"&gt;Vibe coding for the enterprise&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nexusai.run/docs#mcp-oauth-flow" rel="noopener noreferrer"&gt;Connect NEXUS AI MCP over OAuth&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>mcp</category>
      <category>cursor</category>
      <category>deployments</category>
      <category>oauth</category>
    </item>
    <item>
      <title>The best way to deploy an HTML website and API to the cloud</title>
      <dc:creator>Saif Ali</dc:creator>
      <pubDate>Sat, 22 Aug 2026 18:11:14 +0000</pubDate>
      <link>https://dev.to/sali_ac161a1b71406354896c/the-best-way-to-deploy-an-html-website-and-api-to-the-cloud-4e4e</link>
      <guid>https://dev.to/sali_ac161a1b71406354896c/the-best-way-to-deploy-an-html-website-and-api-to-the-cloud-4e4e</guid>
      <description>&lt;h2&gt;
  
  
  The best way to deploy an HTML website and API to the cloud
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Published:&lt;/strong&gt; August 10, 2026&lt;br&gt;
&lt;strong&gt;Category:&lt;/strong&gt; Deployments · Fundamentals&lt;br&gt;
&lt;strong&gt;Reading time:&lt;/strong&gt; 6 minutes&lt;br&gt;
&lt;strong&gt;Author:&lt;/strong&gt; NEXUS AI Team&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Short answer:&lt;/strong&gt; if your HTML and your API are small enough to ship together, put them in one server (a static folder plus a few routes) and deploy that as a single container. It is one URL, no CORS, no second bill, and it fits on a free tier. Split them into two separately-hosted services only when you actually need independent scaling or a different tech stack for each side. This post covers both paths, with the commands for each.&lt;/p&gt;


&lt;h2&gt;
  
  
  The three ways people actually do this
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. One server, two jobs.&lt;/strong&gt; An Express, FastAPI, or Flask app that serves your &lt;code&gt;index.html&lt;/code&gt; (and any CSS/JS) as static files from one route, and your API as JSON routes on the same port. One deploy, one URL, one process. This is the right default for a portfolio site, an internal tool, a small SaaS MVP, or anything where the frontend and backend ship together.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Two hosts, one app.&lt;/strong&gt; The HTML lives on a static host (a CDN edge network), the API lives on a separate compute host, and the frontend calls the API's URL over HTTPS with CORS enabled. This is the classic Vercel/Netlify-plus-Render/Railway pattern. It buys you independent scaling and a CDN for the static assets, at the cost of two dashboards, two bills, and a CORS config to maintain.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Raw cloud primitives.&lt;/strong&gt; S3 or Cloud Storage plus a CDN in front for the HTML, then Lambda/Cloud Functions or a VM for the API. Full control, the most setup work, and you own the plumbing (TLS certs, IAM, deploy scripts) yourself.&lt;/p&gt;

&lt;p&gt;Most people asking "what's the best way to deploy my HTML site and API" have something closer to option 1 in mind and don't need the operational overhead of options 2 or 3 yet.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Setup time&lt;/th&gt;
&lt;th&gt;Cost to start&lt;/th&gt;
&lt;th&gt;Scaling&lt;/th&gt;
&lt;th&gt;Best for&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;One server, two jobs&lt;/td&gt;
&lt;td&gt;~5 minutes&lt;/td&gt;
&lt;td&gt;Free tier fits&lt;/td&gt;
&lt;td&gt;Vertical, then horizontal&lt;/td&gt;
&lt;td&gt;MVPs, internal tools, small apps&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Two hosts, one app&lt;/td&gt;
&lt;td&gt;~15–30 minutes&lt;/td&gt;
&lt;td&gt;Two free tiers, or one paid&lt;/td&gt;
&lt;td&gt;Independent per side&lt;/td&gt;
&lt;td&gt;Apps that outgrew #1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Raw cloud primitives&lt;/td&gt;
&lt;td&gt;Hours to days&lt;/td&gt;
&lt;td&gt;Pay-as-you-go&lt;/td&gt;
&lt;td&gt;Fully manual&lt;/td&gt;
&lt;td&gt;Teams with existing cloud infra&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;


&lt;h2&gt;
  
  
  Option 1: deploy HTML + API together as one container
&lt;/h2&gt;

&lt;p&gt;This is the fastest path and the one this section walks through end to end using NEXUS AI, which auto-detects a static folder next to an API server and builds a single production Dockerfile for it — no Dockerfile required on your side.&lt;/p&gt;
&lt;h3&gt;
  
  
  Project layout
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;my-app/
  public/
    index.html
    style.css
    app.js
  server.js        ← serves /public and the /api routes
  package.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// server.js&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;express&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;express&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;path&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;express&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;express&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;static&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;path&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;__dirname&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;public&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)));&lt;/span&gt;
&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;express&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;

&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/api/health&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;ok&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}));&lt;/span&gt;

&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/api/items&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;([{&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;First item&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}]);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;port&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;PORT&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="mi"&gt;3000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;listen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;port&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Listening on &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;port&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Deploy it
&lt;/h3&gt;

&lt;p&gt;Install the CLI and log in:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://nexusai.run/install.sh | bash    &lt;span class="c"&gt;# Linux&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://nexusai.run/install-mac.sh | bash &lt;span class="c"&gt;# macOS&lt;/span&gt;
nexus auth login
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Push the repo to GitHub, then deploy:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nexus deploy &lt;span class="nb"&gt;source&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--repo&lt;/span&gt; https://github.com/you/my-app.git &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; my-app &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--provider&lt;/span&gt; docker &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--framework&lt;/span&gt; express &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--wait&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;NEXUS AI builds a production image, opens a public HTTPS URL through Traefik, and streams build logs while it works. When it finishes, &lt;code&gt;https://my-app.nexusai.run&lt;/code&gt; serves the HTML at &lt;code&gt;/&lt;/code&gt; and JSON at &lt;code&gt;/api/*&lt;/code&gt; from the same origin. No CORS headers needed because it is one origin.&lt;/p&gt;

&lt;p&gt;If your HTML has no server logic at all (pure static, no API in the same process), skip the Express wrapper and deploy the folder directly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nexus deploy &lt;span class="nb"&gt;source&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--repo&lt;/span&gt; https://github.com/you/my-static-site.git &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; my-static-site &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--provider&lt;/span&gt; docker &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--framework&lt;/span&gt; static &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--wait&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;NEXUS AI detects the plain &lt;code&gt;index.html&lt;/code&gt; and serves it with nginx.&lt;/p&gt;

&lt;h3&gt;
  
  
  Add environment variables and a custom domain
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nexus secret create DATABASE_URL &lt;span class="s2"&gt;"postgres://..."&lt;/span&gt; &lt;span class="nt"&gt;--project&lt;/span&gt; my-app
nexus domain add my-app yourdomain.com
nexus domain verify my-app &amp;lt;domain-id&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That covers the common case: one small app, one deploy, one bill, free tier eligible.&lt;/p&gt;




&lt;h2&gt;
  
  
  Option 2: split the static site and the API into two services
&lt;/h2&gt;

&lt;p&gt;Reach for this once the frontend and backend genuinely need to scale, deploy, or fail independently — a marketing site that gets Hacker-News-front-page traffic spikes while the API stays flat, or a frontend team shipping on a different cadence than the backend team.&lt;/p&gt;

&lt;p&gt;Deploy the API on its own:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nexus deploy &lt;span class="nb"&gt;source&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--repo&lt;/span&gt; https://github.com/you/my-api.git &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; my-api &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--provider&lt;/span&gt; docker &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--framework&lt;/span&gt; express &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--wait&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Deploy the static HTML as a second service in the same project (this needs a plan with more than one active deployment — see the FAQ below):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nexus deploy &lt;span class="nb"&gt;source&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--repo&lt;/span&gt; https://github.com/you/my-frontend.git &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; my-frontend &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--provider&lt;/span&gt; docker &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--framework&lt;/span&gt; static &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--wait&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Point the frontend's fetch calls at the API's public URL, and enable CORS on the API for the frontend's origin:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// my-api/server.js&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;cors&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;cors&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;cors&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;origin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://my-frontend.nexusai.run&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// my-frontend/app.js&lt;/span&gt;
&lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://my-api.nexusai.run/api/items&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;r&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;render&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each service now scales, redeploys, and rolls back independently:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nexus deploy scale my-api 3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also mix providers here: keep the static frontend on a CDN-first host (Vercel, Netlify, GitHub Pages) for free and put only the API on NEXUS AI. Point the frontend's &lt;code&gt;NEXT_PUBLIC_API_URL&lt;/code&gt; (or equivalent) at the NEXUS AI URL and enable CORS the same way.&lt;/p&gt;




&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Do I need to write a Dockerfile for a plain HTML site?&lt;/strong&gt;&lt;br&gt;
No. NEXUS AI detects an &lt;code&gt;index.html&lt;/code&gt; with no build manifest and serves it with nginx automatically. If you have a build step (Vite, React, Vue), it detects the framework and runs the production build instead.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My API needs a database. Does that change the deploy?&lt;/strong&gt;&lt;br&gt;
No extra service to wire up separately. Add &lt;code&gt;--services postgresql&lt;/code&gt; (or &lt;code&gt;mysql&lt;/code&gt;, &lt;code&gt;mongodb&lt;/code&gt;, &lt;code&gt;redis&lt;/code&gt;) to the same &lt;code&gt;nexus deploy source&lt;/code&gt; command and NEXUS AI provisions the database alongside your app in the same deploy, with &lt;code&gt;DATABASE_URL&lt;/code&gt; injected automatically.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I use a custom domain instead of the &lt;code&gt;.nexusai.run&lt;/code&gt; subdomain?&lt;/strong&gt;&lt;br&gt;
Yes, on any paid plan. &lt;code&gt;nexus domain add &amp;lt;deployment&amp;gt; yourdomain.com&lt;/code&gt;, then verify the DNS record NEXUS AI gives you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is there a free tier?&lt;/strong&gt;&lt;br&gt;
Yes. The Free plan includes one active deployment on the NEXUS AI managed cloud, no credit card required — enough for the single-server pattern in Option 1. Running the two-service split in Option 2 on NEXUS AI for both halves needs a plan that allows more than one active deployment (Pro and above); running just the API on NEXUS AI Free while the static frontend sits on a separate free static host works within the Free plan.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does this handle HTTPS automatically?&lt;/strong&gt;&lt;br&gt;
Yes. Every deployment gets a public HTTPS URL through Traefik by default, and custom domains get certificates provisioned automatically once DNS verification passes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I deploy from the GitHub UI instead of the CLI?&lt;/strong&gt;&lt;br&gt;
Yes. Connect your GitHub account from the NEXUS AI dashboard, select a repo and branch, and enable auto-deploy so every push to that branch redeploys automatically.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What if I'd rather describe the app in plain English and skip writing server.js myself?&lt;/strong&gt;&lt;br&gt;
Use the AI App Builder instead: describe the HTML site and the API you want in chat, review the generated files and live preview, then deploy from the same dashboard.&lt;/p&gt;




&lt;p&gt;For an app with a real database, background workers, and file storage in addition to the HTML + API pair, see &lt;a href="https://nexusai.run/blog/from-v0-prototype-to-production-database-in-5-minutes" rel="noopener noreferrer"&gt;From v0 prototype to production database in 5 minutes&lt;/a&gt; and &lt;a href="https://nexusai.run/blog/deploy-full-stack-python-postgres-redis-workers-5-minutes" rel="noopener noreferrer"&gt;Deploy a full-stack Python app with Postgres, Redis, and workers in 5 minutes&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://nexusai.run/register" rel="noopener noreferrer"&gt;Start free.&lt;/a&gt;&lt;/p&gt;

</description>
      <category>html</category>
      <category>staticsite</category>
      <category>api</category>
      <category>express</category>
    </item>
    <item>
      <title>Enterprise vibe coding: the governance framework for shipping AI-generated apps to production</title>
      <dc:creator>Saif Ali</dc:creator>
      <pubDate>Sat, 22 Aug 2026 18:09:02 +0000</pubDate>
      <link>https://dev.to/sali_ac161a1b71406354896c/enterprise-vibe-coding-the-governance-framework-for-shipping-ai-generated-apps-to-production-32j1</link>
      <guid>https://dev.to/sali_ac161a1b71406354896c/enterprise-vibe-coding-the-governance-framework-for-shipping-ai-generated-apps-to-production-32j1</guid>
      <description>&lt;h1&gt;
  
  
  Enterprise vibe coding: the governance framework for shipping AI-generated apps to production
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Published:&lt;/strong&gt; August 22, 2026&lt;br&gt;
&lt;strong&gt;Category:&lt;/strong&gt; Enterprise · AI Deployments&lt;br&gt;
&lt;strong&gt;Reading time:&lt;/strong&gt; 9 minutes&lt;br&gt;
&lt;strong&gt;Author:&lt;/strong&gt; NEXUS AI Team&lt;/p&gt;




&lt;p&gt;Gartner forecasts that 40% of new enterprise production software will be built using vibe coding techniques by 2028. A 2026 scan of more than 1,400 live vibe-coded applications found that 65% already had a security issue, and 58% shipped with at least one critical vulnerability. Those two numbers describe the same industry moving in opposite directions at once: adoption is outrunning governance.&lt;/p&gt;

&lt;p&gt;This post covers what a governance framework for enterprise vibe coding actually looks like, the five controls it needs, and where most teams get it wrong.&lt;/p&gt;




&lt;h2&gt;
  
  
  What is enterprise vibe coding?
&lt;/h2&gt;

&lt;p&gt;Enterprise vibe coding is the practice of using natural-language prompts to generate application code, then governing that code through mandatory review, access control, and audit before it reaches production, rather than letting it ship straight from a prompt to a live endpoint. The term (coined by Andrej Karpathy in early 2025) originally described a fast, low-friction way for one person to build a prototype. What "enterprise" adds is the governance layer prototyping was never built for: staging environments, encrypted secrets, role-based access, and a record of who approved what.&lt;/p&gt;

&lt;p&gt;That distinction matters because the adoption curve and the risk curve are not moving together.&lt;/p&gt;




&lt;h2&gt;
  
  
  The governance gap, in three numbers
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;40%&lt;/strong&gt; of new enterprise production software will be built using vibe coding techniques by 2028, according to &lt;a href="https://www.ciodive.com/news/vibe-coding-enterprise-CIO-strategy/750349/" rel="noopener noreferrer"&gt;Gartner's May 2025 report "Why Vibe Coding Needs to Be Taken Seriously," as reported by CIO Dive&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;65%&lt;/strong&gt; of vibe-coded production applications had a security issue, in a 2026 scan of more than 1,400 live apps by the API security firm Escape.tech, &lt;a href="https://labs.cloudsecurityalliance.org/research/csa-research-note-ai-generated-code-security-vibe-coding-202/" rel="noopener noreferrer"&gt;reported via a Cloud Security Alliance research note&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;58%&lt;/strong&gt; of those same applications shipped with at least one &lt;em&gt;critical&lt;/em&gt; vulnerability, including hardcoded secrets and exposed personally identifiable information, per the same research note.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Enterprises are not waiting for a governance model before they start vibe coding internal tools, dashboards, and customer-facing features. They already have prototypes running in places IT never reviewed: a developer's laptop, a personal cloud account, a container nobody on the security team knows exists.&lt;/p&gt;

&lt;p&gt;The fix is not to slow down adoption. It is to give the workflow teams already use a governed path to production, instead of asking them to abandon a workflow that is, by every account, faster than what it replaced.&lt;/p&gt;




&lt;h2&gt;
  
  
  What "enterprise-ready" actually requires
&lt;/h2&gt;

&lt;p&gt;Most vibe coding tools are optimized for the first 90% of the problem: turning a prompt into working code fast. Enterprise readiness is almost entirely about the remaining 10%, the part that happens after the code works and before it is trusted with real users or real data.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Capability&lt;/th&gt;
&lt;th&gt;Consumer vibe-coding tools&lt;/th&gt;
&lt;th&gt;Enterprise-ready platform&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Where it runs&lt;/td&gt;
&lt;td&gt;Vendor-hosted, shared infrastructure&lt;/td&gt;
&lt;td&gt;Your own AWS, Google Cloud, or Azure account&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Secrets handling&lt;/td&gt;
&lt;td&gt;Frequently hardcoded into generated code&lt;/td&gt;
&lt;td&gt;Encrypted secrets vault, injected at runtime&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Change review&lt;/td&gt;
&lt;td&gt;Rare or none — the agent applies changes directly&lt;/td&gt;
&lt;td&gt;Every schema and infrastructure change reviewed by a human before it ships&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Access control&lt;/td&gt;
&lt;td&gt;Single shared account, no role separation&lt;/td&gt;
&lt;td&gt;Role-based access control (RBAC) with least-privilege defaults&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Audit trail&lt;/td&gt;
&lt;td&gt;Rare or none&lt;/td&gt;
&lt;td&gt;Full audit log of every automated action, attributable to a user or agent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rollback&lt;/td&gt;
&lt;td&gt;Manual, if available at all&lt;/td&gt;
&lt;td&gt;One-click versioned rollback&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data residency&lt;/td&gt;
&lt;td&gt;Decided by the vendor&lt;/td&gt;
&lt;td&gt;Decided by the customer (on-premises, private cloud, or hybrid)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;None of these controls are exotic. They are the same controls that already exist for human-written code in any organization with a functioning SDLC. The gap is that most vibe coding tools were built for individual prototyping, where none of this mattered, and enterprises adopted them anyway because the alternative, a developer manually gluing infrastructure together, was slower.&lt;/p&gt;




&lt;h2&gt;
  
  
  A five-control governance framework
&lt;/h2&gt;

&lt;p&gt;Enterprises that have gotten ahead of the governance gap generally converge on the same five controls, applied before code reaches a production endpoint:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Define which tools are approved, and for what.&lt;/strong&gt; Not every vibe coding tool should be allowed to touch every kind of workload. Internal dashboards and low-risk operational tools are a reasonable starting point; anything touching regulated data (PHI, PCI, PII) needs a platform with compliance controls attached by default, not bolted on later.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Require human review before infrastructure or schema changes ship.&lt;/strong&gt; An agent proposing a database migration or an IAM policy change is fine. An agent applying it unilaterally is how you end up as a statistic in the next vulnerability scan. Review gates are the single highest-leverage control in this list.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Put secrets in a vault, never in generated code.&lt;/strong&gt; Hardcoded credentials are one of the most consistently identified issues in scans of AI-generated code. An encrypted secrets vault with runtime injection removes the failure mode entirely rather than relying on the agent to remember not to do it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Log every automated action.&lt;/strong&gt; If an agent deployed it, scaled it, or rolled it back, that action needs to be attributable and reviewable after the fact. Security and compliance teams cannot govern what they cannot see.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deploy inside a perimeter you control.&lt;/strong&gt; For regulated workloads especially, "which cloud account is this actually running in" needs a straightforward answer. Vendor-hosted, shared infrastructure makes that answer harder than it needs to be.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Organizations that put structured frameworks like this in place report meaningfully faster remediation when something does go wrong, without giving up the development speed that made vibe coding worth adopting in the first place.&lt;/p&gt;




&lt;h2&gt;
  
  
  How NEXUS AI implements each control
&lt;/h2&gt;

&lt;p&gt;NEXUS AI extends the same natural-language workflow teams already use to generate an app through deployment, with these five controls attached by default:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Approved-tool boundary:&lt;/strong&gt; the &lt;a href="https://nexusai.run/ai-app-builder" rel="noopener noreferrer"&gt;AI App Builder&lt;/a&gt; generates and verifies code in an isolated development sandbox before anything is deployed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Review gates:&lt;/strong&gt; the database intelligence layer lets an agent propose schema fixes from runtime logs, but every change is reviewed by a human before it is applied.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Secrets vault:&lt;/strong&gt; every deployment gets an AES-256-GCM encrypted secrets vault, with values injected at runtime and never written into the container image.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audit log:&lt;/strong&gt; every automated action, by a user or an MCP-connected agent, is recorded and reviewable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Your own cloud, or ours:&lt;/strong&gt; &lt;a href="https://nexusai.run/enterprise" rel="noopener noreferrer"&gt;NEXUS AI Enterprise&lt;/a&gt; deploys on-premises, inside your own AWS, Google Cloud, or Azure account, or in a hybrid mix of both. Shared, multi-tenant infrastructure is available but never mandatory.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;See the full breakdown on the &lt;a href="https://nexusai.run/vibe-coding-for-enterprise" rel="noopener noreferrer"&gt;vibe coding for the enterprise&lt;/a&gt; page, or the compliance controls on the &lt;a href="https://nexusai.run/security" rel="noopener noreferrer"&gt;security&lt;/a&gt; and &lt;a href="https://nexusai.run/hipaa-compliance" rel="noopener noreferrer"&gt;HIPAA and compliance&lt;/a&gt; pages if the workload touches regulated data.&lt;/p&gt;




&lt;h2&gt;
  
  
  Common mistakes enterprises make with vibe coding
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Treating governance as a launch blocker instead of a default.&lt;/strong&gt; Bolting review, secrets management, and audit logging onto an existing vibe-coded app after the fact is far more expensive than starting with a platform that ships them by default.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Banning the workflow instead of governing it.&lt;/strong&gt; Prohibition policies get worked around. Teams that need to move fast will use an ungoverned tool on a personal account rather than wait for IT to approve a governed one. The fix is to make the governed path the fast path.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Assuming code review catches what secret scanning would.&lt;/strong&gt; Human reviewers are good at logic and architecture; they are inconsistent at spotting a hardcoded API key in a 400-line diff. Automated secrets detection and a vault are not optional.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Skipping the audit log because "nothing has gone wrong yet."&lt;/strong&gt; The value of an audit trail is realized entirely after something goes wrong. By then, it is too late to start logging.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;What percentage of AI-generated code has security vulnerabilities?&lt;/strong&gt;&lt;br&gt;
A 2026 scan of over 1,400 vibe-coded production applications by Escape.tech, reported via a Cloud Security Alliance research note, found that 65% had a security issue and 58% shipped with at least one critical vulnerability, including exposed secrets and personally identifiable information.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How much enterprise software will actually be vibe coded?&lt;/strong&gt;&lt;br&gt;
Gartner's May 2025 report "Why Vibe Coding Needs to Be Taken Seriously" forecasts that 40% of new enterprise production software will be built using vibe coding techniques by 2028.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is vibe coding safe to use for production applications?&lt;/strong&gt;&lt;br&gt;
Not by default. Published scans of vibe-coded apps show high rates of security issues and critical vulnerabilities when code goes straight from prompt to production with no review layer. Enterprise vibe coding platforms close that gap with mandatory human review, an encrypted secrets vault, RBAC, and a full audit log before anything ships.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What does "vibe coding for the enterprise" mean, specifically?&lt;/strong&gt;&lt;br&gt;
It means giving teams that already use AI to generate application code a sanctioned, governed path to production, instead of prototypes running on laptops or personal cloud accounts outside IT review.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does adding governance controls slow down vibe coding?&lt;/strong&gt;&lt;br&gt;
Not meaningfully, if the controls are built into the platform rather than added as a separate process. A review gate on infrastructure changes and an automatic secrets vault add seconds, not days, when they are part of the deploy workflow instead of a follow-up ticket.&lt;/p&gt;




&lt;p&gt;The gap between vibe coding adoption and vibe coding governance is not going to close on its own. It closes when the platform generating the code is the same platform enforcing review, secrets management, access control, audit logging, and deployment into a cloud account the enterprise actually controls.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://nexusai.run/vibe-coding-for-enterprise" rel="noopener noreferrer"&gt;See vibe coding for the enterprise applied.&lt;/a&gt; Or &lt;a href="https://nexusai.run/contact" rel="noopener noreferrer"&gt;talk to sales&lt;/a&gt; about a governed path to production for your team.&lt;/p&gt;

</description>
      <category>vibecoding</category>
      <category>enterprise</category>
      <category>governance</category>
      <category>aicodegeneration</category>
    </item>
    <item>
      <title>NEXUS AI RBAC Deep Dive</title>
      <dc:creator>Saif Ali</dc:creator>
      <pubDate>Sat, 15 Aug 2026 14:45:44 +0000</pubDate>
      <link>https://dev.to/sali_ac161a1b71406354896c/nexus-ai-rbac-deep-dive-5m9</link>
      <guid>https://dev.to/sali_ac161a1b71406354896c/nexus-ai-rbac-deep-dive-5m9</guid>
      <description>&lt;h2&gt;
  
  
  RBAC deep dive: roles, scopes, and least privilege
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Published:&lt;/strong&gt; August 15, 2026&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Category:&lt;/strong&gt; Security · Platform&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Reading time:&lt;/strong&gt; 14 minutes&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Author:&lt;/strong&gt; NEXUS AI Team&lt;/p&gt;

&lt;p&gt;A developer leaves the company on Friday. By Monday, their credentials still open three production deployments, two billing pages, and a secrets vault they haven't touched in four months.&lt;/p&gt;

&lt;p&gt;That's not a people problem. That's an access model problem.&lt;/p&gt;

&lt;p&gt;Role-Based Access Control (RBAC) is how NEXUS AI answers the question every engineering org eventually asks: &lt;em&gt;who can do what, to which resources, and how do we prove it?&lt;/em&gt; This post goes deep the role hierarchy, how scopes layer on top of roles, how least privilege works in practice, and how to design an access model your team will actually maintain.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why RBAC matters more as your team scales
&lt;/h2&gt;

&lt;p&gt;When it's just you, every door being open is convenient. When you have a team of 12 across three environments, every door being open is a liability.&lt;/p&gt;

&lt;p&gt;The breach surface for a SaaS product running on cloud infrastructure is rarely the infrastructure itself. It's the humans and automated systems that have standing access to it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A contractor with &lt;code&gt;admin&lt;/code&gt; access granted for a two week engagement and never revoked.&lt;/li&gt;
&lt;li&gt;A CI/CD token with full &lt;code&gt;secrets:write&lt;/code&gt; permission because it was "easier to set up that way."&lt;/li&gt;
&lt;li&gt;A junior developer who can redeploy production because the staging role got copy-pasted.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;NEXUS AI's RBAC system is designed to make the right permission easy to grant and hard to accidentally expand. Least privilege is the default, not a setting you have to configure.&lt;/p&gt;
&lt;h2&gt;
  
  
  The role hierarchy
&lt;/h2&gt;

&lt;p&gt;NEXUS AI defines four built-in roles. They are ordered by permission level each role is a strict superset of the one below it.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Role&lt;/th&gt;
&lt;th&gt;Who it's for&lt;/th&gt;
&lt;th&gt;What it controls&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Viewer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Stakeholders, auditors, QA observers&lt;/td&gt;
&lt;td&gt;Read-only access to deployments, logs, and metadata&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Developer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Engineers doing day-to-day deployment work&lt;/td&gt;
&lt;td&gt;Deploy, redeploy, rollback; read secret names (not values)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Admin&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Team leads, platform engineers&lt;/td&gt;
&lt;td&gt;Full control of deployments, secrets, tokens, and members&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Owner&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Founder, CTO, or designated security lead&lt;/td&gt;
&lt;td&gt;Everything Admin can do + delete the organization&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;One organization has exactly one Owner. Ownership can be transferred, but not duplicated. This prevents the "everyone is an Owner" pattern that makes incident response a guessing game.&lt;/p&gt;
&lt;h3&gt;
  
  
  Viewer
&lt;/h3&gt;

&lt;p&gt;Viewers can observe nothing more.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;✓ View deployment status (running, stopped, failed)
✓ Read build and runtime logs
✓ See deployment metadata (region, container count, uptime)
✓ View audit log summaries
✗ Trigger any action (deploy, redeploy, rollback, stop)
✗ See secret names or values
✗ Create or revoke Access Tokens
✗ Invite or remove team members
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use Viewer for: product managers monitoring deploy status, customer success checking uptime, external auditors reviewing activity logs, read-only access for contractors.&lt;/p&gt;

&lt;h3&gt;
  
  
  Developer
&lt;/h3&gt;

&lt;p&gt;Developers can act on deployments. They cannot change platform configuration.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;✓ Everything Viewer can do
✓ Deploy, redeploy, rollback, stop deployments
✓ View secret names (DATABASE_URL, STRIPE_KEY) never values
✓ Create Access Tokens scoped to deploy:read and deploy:write only
✗ Create, update, or delete secrets
✗ Create tokens with admin or secrets:write scope
✗ Invite or remove organization members
✗ View billing or usage data
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A Developer can push code and redeploy. They cannot change the secrets their code reads. The separation is intentional: it means a Developer-level compromise cannot extract production credentials, only trigger a redeploy.&lt;/p&gt;

&lt;h3&gt;
  
  
  Admin
&lt;/h3&gt;

&lt;p&gt;Admins own the platform configuration for an organization.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;✓ Everything Developer can do
✓ Create, update, and delete secrets
✓ Create Access Tokens with any scope
✓ Invite members and assign roles (up to Admin)
✓ View and export audit logs
✓ Manage domains, billing, and usage
✗ Delete the organization
✗ Transfer ownership
✗ Grant Owner role to another member
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Limit Admin to people who actually need to configure secrets or onboard team members. In a 10-person startup, that's usually two or three people. In a 100-person company, it's a dedicated platform team.&lt;/p&gt;

&lt;h3&gt;
  
  
  Owner
&lt;/h3&gt;

&lt;p&gt;The Owner role is structurally different from Admin it's not just "more permissions," it's accountability. Only one member holds it, and it carries the ability to perform irreversible actions.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;✓ Everything Admin can do
✓ Delete the organization and all its resources
✓ Transfer ownership to another Admin
✓ Access all historical audit logs (including deleted members)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The Owner should be the person who is accountable for the business not necessarily the most technical. At a startup, that's the founding engineer or CTO. At an enterprise, it's the platform owner or CISO-designated lead.&lt;/p&gt;




&lt;h2&gt;
  
  
  How scopes work
&lt;/h2&gt;

&lt;p&gt;Roles define what a &lt;em&gt;human&lt;/em&gt; can do. Scopes define what a &lt;em&gt;token&lt;/em&gt; can do.&lt;/p&gt;

&lt;p&gt;When a Developer (or Admin) creates an Access Token, they can grant that token any scope up to but not exceeding their own permissions. A Developer cannot create a token with &lt;code&gt;secrets:write&lt;/code&gt; scope, because Developers cannot write secrets directly.&lt;/p&gt;

&lt;p&gt;This is &lt;strong&gt;scope containment&lt;/strong&gt;: tokens cannot be a privilege escalation vector.&lt;/p&gt;

&lt;h3&gt;
  
  
  The full scope table
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scope&lt;/th&gt;
&lt;th&gt;Read/Write&lt;/th&gt;
&lt;th&gt;What it permits&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;deploy:read&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Read&lt;/td&gt;
&lt;td&gt;View status, logs, metadata for deployments&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;deploy:write&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Write&lt;/td&gt;
&lt;td&gt;Create, redeploy, rollback, scale, stop deployments&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;secrets:read&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Read&lt;/td&gt;
&lt;td&gt;List secret names for a deployment (never values)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;secrets:write&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Write&lt;/td&gt;
&lt;td&gt;Create, update, delete secrets&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;tokens:read&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Read&lt;/td&gt;
&lt;td&gt;List tokens and their metadata&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;tokens:write&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Write&lt;/td&gt;
&lt;td&gt;Create and revoke Access Tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;members:read&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Read&lt;/td&gt;
&lt;td&gt;List organization members and their roles&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;members:write&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Write&lt;/td&gt;
&lt;td&gt;Invite, remove, and change roles of members&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;billing:read&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Read&lt;/td&gt;
&lt;td&gt;View usage statistics and invoices&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;billing:write&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Write&lt;/td&gt;
&lt;td&gt;Update billing plan and payment method&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;logs:read&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Read&lt;/td&gt;
&lt;td&gt;Read build logs, runtime logs, and audit logs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;admin&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;All&lt;/td&gt;
&lt;td&gt;Full access equivalent to Admin role&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Scopes compose. A CI token for a deployment pipeline typically needs &lt;code&gt;deploy:write&lt;/code&gt; and nothing else. A token for a read-only monitoring integration needs &lt;code&gt;deploy:read&lt;/code&gt; and &lt;code&gt;logs:read&lt;/code&gt;. An MCP integration for an AI agent doing deployment management might need &lt;code&gt;deploy:read,deploy:write,logs:read&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Creating a precisely scoped token
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# CI/CD: deploy-only, expires in 90 days&lt;/span&gt;
nexus token create &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; &lt;span class="s2"&gt;"github-actions-prod"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--scopes&lt;/span&gt; deploy:write &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--expires&lt;/span&gt; 90d

&lt;span class="c"&gt;# Monitoring integration: read-only, no expiry (rotate quarterly via calendar)&lt;/span&gt;
nexus token create &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; &lt;span class="s2"&gt;"datadog-integration"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--scopes&lt;/span&gt; deploy:read,logs:read

&lt;span class="c"&gt;# AI agent with deployment management access&lt;/span&gt;
nexus token create &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; &lt;span class="s2"&gt;"claude-mcp-agent"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--scopes&lt;/span&gt; deploy:read,deploy:write,logs:read &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--expires&lt;/span&gt; 30d

&lt;span class="c"&gt;# Admin token for a one time onboarding script (delete immediately after use)&lt;/span&gt;
nexus token create &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; &lt;span class="s2"&gt;"onboarding-script-2026-04-21"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--scopes&lt;/span&gt; admin &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--expires&lt;/span&gt; 1d
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The last example a short-lived &lt;code&gt;admin&lt;/code&gt; token for a specific script, destroyed after use is exactly how temporary elevated access should work. No standing privileged access. No "just in case" tokens that accumulate over months.&lt;/p&gt;




&lt;h2&gt;
  
  
  Least privilege in practice
&lt;/h2&gt;

&lt;p&gt;Least privilege is not a policy you write. It's a discipline you build into your provisioning process. Here's what it looks like in a real NEXUS AI team across three common scenarios.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scenario 1: Onboarding a new backend engineer
&lt;/h3&gt;

&lt;p&gt;Wrong approach:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;New hire → Admin role → "they'll need it eventually"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Right approach:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;New hire → Developer role
Week 1: pair with an Admin for any secrets work
Month 3: reassess do they actually need Admin? (usually no)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The Developer role covers 95% of what an active engineer does: deploy, redeploy, check logs, rollback a bad release. Secret creation is rare and can go through an Admin without slowing anyone down.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scenario 2: Setting up a GitHub Actions pipeline
&lt;/h3&gt;

&lt;p&gt;Wrong approach:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nexus token create &lt;span class="nt"&gt;--name&lt;/span&gt; &lt;span class="s2"&gt;"github-actions"&lt;/span&gt; &lt;span class="nt"&gt;--scopes&lt;/span&gt; admin
&lt;span class="c"&gt;# Stored in GitHub secrets as NEXUS_API_KEY&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Right approach:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# One token per environment, deploy:write only&lt;/span&gt;
nexus token create &lt;span class="nt"&gt;--name&lt;/span&gt; &lt;span class="s2"&gt;"github-actions-staging"&lt;/span&gt; &lt;span class="nt"&gt;--scopes&lt;/span&gt; deploy:write &lt;span class="nt"&gt;--expires&lt;/span&gt; 90d
nexus token create &lt;span class="nt"&gt;--name&lt;/span&gt; &lt;span class="s2"&gt;"github-actions-prod"&lt;/span&gt; &lt;span class="nt"&gt;--scopes&lt;/span&gt; deploy:write &lt;span class="nt"&gt;--expires&lt;/span&gt; 90d

&lt;span class="c"&gt;# Store each in the corresponding GitHub environment secret&lt;/span&gt;
&lt;span class="c"&gt;# github.com/org/repo → Settings → Environments → staging → NEXUS_API_KEY&lt;/span&gt;
&lt;span class="c"&gt;# github.com/org/repo → Settings → Environments → production → NEXUS_API_KEY&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Environment scoped tokens mean a staging pipeline compromise cannot touch production. The &lt;code&gt;deploy:write&lt;/code&gt; scope means the pipeline can redeploy but cannot read or modify secrets.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scenario 3: Granting an external contractor temporary access
&lt;/h3&gt;

&lt;p&gt;Wrong approach:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Contractor → Admin role → "we'll remove it when they're done"
(They're done. It's still there. Six months later: breach.)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Right approach:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Invite as Viewer they can observe, not act&lt;/span&gt;
nexus member invite contractor@agency.com &lt;span class="nt"&gt;--role&lt;/span&gt; Viewer

&lt;span class="c"&gt;# If they need to trigger deploys, create a scoped token with explicit expiry&lt;/span&gt;
nexus token create &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; &lt;span class="s2"&gt;"contractor-agency-q2-2026"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--scopes&lt;/span&gt; deploy:write &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--expires&lt;/span&gt; 30d

&lt;span class="c"&gt;# Deliver the token via a secure channel. Calendar reminder for 29 days out.&lt;/span&gt;
&lt;span class="c"&gt;# At project end: revoke the token and remove the member&lt;/span&gt;
nexus token revoke tok_01HX9...
nexus member remove contractor@agency.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The token expires automatically even if you forget. The member removal is still important it cleans up the audit trail and signals a clean handoff.&lt;/p&gt;




&lt;h2&gt;
  
  
  Resource-level access: deployments and projects
&lt;/h2&gt;

&lt;p&gt;Roles apply at the organization level by default. But NEXUS AI also supports &lt;strong&gt;project-scoped membership&lt;/strong&gt; isolating access to a subset of deployments within an organization.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Add a Developer to a specific project only&lt;/span&gt;
nexus project member add &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--project&lt;/span&gt; payments-service &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--email&lt;/span&gt; engineer@company.com &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--role&lt;/span&gt; Developer

&lt;span class="c"&gt;# They can now deploy payments-service/* deployments&lt;/span&gt;
&lt;span class="c"&gt;# They cannot see auth-service/*, user-service/*, or any other project&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Project-scoped access is useful for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Regulated workloads&lt;/strong&gt; — your payments team accesses the payments project; your analytics team accesses the analytics project. No overlap.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-tenant organizations&lt;/strong&gt; agencies managing deployments for multiple clients. Each client's project is isolated.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contractor access&lt;/strong&gt; — limit a vendor to exactly the project they're working on.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Organization-level Admins retain visibility across all projects. Project-scoped Developers cannot see outside their project boundary.&lt;/p&gt;

&lt;h2&gt;
  
  
  RBAC and AI agents
&lt;/h2&gt;

&lt;p&gt;NEXUS AI's 37 MCP tools for Claude and AI agents operate under the same RBAC model as human callers. A token issued to an AI agent carries exactly the same scope enforcement no exceptions.&lt;/p&gt;

&lt;p&gt;This matters because AI agents tend to be given more access than they need "because it's easier." An agent with &lt;code&gt;admin&lt;/code&gt; scope that goes wrong is a full organization compromise. An agent with &lt;code&gt;deploy:read&lt;/code&gt; that goes wrong reveals status information and nothing else.&lt;/p&gt;

&lt;h3&gt;
  
  
  Designing safe agent access
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Read-only diagnostic agent&lt;/strong&gt; — Claude inspects logs, checks deployment health, surfaces anomalies:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nexus token create &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; &lt;span class="s2"&gt;"claude-diagnostic"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--scopes&lt;/span&gt; deploy:read,logs:read &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--expires&lt;/span&gt; 7d
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The agent cannot deploy, rollback, or change anything. It observes and reports.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deployment automation agent&lt;/strong&gt; — Claude reacts to CI signals and triggers redeployments:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nexus token create &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; &lt;span class="s2"&gt;"claude-deploy-agent"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--scopes&lt;/span&gt; deploy:read,deploy:write,logs:read &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--expires&lt;/span&gt; 30d
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The agent can act on deployments. It cannot touch secrets, billing, or team membership.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Incident response agent&lt;/strong&gt; — Claude triages a production incident, can rollback if needed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Short-lived, manually issued during an incident&lt;/span&gt;
nexus token create &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; &lt;span class="s2"&gt;"claude-incident-2026-04-21"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--scopes&lt;/span&gt; deploy:read,deploy:write,logs:read &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--expires&lt;/span&gt; 4h
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;4-hour expiry. The token disappears when the incident window ends. No standing elevated access for AI agents.&lt;/p&gt;

&lt;p&gt;The rule: grant an AI agent the minimum scope it needs to complete its defined task. Then set an expiry that matches the task duration — not "never" because that's convenient.&lt;/p&gt;




&lt;h2&gt;
  
  
  What RBAC cannot do
&lt;/h2&gt;

&lt;p&gt;Knowing the limits of any security control is as important as knowing what it covers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;RBAC does not protect against a compromised Owner account.&lt;/strong&gt; The Owner role has full access. If an Owner's credentials are compromised, the attacker has full access. Protect Owner accounts with hardware MFA, not just TOTP.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;RBAC does not prevent a Developer from logging sensitive data.&lt;/strong&gt; If your application logs &lt;code&gt;process.env.DATABASE_URL&lt;/code&gt; at startup, that value appears in runtime logs — which Developers can read. Secret management starts with application code discipline.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;RBAC does not enforce network-level isolation.&lt;/strong&gt; A Developer with &lt;code&gt;deploy:write&lt;/code&gt; can push a container that opens a reverse shell. Pair RBAC with container security policies and network egress controls for workloads that require it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;RBAC does not replace secrets rotation.&lt;/strong&gt; Least privilege reduces blast radius when a secret is compromised. Rotation reduces the window of exposure. Both are required for a complete security posture.&lt;/p&gt;

&lt;h2&gt;
  
  
  The access model audit
&lt;/h2&gt;

&lt;p&gt;Run this quarterly. It takes 20 minutes and it will find something to fix every time.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# List all organization members and their roles&lt;/span&gt;
nexus member list

&lt;span class="c"&gt;# List all active tokens with creation date and last-used date&lt;/span&gt;
nexus token list &lt;span class="nt"&gt;--show-last-used&lt;/span&gt;

&lt;span class="c"&gt;# Check for tokens with no expiry&lt;/span&gt;
nexus token list &lt;span class="nt"&gt;--no-expiry&lt;/span&gt;

&lt;span class="c"&gt;# Check for tokens unused in 30+ days&lt;/span&gt;
nexus token list &lt;span class="nt"&gt;--unused-since&lt;/span&gt; 30d
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For each token unused in 30+ days: revoke it. For each &lt;code&gt;admin&lt;/code&gt;-scoped token that isn't for a one-time script: replace it with narrower scopes. For each member at a role higher than their current responsibilities: downgrade it.&lt;/p&gt;

&lt;p&gt;The goal is to reach a state where every active token has a name that explains exactly what it does, an expiry that matches how long it needs to exist, and the minimum scope to do its job.&lt;/p&gt;




&lt;h2&gt;
  
  
  RBAC and compliance
&lt;/h2&gt;

&lt;p&gt;If you're in a regulated industry healthcare, fintech, legal — RBAC is table stakes for compliance. NEXUS AI's RBAC system maps directly to common control requirements:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Compliance requirement&lt;/th&gt;
&lt;th&gt;NEXUS AI control&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Least-privilege access&lt;/td&gt;
&lt;td&gt;Role hierarchy + token scopes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Separation of duties&lt;/td&gt;
&lt;td&gt;Developers cannot write secrets; Owners are unique&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Access review&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;nexus member list&lt;/code&gt;, &lt;code&gt;nexus token list&lt;/code&gt; for quarterly audits&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Privileged access management&lt;/td&gt;
&lt;td&gt;Admin and Owner roles with MFA enforcement&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Access revocation on termination&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;nexus member remove&lt;/code&gt; + &lt;code&gt;nexus token revoke&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Audit trail&lt;/td&gt;
&lt;td&gt;Append-only audit logs with actor, token ID, timestamp, and IP&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Enterprise and Enterprise On-Prem plans include 90-day and indefinite audit log retention respectively. Logs are exportable to Datadog, Grafana, Splunk, or any SIEM via the audit log export API.&lt;/p&gt;

&lt;h2&gt;
  
  
  Checklist: production-grade RBAC setup
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Assign roles at the minimum level needed start with Developer, escalate to Admin only when demonstrated necessary&lt;/li&gt;
&lt;li&gt;[ ] No team member should have Owner role unless they're accountable for the organization&lt;/li&gt;
&lt;li&gt;[ ] Every CI/CD pipeline uses a separate &lt;code&gt;deploy:write&lt;/code&gt; token per environment&lt;/li&gt;
&lt;li&gt;[ ] Every token has a name that identifies its purpose and a &lt;code&gt;--expires&lt;/code&gt; flag&lt;/li&gt;
&lt;li&gt;[ ] No &lt;code&gt;admin&lt;/code&gt;-scoped tokens in standing use only for one-time scripts with 1-day expiry&lt;/li&gt;
&lt;li&gt;[ ] AI agent tokens scoped to exactly what the agent does (not &lt;code&gt;admin&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;[ ] Quarterly access review: &lt;code&gt;nexus token list --unused-since 30d&lt;/code&gt; and &lt;code&gt;nexus member list&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;[ ] Project-scoped membership for workloads that should be isolated (payments, healthcare, multi-client)&lt;/li&gt;
&lt;li&gt;[ ] Owner account protected with hardware MFA (YubiKey or equivalent)&lt;/li&gt;
&lt;li&gt;[ ] Offboarding runbook: member remove + all associated tokens revoke, same day&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Can a Developer see their own Access Tokens after creation?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Token values are shown once at creation — never again. A Developer can list their tokens by name and ID (&lt;code&gt;nexus token list --mine&lt;/code&gt;), but the &lt;code&gt;token_value&lt;/code&gt; is never retrievable. If lost, rotate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What happens to tokens when a member is removed?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Tokens are scoped to the organization, not to the member who created them. Removing a member does not automatically revoke their tokens. Run &lt;code&gt;nexus token list --created-by email@company.com&lt;/code&gt; and revoke manually as part of offboarding. A future release will offer member-removal with automatic token revocation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can a Developer escalate their own role?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
No. Role changes require Admin or Owner. A Developer cannot call any API endpoint that modifies their own or another member's role.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How does NEXUS AI handle role changes mid-session?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Role and scope changes take effect immediately. An active API session using a token that gets revoked will receive a &lt;code&gt;401 Unauthorized&lt;/code&gt; on the next call — there's no grace window for human sessions (only for the 5-minute deploy token rotation window).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is there a way to grant time-limited elevated access without creating a token?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Not currently at the role level — role changes are persistent until manually reverted. Use a short-lived &lt;code&gt;admin&lt;/code&gt;-scoped token for temporary elevated operations instead of upgrading a member's role. This keeps the audit trail cleaner and eliminates the "I forgot to downgrade them" failure mode.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We're on the Starter plan. Do we get RBAC?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Yes. All four roles and the full scope system ship on every plan, including Starter at $29/mo. Project-scoped membership and audit log export are Enterprise features.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;Access control works best when it's boring when every token has a clear purpose, every role is appropriate, and your quarterly audit finds nothing to clean up. That state is achievable. It requires an initial setup investment of about two hours and 20 minutes of discipline every quarter.&lt;/p&gt;

&lt;p&gt;Start with your CI/CD tokens. Replace any &lt;code&gt;admin&lt;/code&gt;-scoped pipeline token with &lt;code&gt;deploy:write&lt;/code&gt;. That one change eliminates your largest standing access risk.&lt;/p&gt;

&lt;p&gt;For regulated workloads, compliance tooling, or teams larger than 20 engineers, the Enterprise plan adds SAML SSO, custom audit log retention, and dedicated security review. Reach out at &lt;a href="https://nexusai.run" rel="noopener noreferrer"&gt;nexusai.run&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Related reading:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Stop shipping secrets. Start using a vault.&lt;/li&gt;
&lt;li&gt;MCP integration: 37 tools for Claude and AI agents&lt;/li&gt;
&lt;li&gt;Audit logs and compliance: what gets recorded and why&lt;/li&gt;
&lt;li&gt;How NEXUS AI deploys your app in under 5 minutes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Least privilege is not paranoia. It's the discipline that makes incidents containable.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>rbac</category>
      <category>ai</category>
      <category>programming</category>
    </item>
    <item>
      <title>NEXUS AI One-Prompt Deployment Is Here Just Describe It and Ship It</title>
      <dc:creator>Saif Ali</dc:creator>
      <pubDate>Sat, 15 Aug 2026 14:37:32 +0000</pubDate>
      <link>https://dev.to/sali_ac161a1b71406354896c/nexus-ai-one-prompt-deployment-is-here-just-describe-it-and-ship-it-17op</link>
      <guid>https://dev.to/sali_ac161a1b71406354896c/nexus-ai-one-prompt-deployment-is-here-just-describe-it-and-ship-it-17op</guid>
      <description>&lt;h1&gt;
  
  
  One Prompt Deployment Is Here Just Describe It and Ship It
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Tell it what you want. Watch it deploy.
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Headline Options
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;One-Prompt Deployment Is Here Just Describe It and Ship It&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deploy With Words: Introducing One-Prompt Deployment&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Forget the Config — Just Tell It What to Deploy&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;There's a version of deployment that feels like magic. You describe what you want — in plain English, in a single line — and your app is live. No YAML. No CLI flags. No digging through docs to remember what &lt;code&gt;--replicas&lt;/code&gt; does in this context.&lt;/p&gt;

&lt;p&gt;That version of deployment exists now. Meet &lt;strong&gt;One-Prompt Deployment&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is One-Prompt Deployment?
&lt;/h2&gt;

&lt;p&gt;One-Prompt Deployment lets you trigger and configure deployments using natural language. Instead of writing pipeline configs or remembering command syntax, you just describe your intent:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Deploy the latest build of the payments service to staging with 3 replicas and a 5-minute timeout."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's it. The system interprets your intent, maps it to the right configuration, runs pre-flight checks, and ships it all without you touching a config file or terminal command.&lt;/p&gt;

&lt;p&gt;It's not a chatbot wrapped around a deploy button. Under the hood, it's a structured inference layer that translates natural language into validated deployment operations, with full auditability and rollback built in.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why We Built This
&lt;/h2&gt;

&lt;p&gt;Deployment tooling has gotten incredibly powerful over the last decade but with that power came complexity. Kubernetes configs, Helm charts, custom CI/CD pipelines: each layer adds capability, but also adds surface area to learn, maintain, and debug.&lt;/p&gt;

&lt;p&gt;We wanted to give developers the full power of that tooling without requiring them to become experts in every layer of it. One-Prompt Deployment is the result: a natural language interface that sits on top of your existing infrastructure and makes it approachable for everyone on the team.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Makes It Different
&lt;/h2&gt;

&lt;h3&gt;
  
  
  It Moves at the Speed of Thought
&lt;/h3&gt;

&lt;p&gt;The fastest interface is the one where you don't have to translate your intent into syntax. With One-Prompt Deployment, you describe what you want in natural language and the system handles the translation. In practice, this means going from "I want to deploy this" to "it's deployed" in under two minutes including the time it takes to type the prompt.&lt;/p&gt;

&lt;p&gt;No more context-switching to look up CLI flags or YAML schema. No more copy-pasting config from a deployment that worked last time. Just describe it and ship it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Works With Your Stack, Out of the Box
&lt;/h3&gt;

&lt;p&gt;One-Prompt Deployment understands the vocabulary of your existing infrastructure. Connect it to your cloud provider, container registry, and environment configs, and it immediately knows the names of your services, your environment tiers, and your deployment conventions.&lt;/p&gt;

&lt;p&gt;That means your prompts can be natural and specific: &lt;em&gt;"Roll out the new auth service to production using the blue/green strategy"&lt;/em&gt; — and it knows exactly what "auth service," "production," and "blue/green" mean in your context. No training required, no custom setup beyond your existing connections.&lt;/p&gt;

&lt;h3&gt;
  
  
  Guardrails Built In — Not Bolted On
&lt;/h3&gt;

&lt;p&gt;Natural language is flexible, which means there's room for ambiguity. We take that seriously. Before any deployment runs, the system surfaces a confirmation summary showing exactly what it understood and what it's about to do. You review, approve, and then it executes.&lt;/p&gt;

&lt;p&gt;If something looks off at the pre-flight stage, it halts and explains why — with a suggested fix in plain language. And if a deployment does go wrong post-launch, automatic rollback restores your last stable state, no incident bridge required.&lt;/p&gt;

&lt;h3&gt;
  
  
  Unlocks Deployment for Your Whole Team
&lt;/h3&gt;

&lt;p&gt;This is the one we're most excited about. Traditionally, production deployments are gatekept not because teams &lt;em&gt;want&lt;/em&gt; them to be, but because the tooling is too complex for anyone outside of platform or DevOps to use safely.&lt;/p&gt;

&lt;p&gt;One-Prompt Deployment changes that calculus. QA engineers can deploy to staging environments without waiting on a pipeline engineer. Product managers can trigger approved releases without opening a terminal. On-call rotations can use it to execute rollbacks without institutional knowledge of your infra.&lt;/p&gt;

&lt;p&gt;Your deployment process doesn't have to be a bottleneck anymore.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;Enabling One-Prompt Deployment takes about five minutes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Navigate to &lt;strong&gt;Settings → Deployments → Prompt Mode&lt;/strong&gt; in your dashboard&lt;/li&gt;
&lt;li&gt;Connect your infrastructure integrations (cloud provider, registry, environments)&lt;/li&gt;
&lt;li&gt;Run a test prompt to confirm your context is loaded correctly&lt;/li&gt;
&lt;li&gt;Start deploying&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Full documentation including prompt syntax tips, advanced configuration, and the API reference for programmatic prompt-triggered deployments is in our developer docs.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Coming Next
&lt;/h2&gt;

&lt;p&gt;We're already building on this foundation. Next up: prompt-based deployment schedules (&lt;em&gt;"deploy every Friday at 5pm if all tests pass"&lt;/em&gt;), multi-service orchestration prompts, and a prompt history log with diff views so you can audit exactly what was deployed and when.&lt;/p&gt;

&lt;p&gt;We'd love your feedback as you use it. Join the conversation in our community Discord, open a GitHub Discussion, or just reply to this post. The best features we've built have come directly from developers telling us what's broken or missing — and this one is no different.&lt;/p&gt;

&lt;p&gt;Ship the thing. We've handled the rest. 🚀&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Author:&lt;/strong&gt; [NEXUS AI Team]&lt;br&gt;
&lt;strong&gt;Published:&lt;/strong&gt; [8/15/2026]&lt;br&gt;
&lt;strong&gt;Tags:&lt;/strong&gt; deployments, developer tools, AI, natural language, CI/CD, new feature, engineering&lt;/p&gt;

</description>
      <category>ai</category>
      <category>promptengineering</category>
      <category>app</category>
      <category>automation</category>
    </item>
    <item>
      <title>Getting Started: NEXUS AI Connector on Claude</title>
      <dc:creator>Saif Ali</dc:creator>
      <pubDate>Sat, 15 Aug 2026 14:30:38 +0000</pubDate>
      <link>https://dev.to/sali_ac161a1b71406354896c/getting-started-nexus-ai-connector-on-claude-1dh4</link>
      <guid>https://dev.to/sali_ac161a1b71406354896c/getting-started-nexus-ai-connector-on-claude-1dh4</guid>
      <description>&lt;h1&gt;
  
  
  Getting Started: NEXUS AI Connector on Claude
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Your entire deployment platform, accessible through a single conversation.
&lt;/h2&gt;




&lt;h3&gt;
  
  
  Headline Options
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Getting Started: NEXUS AI Connector on Claude&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Control NEXUS AI With Claude — No Dashboard Required&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Meet the NEXUS AI Connector: Deploy, Monitor, and Manage With Just a Prompt&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;What if you could deploy an app, check its health, spin up a database, and rotate a secret — all without leaving your AI assistant? No tab-switching, no dashboard hunting, no copy-pasting deployment IDs.&lt;/p&gt;

&lt;p&gt;That's exactly what the &lt;strong&gt;NEXUS AI Connector for Claude&lt;/strong&gt; makes possible. It connects your NEXUS AI account directly to Claude, giving you full control of your infrastructure through natural language. This guide walks you through getting set up and making your first prompt-driven deployment in under ten minutes.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is the NEXUS AI Connector?
&lt;/h2&gt;

&lt;p&gt;The NEXUS AI Connector is an MCP (Model Context Protocol) integration that exposes your NEXUS AI platform — deployments, databases, secrets, domains, and more — as tools Claude can use on your behalf.&lt;/p&gt;

&lt;p&gt;Once connected, Claude isn't just answering questions about your infrastructure. It's actually interacting with it: listing your running deployments, reading logs, scaling services, and executing the same operations you'd normally do through the dashboard or CLI.&lt;/p&gt;

&lt;p&gt;Think of it as a natural language interface sitting on top of everything NEXUS AI can do.&lt;/p&gt;




&lt;h2&gt;
  
  
  What You Can Do With It
&lt;/h2&gt;

&lt;p&gt;Here's a quick taste of what you can ask Claude once the connector is set up:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;"List all my running deployments"&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;"Deploy the latest build of my API service to staging"&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;"Show me the last 50 runtime logs for the payments service"&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;"Create a new secret called DATABASE_URL for the production environment"&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;"Add a custom domain to my frontend deployment"&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;"Scale my backend service to 3 replicas"&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;"What's the health status of my production deployments?"&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No syntax to memorize. No CLI to install. Just describe what you need.&lt;/p&gt;




&lt;h2&gt;
  
  
  Getting Started in 3 Steps
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Connect Your NEXUS AI Account
&lt;/h3&gt;

&lt;p&gt;Open Claude and navigate to &lt;strong&gt;Settings → Connectors&lt;/strong&gt;. Find the NEXUS AI Connector in the list and click &lt;strong&gt;Connect&lt;/strong&gt;. You'll be prompted to authenticate with your NEXUS AI credentials — this uses a secure OAuth flow, so your credentials are never stored in the conversation.&lt;/p&gt;

&lt;p&gt;Once authenticated, Claude will confirm that your account is linked and show you a summary of the resources it can access.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; If you're on a Team or Enterprise plan, check with your org admin to make sure the NEXUS AI Connector is enabled in your workspace settings.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  Step 2: Verify the Connection
&lt;/h3&gt;

&lt;p&gt;Ask Claude something simple to confirm everything is working:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"What deployments do I have running right now?"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Claude will call the NEXUS AI API and return a list of your active deployments — names, statuses, providers, and environments. If you see your infrastructure listed back at you, you're good to go.&lt;/p&gt;

&lt;p&gt;If Claude says it can't find any deployments, double-check that you connected the right NEXUS AI account and that your deployments are in a &lt;code&gt;running&lt;/code&gt; or &lt;code&gt;deploying&lt;/code&gt; state.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 3: Try Your First Prompt-Driven Action
&lt;/h3&gt;

&lt;p&gt;Now for the fun part. Try a real operation:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Deploy nginx:latest to port 80 in my development environment."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Claude will use the NEXUS AI Connector to kick off the deployment, then confirm what it's doing before executing. Once it's underway, you can follow up:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"What's the status of that deployment?"&lt;/em&gt;&lt;br&gt;
&lt;em&gt;"Show me the build logs."&lt;/em&gt;&lt;br&gt;
&lt;em&gt;"Is it healthy yet?"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Claude handles the back-and-forth with the API so you can stay in the conversation flow instead of jumping to the dashboard.&lt;/p&gt;




&lt;h2&gt;
  
  
  A Few Things Worth Knowing
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Actions that modify your infrastructure require confirmation.&lt;/strong&gt; Before Claude executes anything that changes state — deploys, scales, deletes, or modifies secrets — it will summarize what it's about to do and ask you to confirm. This is intentional. You stay in control.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sensitive values are protected.&lt;/strong&gt; When you ask Claude to create or update secrets, it will execute the operation but will never display secret values in the conversation. What goes into NEXUS AI stays in NEXUS AI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your logs and metrics are available inline.&lt;/strong&gt; Ask Claude to pull logs mid-conversation and it will surface them directly — no need to open a separate terminal or dashboard tab. You can filter by log type, limit line counts, or ask Claude to highlight errors for you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Everything is auditable.&lt;/strong&gt; Every operation Claude performs via the connector maps to a real NEXUS AI API call. Your audit trail in NEXUS AI reflects all activity, whether it was initiated through the dashboard, CLI, or Claude.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's Possible When You Put It Together
&lt;/h2&gt;

&lt;p&gt;Once you're comfortable with the basics, the connector really shines in more complex workflows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Debug faster:&lt;/strong&gt; Ask Claude to pull logs, identify errors, propose a fix, and redeploy — all in a single conversation thread&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Incident response:&lt;/strong&gt; In a live incident, describe the symptoms and ask Claude to check deployment health, pull recent logs, and execute a rollback if needed&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Onboarding:&lt;/strong&gt; New engineers can interact with production-adjacent environments without needing to learn every CLI tool in your stack&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Routine ops:&lt;/strong&gt; Automate repetitive deployment checks or environment refreshes by describing what you need rather than scripting it&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Ready to Try It?
&lt;/h2&gt;

&lt;p&gt;The NEXUS AI Connector is available now. Head to your Claude settings, connect your account, and start your first session. The full list of supported operations — deployments, databases, secrets, domains, logs, health checks, and more — is documented in our connector reference docs.&lt;/p&gt;

&lt;p&gt;If you run into anything unexpected, drop a message in our community Discord or open a support ticket directly from your NEXUS AI dashboard.&lt;/p&gt;

&lt;p&gt;Your infrastructure is one prompt away. 🚀&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Author:&lt;/strong&gt; [Saif Ali]&lt;br&gt;
&lt;strong&gt;Published:&lt;/strong&gt; [4/20/2026]&lt;br&gt;
&lt;strong&gt;Tags:&lt;/strong&gt; NEXUS AI, Claude, MCP, connector, deployments, developer tools, getting started, AI infrastructure&lt;/p&gt;

</description>
    </item>
    <item>
      <title>NEXUS AI - Claude Code Tutorial</title>
      <dc:creator>Saif Ali</dc:creator>
      <pubDate>Sun, 09 Aug 2026 13:30:56 +0000</pubDate>
      <link>https://dev.to/sali_ac161a1b71406354896c/nexus-ai-claude-code-tutorial-19ml</link>
      <guid>https://dev.to/sali_ac161a1b71406354896c/nexus-ai-claude-code-tutorial-19ml</guid>
      <description>&lt;p&gt;Most Claude Code tutorials stop at "here's how to install it." That's like teaching someone to drive by showing them the ignition. This Claude Code tutorial goes further — you'll use it to build a real AI-powered app from scratch and deploy it to production, step by step.&lt;/p&gt;

&lt;p&gt;By the end you'll have a working document Q&amp;amp;A API and a live deployment URL. The whole thing takes about an afternoon.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Claude Code actually is (and why it's different)
&lt;/h2&gt;

&lt;p&gt;Claude Code is Anthropic's AI coding agent that runs in your terminal. Unlike copilot-style tools that suggest individual lines inside an editor, Claude Code operates at the project level — it reads your entire codebase, understands how files relate to each other, and makes multi-file changes with full context.&lt;/p&gt;

&lt;p&gt;The practical difference: you describe what you want to build, and Claude Code writes the code, runs commands, fixes errors, and iterates — without you switching between a chat window and your editor. It's AI-augmented development where the AI is a collaborator in your actual workflow, not a suggestion box beside it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What makes it powerful for AI app development specifically:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It can generate boilerplate for FastAPI, Express, or any framework in seconds&lt;/li&gt;
&lt;li&gt;It writes tests alongside the code it generates&lt;/li&gt;
&lt;li&gt;It catches its own mistakes by running the code and reading error output&lt;/li&gt;
&lt;li&gt;It handles the tedious parts (CI config, requirements.txt, test scaffolding) while you focus on the actual problem&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Getting started: install and configure Claude Code
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Install
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; @anthropic-ai/claude-code
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Requires Node.js 18+. Verify:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Authenticate
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On first run, Claude Code opens a browser window to authenticate with your Anthropic account. Once authenticated, it drops you into an interactive session in your current directory.&lt;/p&gt;

&lt;h3&gt;
  
  
  Your first command
&lt;/h3&gt;

&lt;p&gt;Navigate to an empty project folder and try:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir &lt;/span&gt;my-ai-app &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;cd &lt;/span&gt;my-ai-app
claude
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the Claude Code prompt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt; Scaffold a FastAPI project with a single /health endpoint, a requirements.txt, and a .gitignore
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Claude Code will create the files, show you what it's doing, and confirm. This is the core interaction pattern: describe the outcome, let it execute.&lt;/p&gt;




&lt;h2&gt;
  
  
  Build a real AI app with Claude Code
&lt;/h2&gt;

&lt;p&gt;We're building a &lt;strong&gt;document Q&amp;amp;A API&lt;/strong&gt; — you upload a text document, ask questions about it, and get answers grounded in the document's content. It's a practical RAG (retrieval-augmented generation) pattern used in real products.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1 — Scaffold the project
&lt;/h3&gt;

&lt;p&gt;In your Claude Code session:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt; Create a FastAPI app for document Q&amp;amp;A. The app should:
&amp;gt; - Accept a POST /upload endpoint that takes a text file and stores it in memory
&amp;gt; - Accept a POST /ask endpoint that takes a document_id and a question, then answers using OpenAI gpt-4o-mini
&amp;gt; - Return answers in JSON with the answer text and a confidence field
&amp;gt; - Include a requirements.txt with fastapi, uvicorn, openai, and python-multipart
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Claude Code will generate the full project structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;my-ai-app/
├── main.py
├── requirements.txt
├── .gitignore
└── README.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It writes the entire &lt;code&gt;main.py&lt;/code&gt; — endpoints, in-memory document store, OpenAI call — in one pass.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2 — Run it and fix errors
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt; Run the app locally with uvicorn and show me any errors
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Claude Code executes &lt;code&gt;uvicorn main:app --reload&lt;/code&gt;, reads the output, and if there are import errors or missing packages it fixes them automatically. This loop — run, read error, fix — is where Claude Code earns its keep. You don't context-switch; it just handles it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3 — Add real retrieval (not just stuffing the whole document)
&lt;/h3&gt;

&lt;p&gt;The naive version sends the entire document to the model on every question. That breaks on large files and wastes tokens. Ask Claude Code to improve it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt; The current /ask endpoint sends the full document to OpenAI on every request.
&amp;gt; Refactor it to:
&amp;gt; - Split documents into 500-token chunks on upload
&amp;gt; - Use cosine similarity on TF-IDF vectors to find the top 3 relevant chunks
&amp;gt; - Only send those 3 chunks to OpenAI as context
&amp;gt; - Use numpy and sklearn for the vector operations
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is multi-file, multi-concept work. Claude Code will update &lt;code&gt;main.py&lt;/code&gt;, add &lt;code&gt;sklearn&lt;/code&gt; and &lt;code&gt;numpy&lt;/code&gt; to &lt;code&gt;requirements.txt&lt;/code&gt;, and implement the chunking + retrieval logic coherently. It understands that changing the upload flow affects the query flow and handles both.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4 — Write tests
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt; Write pytest tests for both endpoints. Include:
&amp;gt; - A test that uploads a sample document and verifies the document_id is returned
&amp;gt; - A test that uploads a document, then asks a question whose answer is clearly in the document
&amp;gt; - A test that asks about a document_id that doesn't exist and expects a 404
&amp;gt; Mock the OpenAI call so tests don't need a real API key
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Claude Code generates &lt;code&gt;test_main.py&lt;/code&gt; with the exact structure you described, uses &lt;code&gt;pytest-mock&lt;/code&gt; for the OpenAI mock, and adds the test dependencies to &lt;code&gt;requirements.txt&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Run them:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt; Run the tests and fix any failures
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Claude Code runs &lt;code&gt;pytest&lt;/code&gt;, reads the output, and iterates until they pass. The critical detail: it doesn't just generate tests and hand them back — it runs them and closes the feedback loop.&lt;/p&gt;




&lt;h2&gt;
  
  
  The CLAUDE.md file: your project's AI instruction layer
&lt;/h2&gt;

&lt;p&gt;One of the most underused Claude Code features is &lt;code&gt;CLAUDE.md&lt;/code&gt; — a file in your project root that Claude Code reads at the start of every session. Think of it as a permanent briefing document for your AI collaborator.&lt;/p&gt;

&lt;p&gt;Create one:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt; Create a CLAUDE.md for this project that documents:
&amp;gt; - The tech stack (FastAPI, OpenAI, sklearn)
&amp;gt; - The coding conventions we used (snake_case, type hints everywhere, docstrings on public functions)
&amp;gt; - The test setup (pytest, mock OpenAI calls)
&amp;gt; - What the /upload and /ask endpoints do
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;From this point on, any new Claude Code session on this project starts with full context. You don't re-explain the stack every time.&lt;/p&gt;

&lt;p&gt;A good &lt;code&gt;CLAUDE.md&lt;/code&gt; includes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# Project: Document Q&amp;amp;A API&lt;/span&gt;

&lt;span class="gu"&gt;## Stack&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; FastAPI + Uvicorn (Python 3.11)
&lt;span class="p"&gt;-&lt;/span&gt; OpenAI gpt-4o-mini for generation
&lt;span class="p"&gt;-&lt;/span&gt; sklearn TF-IDF + cosine similarity for retrieval
&lt;span class="p"&gt;-&lt;/span&gt; pytest + pytest-mock for testing

&lt;span class="gu"&gt;## Conventions&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Type hints on all function signatures
&lt;span class="p"&gt;-&lt;/span&gt; Snake_case everywhere
&lt;span class="p"&gt;-&lt;/span&gt; Docstrings on all public functions

&lt;span class="gu"&gt;## Architecture&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Documents stored in-memory (dict keyed by UUID)
&lt;span class="p"&gt;-&lt;/span&gt; Chunks: 500 tokens, 50-token overlap
&lt;span class="p"&gt;-&lt;/span&gt; Top 3 chunks retrieved per query

&lt;span class="gu"&gt;## Running locally&lt;/span&gt;
uvicorn main:app --reload --port 8000

&lt;span class="gu"&gt;## Running tests&lt;/span&gt;
pytest -v
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Deploy to production with the NEXUS AI CLI
&lt;/h2&gt;

&lt;p&gt;Your app is built and tested. Now get it live — no Dockerfile required.&lt;/p&gt;

&lt;p&gt;NEXUS AI detects your framework, builds the container for you, and deploys it. You push source code; NEXUS AI handles everything from there.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5 — Push source to GitHub
&lt;/h3&gt;

&lt;p&gt;Initialize a repo and push:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git init
git add &lt;span class="nb"&gt;.&lt;/span&gt;
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"initial: document Q&amp;amp;A API"&lt;/span&gt;
gh repo create my-ai-app &lt;span class="nt"&gt;--public&lt;/span&gt; &lt;span class="nt"&gt;--source&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;--push&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or push to an existing repo. The only requirement is that your &lt;code&gt;requirements.txt&lt;/code&gt; is at the project root — NEXUS AI uses it to detect that this is a Python app.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 6 — Install the NEXUS AI CLI
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Linux&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://nexusai.run/install.sh | bash

&lt;span class="c"&gt;# macOS&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://nexusai.run/install-mac.sh | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Verify:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nexus &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 7 — Deploy from source
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Log in to NEXUS AI&lt;/span&gt;
nexus auth login

&lt;span class="c"&gt;# Deploy directly from your GitHub repo — no Docker required&lt;/span&gt;
nexus deploy &lt;span class="nb"&gt;source&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--repo&lt;/span&gt; https://github.com/your-org/my-ai-app &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; doc-qa-api &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--port&lt;/span&gt; 8000 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--provider&lt;/span&gt; gcp_cloud_run

&lt;span class="c"&gt;# Add the OpenAI key as an encrypted secret&lt;/span&gt;
nexus secret create OPENAI_API_KEY &lt;span class="nt"&gt;--deployment&lt;/span&gt; doc-qa-api

&lt;span class="c"&gt;# Attach a custom domain&lt;/span&gt;
nexus domain add api.yourcompany.com &lt;span class="nt"&gt;--deployment&lt;/span&gt; doc-qa-api
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;NEXUS AI clones your repo, detects the Python/FastAPI framework, builds a production container image, and deploys it. Within 2–3 minutes you have a live URL with TLS and autoscaling. Stream logs to verify:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nexus deploy logs doc-qa-api &lt;span class="nt"&gt;--follow&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Automate deploys with GitHub Actions
&lt;/h3&gt;

&lt;p&gt;Ask Claude Code to write the CI/CD config:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="pi"&gt;&amp;gt;&lt;/span&gt; &lt;span class="err"&gt;Write&lt;/span&gt; &lt;span class="err"&gt;a&lt;/span&gt; &lt;span class="err"&gt;GitHub&lt;/span&gt; &lt;span class="err"&gt;Actions&lt;/span&gt; &lt;span class="err"&gt;workflow&lt;/span&gt; &lt;span class="err"&gt;that&lt;/span&gt; &lt;span class="err"&gt;redeploys&lt;/span&gt; &lt;span class="err"&gt;the&lt;/span&gt; &lt;span class="err"&gt;NEXUS&lt;/span&gt; &lt;span class="err"&gt;AI&lt;/span&gt; &lt;span class="err"&gt;deployment&lt;/span&gt; &lt;span class="err"&gt;on&lt;/span&gt; &lt;span class="err"&gt;every&lt;/span&gt; &lt;span class="err"&gt;push&lt;/span&gt; &lt;span class="err"&gt;to&lt;/span&gt; &lt;span class="err"&gt;main.&lt;/span&gt;
&lt;span class="err"&gt;&amp;gt;&lt;/span&gt;&lt;span class="s"&gt; Use NEXUSAI_TOKEN as a secret. The deployment name is doc-qa-api.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Claude Code generates a complete &lt;code&gt;.github/workflows/deploy.yml&lt;/code&gt;. The workflow calls &lt;code&gt;nexus deploy redeploy doc-qa-api&lt;/code&gt; — NEXUS AI pulls the latest source, rebuilds the container, and rolls it out. Every push to &lt;code&gt;main&lt;/code&gt; goes to production automatically.&lt;/p&gt;




&lt;h2&gt;
  
  
  Advanced Claude Code patterns for AI development
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Multi-file refactoring
&lt;/h3&gt;

&lt;p&gt;Claude Code handles refactors that would take hours manually. Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt; The document store is currently an in-memory dict. Refactor it to use Redis so documents
&amp;gt; persist across server restarts. Update all references, add redis to requirements.txt,
&amp;gt; and update the CLAUDE.md architecture section.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It updates &lt;code&gt;main.py&lt;/code&gt;, &lt;code&gt;requirements.txt&lt;/code&gt;, and &lt;code&gt;CLAUDE.md&lt;/code&gt; in one coherent pass — and since NEXUS AI builds from source, you just push the changes and redeploy.&lt;/p&gt;

&lt;h3&gt;
  
  
  Debugging without context-switching
&lt;/h3&gt;

&lt;p&gt;When something breaks in production:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nexus deploy logs doc-qa-api &lt;span class="nt"&gt;--tail&lt;/span&gt; 50
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Copy the error, paste it into Claude Code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt; Getting this error in production logs: [paste error]
&amp;gt; Find the root cause and fix it.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Claude Code reads the relevant code, identifies the issue, and applies the fix — all without you manually tracing through stack traces.&lt;/p&gt;

&lt;h3&gt;
  
  
  Using Claude Code for code review
&lt;/h3&gt;

&lt;p&gt;Before opening a PR:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;&lt;span class="gi"&gt;&amp;gt; Review the changes in git diff HEAD~1 for:
&amp;gt; - Security issues (injection, hardcoded secrets, unsafe deserialization)
&amp;gt; - Missing input validation on the API endpoints
&amp;gt; - Performance issues in the chunking logic
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Claude Code runs the diff and produces a structured review with specific line references.&lt;/p&gt;




&lt;h2&gt;
  
  
  Common Claude Code mistakes to avoid
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Giving vague prompts.&lt;/strong&gt; "Make this better" produces mediocre output. "Refactor the chunking function to reduce memory allocation by processing tokens in a streaming fashion instead of loading the full document" produces a specific, actionable change.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Not using CLAUDE.md.&lt;/strong&gt; Without it, you re-explain your stack every session. Ten minutes setting it up saves hours over the life of a project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Accepting the first output blindly.&lt;/strong&gt; Claude Code is fast, not infallible. Run the tests after every significant change. When they fail, let Claude Code fix them — that feedback loop is what makes it reliable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Letting it over-engineer.&lt;/strong&gt; Claude Code will sometimes propose abstractions you don't need. If you asked for a simple endpoint and got a three-layer architecture with an abstract repository pattern, push back: "Simplify this — no abstraction layers, just the endpoint and direct database calls."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Not scoping the context.&lt;/strong&gt; In very large codebases, &lt;code&gt;claude&lt;/code&gt; in the root directory gives it the whole repo. For a focused change, navigate to the relevant subdirectory first. Smaller context = more precise output.&lt;/p&gt;




&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Does Claude Code work with languages other than Python?
&lt;/h3&gt;

&lt;p&gt;Yes. Claude Code works with any language — TypeScript, Go, Rust, Ruby, Java. The same patterns apply: scaffold with a prompt, run it, let Claude Code fix errors. The &lt;code&gt;CLAUDE.md&lt;/code&gt; approach works especially well in polyglot repos where you need to document which parts use which language.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is Claude Code safe to run on production codebases?
&lt;/h3&gt;

&lt;p&gt;Claude Code asks for confirmation before writing files or running commands. You control what it executes. For sensitive production repos, review the proposed changes before confirming — Claude Code shows you a diff before applying it. Never give it credentials directly; use environment variables and secrets managers.&lt;/p&gt;

&lt;h3&gt;
  
  
  How is Claude Code different from GitHub Copilot?
&lt;/h3&gt;

&lt;p&gt;Copilot autocompletes individual lines and functions inside an editor. Claude Code operates at the project level in the terminal — it understands the full codebase, can run code, read test output, and make coordinated multi-file changes. They're complementary: Copilot for keystroke-level suggestions, Claude Code for larger tasks.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can I use Claude Code without an Anthropic account?
&lt;/h3&gt;

&lt;p&gt;No. Claude Code requires an Anthropic API key or Claude.ai Pro/Max subscription. Usage via the API is billed based on token consumption. The claude.ai subscription tiers include a monthly usage allocation.&lt;/p&gt;

&lt;h3&gt;
  
  
  What's the best way to handle large codebases?
&lt;/h3&gt;

&lt;p&gt;Use &lt;code&gt;.claudeignore&lt;/code&gt; (same syntax as &lt;code&gt;.gitignore&lt;/code&gt;) to exclude directories that aren't relevant to your current task — &lt;code&gt;node_modules&lt;/code&gt;, &lt;code&gt;dist&lt;/code&gt;, &lt;code&gt;venv&lt;/code&gt;, build artifacts. This keeps Claude Code's context focused on what matters and reduces token usage.&lt;/p&gt;




&lt;h2&gt;
  
  
  What you built
&lt;/h2&gt;

&lt;p&gt;Start to finish: a document Q&amp;amp;A API scaffolded by Claude Code, with chunked retrieval, pytest coverage, and a live deployment on NEXUS AI — all without writing a Dockerfile or touching a browser.&lt;/p&gt;

&lt;p&gt;That's AI-augmented development in practice. Claude Code handled the scaffolding, boilerplate, tests, and debugging loop. You handled the architecture decisions and product requirements. The result ships faster and has better test coverage than the same work done manually.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://dev.to/docs"&gt;NEXUS AI CLI&lt;/a&gt; handles the deployment side of this workflow. Install it, run &lt;code&gt;nexus auth login&lt;/code&gt;, and your next Claude Code-built app is one command away from production.&lt;/p&gt;

</description>
      <category>claude</category>
      <category>nexusai</category>
      <category>ai</category>
      <category>web</category>
    </item>
  </channel>
</rss>
