Grok Bot + xCloud

Deploy from Git with Grok Bot on xCloud

Deploying from Git with Grok Bot means asking one of your always-on Bots to hand a GitHub, GitLab or Bitbucket repository to xCloud, which detects the app, previews the site, creates it after your approval and checks the live URL.

  • Skill: xcloud:deploy
  • Toolsets: sites, servers, integrations
  • Free with every xCloud account

You@xcloud Deploy github.com/example/shop to the Singapore server on staging. Dry run first.

git_detectread-only

AgentNode.js app on main. Build: npm run build, start: npm start. Free staging hostname: shop-test.example.xcloud.site. One warning: no environment file in the repo. Sending the dry run to Singapore.

servers_sites_git_autodry run

AgentThe dry run would create shop-test.example.xcloud.site on Singapore with those commands and the same warning, nothing else. Create the site?

YouYes, create it.

servers_sites_git_autoneeds approval

sites_statusread-only

AgentI polled the status: queued, then building, then deployed. https://shop-test.example.xcloud.site answers 200. Dashboard link below.

. Keep a human in the loop: xCloud stops and asks before anything that creates, deploys, updates, reboots, deletes or buys.

Setup

How Do You Set Up Grok Bot to Deploy from Git on xCloud?

Connect Grok Bot once; every job on this account uses the same connection. Then ask in plain words.

  1. Ask a Bot to add xCloud as a Remote HTTPS MCP server

    In the Grok Bot desktop app, open any Bot's chat and ask it to add a custom MCP server of the Remote HTTPS kind, named xcloud, with this URL. The Bot adds it as a personal plugin from your own chat; the Marketplace in the sidebar only lists catalog connectors. The owner of a Team Bot adds the same kind of server from the Plugins card in the Bot's Setup panel instead. When the browser opens, sign in with xCloud, tick the teams the Bot may act on and choose Read-only or Full access.

    URL
    https://app.xcloud.host/mcp
  2. Attach it to a task and check it works

    In a Bot chat, type @ and pick xcloud to attach the connector to the task, then ask. A plugin you added from your own chat is personal and account-wide, so every Bot on your account can use it; a plugin added from a Team Bot's Setup panel belongs to that Team Bot, so check it in that Bot's chat. Put a standing boundary in the description of each Bot that may touch hosting, for example: never change production without approval.

    Prompt
    @xcloud Who am I on xCloud, and which servers and sites do I have?
  3. Team Bot without sign-ins? Use an API key

    A Remote HTTPS server added from the Plugins card in a Team Bot's Setup panel can run on the Bot's own credential instead of each person's sign-in, which suits a Team Bot that answers hosting questions for everyone. Create a token with the mcp:invoke scope plus the read abilities for the areas it will use (read:servers and read:sites, with read:billing and read:addons for billing and add-on tools) and the matching write: abilities if it should change things in Settings, Developers, API Tokens, and give the plugin this header where its form asks for one. Everyone who talks to that Bot then acts with the token's access, so keep it read-only unless the team should change things.

    Code
    Authorization: Bearer YOUR_TOKEN
  4. Check it worked

    Then ask Grok Bot for the job itself, for example:

    Prompt
    @xcloud Deploy https://github.com/example/shop to my Frankfurt server on a staging hostname. Run detection and a dry run, show me both here and wait for my yes.

In practice

How Does Deploy from Git Work from Grok Bot?

A Bot is a teammate with a name and a job, so the cleanest setup is one Bot whose description says it owns hosting. You open it from the desktop app or from your phone, type @xcloud to attach the connector to the task, and send a line such as: deploy github.com/example/shop to my Frankfurt server on a staging hostname and show me the dry run first. The Bot calls git_detect and reports what xCloud found: the app type, the branch, the install, build and start commands, the web root and any warning. Because the Bot works on a cloud computer and calls xCloud from there, it never looks at a folder on your laptop. The repository has to be reachable by xCloud itself, which means a public URL, a repository on a Git provider connected to your xCloud team, or a private one with a deploy key the Bot helps you set up.

