OpenCode + xCloud
Manage SSL and domains with OpenCode on xCloud
Managing SSL and domains with OpenCode means asking the open-source terminal agent to read a certificate, check where a domain points and install or renew HTTPS on xCloud, while you stay in the shell you already use for the project.
- Skill: xcloud:ssl
- Toolsets: ssl-certificates, sites, integrations
- Free with every xCloud account
YouCheck SSL on shop.example.com and renew it if it is close to expiry.
xcloud_sites_sslread-only
AgentxCloud issues the certificate for shop.example.com. It expires in 5 days. I will renew it on your Frankfurt server. Go ahead?
YouYes.
xcloud_sites_ssl_renewneeds approval
AgentRenewal accepted. I will poll the status until it settles, then load the HTTPS URL before I tell you it worked.
. 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 OpenCode to Manage SSL and domains on xCloud?
Connect OpenCode once; every job on this account uses the same connection. Then ask in plain words.
Add the xCloud MCP server
Run this from the project that should use xCloud, or add --global to make it available everywhere. OpenCode writes the entry under mcp.servers in its config (OpenCode v2 no longer accepts server names directly under mcp). Remote servers use OAuth by default, so there is nothing else to fill in; the equivalent hand-written entry is shown below.
opencode mcp add xcloud --url https://app.xcloud.host/mcp # the entry it writes to opencode.jsonc { "$schema": "https://opencode.ai/config.json", "mcp": { "servers": { "xcloud": { "type": "remote", "url": "https://app.xcloud.host/mcp" } } } }Sign in with OAuth
This opens your browser on the xCloud approval screen, where you tick the teams and choose Read-only or Full access. Inside OpenCode, /mcps does the same: pick xcloud and sign in. Then opencode mcp list should show xcloud as connected.
opencode mcp auth xcloud opencode mcp listNo browser? Use an API key
For a headless or CI machine, 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 export it as XCLOUD_TOKEN. Setting oauth to false turns off the automatic sign-in, and the {env:XCLOUD_TOKEN} reference keeps the token out of the file. The entry still lives under mcp.servers.
{ "mcp": { "servers": { "xcloud": { "type": "remote", "url": "https://app.xcloud.host/mcp", "oauth": false, "headers": { "Authorization": "Bearer {env:XCLOUD_TOKEN}" } } } } }Check it worked
Then ask OpenCode for the job itself, for example:
Check the SSL certificate on shop.example.com. Provider, status, expiry date.
In practice
How Does SSL and domains Work from OpenCode?
OpenCode runs in the directory of the project, and that is useful for certificate work because the domain you are asking about is usually written down somewhere in the repository: an APP_URL in an env example, a server_name in a config file, a CNAME file, a README. You can say check SSL for the domain in this repo and OpenCode will read the file, pick out the hostname and then ask xCloud about it. Every xCloud tool shows up with the xcloud_ prefix, so the calls you will see in the session are names such as xcloud_sites_ssl, xcloud_sites_sslCertificates and xcloud_servers_dns_check. They are reads, and they run straight away.
A typical session starts with a question, not a change. You type is the certificate on example.com healthy, and OpenCode resolves the site by domain, reads its SSL state and the list of certificates, and prints the provider, the status and the expiry date in two or three lines. If you are waiting on a new domain, you ask whether DNS points at the server yet. Each DNS check is one lookup, so OpenCode repeats it every so often and reports when the record finally resolves, and it tells you separately when the record sits behind Cloudflare's proxy. Only then does it offer to install a certificate. It names the site and the provider, waits for your yes, sends the install or renewal, and polls the certificate status until it settles instead of trusting the first success message. It finishes by fetching the HTTPS URL.
The edges are worth knowing. A normal renewal does nothing until the certificate is within seven days of expiry, so OpenCode will say so and offer a forced renewal rather than pretend it worked. If you ask it to add a second domain to a live site, it will not attempt a workaround: it gives you the dashboard path, Site, then Domain, and the dashboard link xCloud returned. Because OpenCode lets you switch a server's tools on for one agent only, a small operations agent that can read certificates and nothing else is easy to set up.
OpenCode specific: If you allow the whole xcloud* pattern for an agent, OpenCode stops prompting you for any xCloud tool, including the ones that install, renew or delete a certificate. xCloud still stops those calls for an explicit confirmation, but allow only the read tools if you want OpenCode's own prompt as a second check. If you connected the compact profile or limited the toolsets, keep the ones that cover sites and certificates, or the agent will not see the SSL tools at all.
What xCloud does for ssl and domains
xCloud lets the agent read a site's certificate status, domains and DNS, then install or renew a certificate from xCloud (Let's Encrypt), your own files or a connected Cloudflare account. Adding or changing a domain on an existing site stays in the dashboard, and the agent gives you the path.
- Find the site and read its SSL. The agent resolves the site by name or domain, then reads its current SSL state and the list of certificates before it changes anything. That shows the provider, the status and the expiry date.
- Check the domain and DNS. It reads the site's primary and additional domains and asks xCloud whether the domain's DNS record points at the server. Each check is one lookup, so the agent repeats it while a record propagates. A record behind Cloudflare's proxy is reported separately.
- Choose the certificate source. You pick xCloud's free Let's Encrypt certificate, your own certificate, or the team's Cloudflare integration. If the site already uses a different provider, the agent tells you that switching needs an explicit override and asks first.
- Install or renew, once you approve. The agent restates the site and the provider, then installs or renews the certificate. A renewal only runs when the certificate is within seven days of expiry unless you ask for a forced renewal. For a WordPress site turning on HTTPS for the first time, it asks whether to run the database search-and-replace.
- Poll to issuance and verify. Install and renew report success before issuance completes. The agent polls the certificate status until it settles, then checks the site over HTTPS before it calls the job done.
- Hand off domain changes. If you want to add, change or remove a domain on an existing site, the agent gives you the dashboard path (Site > Domain) and the site's dashboard link, because the API only reads domains after creation.
Reference
SSL and domains Settings and Limits on xCloud
The facts OpenCode works within when it manages SSL and domains. Where a row names the dashboard, that step stays yours to take there.
| Setting or limit | What applies |
|---|---|
| Certificate status | A site's SSL state, its certificate list and one certificate's detail and status are all readable |
| xCloud certificate | Free Let's Encrypt certificate issued and renewed by xCloud. The domain's DNS should already point at the server before you ask |
| Custom certificate | You supply the PEM certificate and its private key. The key is a secret and is never returned by a read |
| Cloudflare certificate | Uses the team's connected Cloudflare account. When the zone is connected, xCloud writes the DNS record and the certificate itself at site creation |
| Switching provider | Needs an explicit force when another provider is already configured, so the agent asks before it replaces a working certificate |
| Renewal rule | A renewal does nothing unless the certificate is within seven days of expiry; a forced renewal skips that guard. Renewing needs the site SSL permission on your team role |
| WordPress first HTTPS | An optional database search-and-replace moves existing http:// URLs to https:// when a WordPress site adopts HTTPS for the first time |
| DNS check | One lookup per call. A proxied Cloudflare record is flagged, and on a Cloudflare-managed site the proxied record is the finished state, not a fault |
| Domains (read) | The primary domain, additional domains and the domain update status are readable through the API |
| Domains (write) | Adding, changing or removing a domain on an existing site is dashboard-only: Site > Domain. A staging site goes live under Site > Domain > Go Live |
| Deleting a certificate | Available through the API, but it can take a site off HTTPS, so the agent restates the target and waits for your approval |
| Cloudflare 526 errors | A 526 or a certificate warning is an SSL problem, so the agent reads the certificate first. A 522 is different: it usually means ports 80 and 443 are blocked at the origin |
Rules OpenCode has to follow
- Installing, renewing, switching or deleting a certificate stops for your approval, and the agent names the site and the provider before it asks.
- A success response means xCloud accepted the work, not that the certificate was issued: the agent polls the status and checks the live HTTPS URL.
- The agent never replaces a working certificate with a different provider without telling you, and it never turns off the Cloudflare proxy on a site xCloud manages through Cloudflare.
- Changing a domain on an existing site is a dashboard step; the agent gives you the path and the dashboard link xCloud returned, not a made-up workaround.
- A custom certificate's private key is a secret: it is never returned by a read and should not be pasted into a shared channel.
Example prompts
What Can You Ask OpenCode to Do for SSL and domains?
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.
Check the SSL certificate on shop.example.com. Provider, status, expiry date.Is DNS for example.com pointing at my Frankfurt server yet? Say if the Cloudflare proxy is on.List every site with a certificate that expires in the next 30 days. Renew nothing, just report.Check the SSL certificate on shop.example.com and tell me when it expires.Is the DNS A record for example.com pointing at my Frankfurt server yet? Tell me if the Cloudflare proxy is on.Issue a free SSL certificate for example.com once DNS resolves, then confirm the site loads over HTTPS.Renew the certificate on the shop site and tell me the new expiry date.List every domain and additional domain on the shop site and say which is primary.Which of my sites have a certificate that expires in the next 30 days?Use my connected Cloudflare account for the certificate on shop.example.com, and show me what will change first.Visitors get a Cloudflare 526 error on shop.example.com. Check the certificate and tell me what is wrong.OpenCode and SSL and domains: Frequently Asked Questions
What people ask before they let OpenCode manage SSL and domains through xCloud.
Can OpenCode find the domain from my repository and check its certificate?
Yes. OpenCode can read the hostname from a file in the project, such as an env example or a server config, and ask xCloud for that site's certificate status and expiry. You still confirm before it installs or renews anything.
Why did OpenCode say a renewal did nothing?
A normal renewal only runs when the certificate is within seven days of expiry. Ask OpenCode for a forced renewal if you want it sooner, and it will name the site and the provider and wait for your approval first.
Can an AI agent add a domain to an existing site?
No. The API reads a site's domains, additional domains and domain update status, but adding, changing or removing a domain on an existing site is a dashboard step under Site > Domain. A domain is chosen when the site is created. The agent can tell you what is currently set and give you the path.
Which certificate options can the agent install?
Three: xCloud's free Let's Encrypt certificate, a custom certificate you supply, and a certificate through your connected Cloudflare account. The agent checks the current state first and asks before it changes anything. Switching a site from one provider to another needs an explicit override.
Why did the agent say a renewal did nothing?
A normal renewal only fires when the certificate is within seven days of expiry. If you need it earlier, ask for a forced renewal and the agent will confirm before it runs. Renewing also needs the site SSL permission on your team role.
Does the agent set up my DNS records?
It reads and checks them rather than writing them. It can tell you whether a domain's record points at your server and whether the Cloudflare proxy is on. DNS and the certificate are written for you only at site creation, when the domain's zone is on a Cloudflare account you connected to xCloud.
What does the agent do about a Cloudflare 526 error?
It treats it as an SSL problem. It reads the site's certificate status and expiry, and fixes it with an installation or renewal after your approval. A 522 is a different fault, usually closed ports 80 and 443 on the origin, so it is checked against the firewall instead.
Other agents
SSL and domains with Other Agents
The same job, the same xCloud tools, a guide for each client.
- Manage SSL and domains with Claude CodeAnthropic's terminal coding agent. One claude mcp add command, plus the xCloud skills plugin with nine skills on top.
- Manage SSL and domains with ClaudeAnthropic's chat assistant on the web and desktop. Add xCloud as a custom connector, no terminal needed.
- Manage SSL and domains with Claude CoworkAnthropic's desktop agent for delegated work. Add the xCloud connector, then hand off hosting jobs.
- Manage SSL and domains with CursorThe AI code editor. One mcp.json entry with the compact URL, because Cursor stops at 40 tools.
- Manage SSL and domains with CodexOpenAI's coding agent for the terminal. A codex mcp add command or a config.toml entry, then codex mcp login.
- Manage SSL and domains with Hermes AgentNous Research's agent with memory and a built-in scheduler. An mcp_servers entry in config.yaml and one login.
- Manage SSL and domains with OpenClawThe open-source agent runtime with chat apps and automations. ClawHub skill plus the MCP client.
- Manage SSL and domains with WindsurfThe Cognition editor, now Devin Desktop. devin mcp add for the Devin Local agent, a serverUrl entry for legacy Cascade.
- Manage SSL and domains with GitHub CopilotCopilot agent mode in VS Code. One .vscode/mcp.json entry, or the Agent Plugins package.
- Manage SSL and domains with Gemini CLIGoogle's terminal agent. One gemini mcp add command, OAuth found automatically.
- Manage SSL and domains with ChatGPTOpenAI's chat assistant. A developer-mode app with the xCloud MCP URL and OAuth.
- Manage SSL and domains with ChatGPT dotsOpenAI's always-on agent in ChatGPT. Uses the xCloud MCP plugin you add in ChatGPT, with custom rules and scheduled tasks.
- Manage SSL and domains with GrokxAI's terminal agent, Grok Build. One grok mcp add command or a config.toml entry.
- Manage SSL and domains with Grok BotxAI's always-on Bots on a cloud computer. One Remote HTTPS MCP plugin, OAuth sign-in, routines on a schedule.
- Manage SSL and domains with KiroAWS's agentic IDE. One url entry in .kiro/settings/mcp.json, plus the portable xCloud Agent Plugins package.
- Manage SSL and domains with AntigravityGoogle's agentic IDE. One serverUrl entry in mcp_config.json and a browser sign-in.
- Manage SSL and domains with ZedThe Zed editor's Agent Panel. One context_servers entry in settings.json and a browser sign-in.
More OpenCode guides
- OpenCode and xCloud overview
- Deploy from Git with OpenCode
- Run Docker apps with OpenCode
- Install one-click apps with OpenCode
- Manage WordPress with OpenCode
- Back up and stage sites with OpenCode
- Manage servers with OpenCode
- Troubleshoot a broken site with OpenCode
- Speed up a slow site with OpenCode
- Secure sites and servers with OpenCode
Run Your Hosting from OpenCode
xCloud MCP, the Agent Skills and the Public API are free with every account. Connect once and ask.