Approval happens twice, on purpose, and it helps to know which is which. xCloud will not create a site without an explicit confirmation, so after the dry run the Bot asks you in plain words and only then sends the confirmed create call through servers_sites_git_auto. Grok Bot adds its own approval card for the tool call, with Allow once, Always allow and Deny. Choose Allow once for a deploy. The Bot then polls sites_status, tells you each real change on the way, and ends with the URL it fetched and the dashboard link xCloud returned. If you close the app halfway, the deploy carries on inside xCloud and the Bot picks the status up again when you ask. A failed build gets the same treatment on the same site: the Bot reads sites_deploy-diagnosis, proposes a correction and waits for your yes before it retries.

Memory and routines are where Grok Bot differs from a terminal agent. Tell the Bot once that production sites go on the Frankfurt server and staging sites on Singapore, and its memory keeps that preference between conversations. Then ask for a routine: every weekday at 8:00 AM, run detection and a dry run for github.com/example/shop and post any new warning here. A routine runs while your laptop is closed, but it can only detect and preview, because the create call waits for a yes from you. Use Test run before you rely on it, and open Routines under View conversation details to pause it or read its recent runs.

Grok Bot specific: The Bot cannot see your laptop, and that decides how deploys fail. Code you have not pushed does not exist as far as xCloud is concerned, so a Bot asked to deploy my project is deploying whatever the remote branch holds, not your working folder. Push first, name the branch and say which one you mean. Be careful with Always allow while you are learning, too: it can save a rule so Grok Bot's card no longer appears for that action, while the stop that matters for a deploy, the explicit confirmation xCloud demands before it creates a site, still arrives as a question in the conversation. If you want a hard stop before production, add an Ask first rule under Settings, General, Auto-review, and write the boundary into the Bot's description.

What xCloud does for deploy from git

xCloud detects the app in the repository, previews the site it would create with a dry run, creates it once you approve, polls the deployment to a terminal state and checks the live URL. A failed deploy gets a diagnosis and a corrected retry on the same site, never a delete and recreate.

  1. Pick the team and server. The agent uses the server you name. If you name none it lists provisioned servers and asks; it never picks one silently. Node.js, PHP and static builds need an Nginx or OpenLiteSpeed server; anything else needs a Docker server.
  2. Detect the repository. git_detect reads the default branch, the app type (WordPress, Laravel, custom PHP, Node.js or Lovable), the web root, suggested install, build and start commands, repository access and server compatibility. Detection creates nothing.
  3. Choose the address. With no domain the agent asks xCloud for a free staging hostname. With a live domain it checks whether the zone is on a connected Cloudflare account, in which case xCloud writes the DNS record and certificate itself.
  4. Dry run, then one approval. The agent sends the create request with dry_run set to true and shows you the resolved configuration: app type, URL, branch, commands, runtime version and every warning. Then it asks once, naming the server and the URL, before sending the same body with confirm set to true and an idempotency key.
  5. Poll and verify. A 202 means queued, not deployed. The agent polls the site status until it is terminal, reports each real step change, reads failed_steps and the SSL block, and fetches the URL before it calls the site live.
  6. Recover if it fails. On a failed deploy the agent reads the deployment diagnosis, proposes a fix from the correctable fields, and retries on the same site with your approval. Two failed retries with the same classification stop the loop and hand you the dashboard link.

Reference

Deploy from Git Settings and Limits on xCloud

The facts Grok Bot works within when it deploys from Git. Where a row names the dashboard, that step stays yours to take there.

Setting or limitWhat applies
Supported app typesWordPress, Laravel, custom PHP, Node.js and Lovable on native servers; Dockerfile and Compose apps, including Python, Go and Rust, on Docker servers
Repository sourcesPublic HTTPS URLs, repositories on a connected GitHub, GitLab or Bitbucket provider, and private SSH repositories with a read-only deploy key
Private repositoriesThe agent prepares a deploy key on the server, you add the public key to the repository, xCloud verifies it. A private key or personal token never goes in the request
Previewdry_run: true returns the would_create block and consumes no idempotency key
IdempotencyThe create call carries an Idempotency-Key, so a retried request cannot create a duplicate site. A new deployment needs a new key
Deployment statesdeployed, failed or cancelled once terminal is true; failed_steps can be non-empty on a deployed site and must be read
Node.js versionsThe Node version is server-wide, not per site; changing it can affect other apps on the server
RedeploysA redeploy runs git reset --hard and git clean -df in the site directory, so uncommitted server-side changes are lost. Supply environment values through env_file_content, not files in the checkout
Staging environmentsAvailable for Git sites on paid plans through the API; WordPress staging stays a dashboard step
Agentic serversAn OpenClaw, Hermes, Paperclip or DeepSeek Harness server hosts only the site created at provisioning; a second site is refused

Rules Grok Bot has to follow

  • Creating a site is billable and stops for your approval; detection and the dry run never create anything.
  • The agent explains every detection warning before asking, and a repository access problem is never worked around by naming an app type by hand.
  • A deployed state is not proof the application works: the agent fetches the URL and reads failed_steps first.
  • A failed site is retried in place with corrections; it is never deleted and recreated to retry.
  • Changing a live site's domain after creation, databases and server resizing are dashboard steps; the agent gives you the path and the dashboard link xCloud returned.

Example prompts

What Can You Ask Grok Bot to Do for Deploy from Git?

Type these as written and swap in your own repository, site and server names. Reads and routine actions such as backups, cache purges, PageSpeed scans and vulnerability scans run straight away; creating, deploying, updating, rebooting, deleting, buying or starting a broken-link scan stops and asks first.

Prompt
@xcloud Deploy https://github.com/example/shop to my Frankfurt server on a staging hostname. Run detection and a dry run, show me both here and wait for my yes.
Prompt
Remember this: production sites go on the Frankfurt server and staging sites go on Singapore. Then use @xcloud to deploy the main branch of github.com/example/api to staging.
Prompt
Every weekday at 8:00 AM, use @xcloud to run detection and a dry run for github.com/example/shop and post any new warning here. Create nothing.
Prompt
Deploy https://github.com/acme/shop to my Frankfurt server and show me the dry run before creating anything.
Prompt
Deploy the private GitLab repository connected to my team on a staging hostname.
Prompt
Scan the docker-compose.yml in github.com/acme/api and tell me which services and ports xCloud would use.
Prompt
Create a staging environment from the feature/checkout branch of the API site.
Prompt
Deploy the latest commit of the shop site after showing me what will change.
Prompt
The last deploy of the API site failed. Diagnose it, fix the build command and retry on the same site.

Grok Bot and Deploy from Git: Frequently Asked Questions

What people ask before they let Grok Bot deploy from Git through xCloud.

Can a Grok Bot deploy code that only exists on my laptop?

No. The Bot calls xCloud from Cursor's cloud, and xCloud reads the repository itself, so the code must be on GitHub, GitLab or Bitbucket, on a Git provider connected to your xCloud team, or at a public URL. Push the branch first and name it in your message.

Will a Grok Bot routine deploy my repository every morning?

No. A routine can run detection and a dry run on its schedule and post what it finds, but creating a site stops for an explicit confirmation from you, so nothing is created unattended. Ask for a preview routine and send the yes yourself when you are ready.

Does the agent create the site as soon as I give it a repository URL?

No. It detects the repository and runs a dry run first, shows you the resolved configuration, and asks once. Only after you approve does it send the create call with an explicit confirmation and an idempotency key.

Can an agent deploy a private repository through xCloud?

Yes. Either the repository is on a Git provider connected to your xCloud team, or the agent prepares an SSH deploy key on the server for you to add to the repository. A private key or a personal access token is never sent in the request.

What does a 202 response mean during a deploy?

That xCloud queued the deployment. The agent polls the site status until it is terminal and reports deployed, failed or cancelled, then checks failed_steps and fetches the URL before calling the site live.

What happens when a deploy fails?

The agent reads the deployment diagnosis, which classifies the failing step and quotes the relevant log lines, proposes a fix from the fields xCloud lets it correct, and retries on the same site after your approval. It never deletes and recreates the site to retry.

Which servers can take a Git deploy?

Node.js, PHP and static builds deploy to Nginx or OpenLiteSpeed servers. Dockerfile and Compose apps, and other language stacks, need a Docker server. Agentic servers running OpenClaw, Hermes, Paperclip or DeepSeek Harness take no additional sites.

Other agents

Deploy from Git with Other Agents

The same job, the same xCloud tools, a guide for each client.

Run Your Hosting from Grok Bot

xCloud MCP, the Agent Skills and the Public API are free with every account. Connect once and ask.