Let your AI agent deploy, with guard rails
Cloudgate gives Claude Code, Cursor or any MCP client its own member account: a role, a grant to the Services it may touch, and its own keys. It deploys, opens previews and reads logs and health. Every call lands in the audit log and secrets never reach it.
What is an Agent in Cloudgate?
An Agent is a member of your Organization that is not a person. Your AI tool acts as it, so what the tool can reach is decided in Cloudgate, not in a prompt.
- Its own role
- Reader to look, Operator to deploy and run. Never more than the role allows, whatever the agent is asked.
- Its own grant
- The Projects, Environments and Services it may reach. A staging grant keeps it out of production.
- Its own keys
- Agent keys, shown once, that you can let expire or revoke without touching anyone else's access.
- It outlives its maker
- The Agent belongs to the Organization. When the person who made it leaves, the agent keeps working.
How does an AI agent connect to Cloudgate?
Over MCP. The endpoint is your console's address followed by /mcp, and the agent key goes in the Authorization header as a bearer token. That is the whole of the setup: no OAuth flow, no plugin to install on the Server.
Create the Agent in Settings, Agents. The console's Connect panel then shows the configuration for each MCP client it supports, ready to paste into Claude Code, Cursor or another client.
On the Hosted instance the console is cloudgate.octabyte.app. On a self-hosted Cloudgate install it is your own address.
# What every MCP call carries POST https://cloudgate.octabyte.app/mcp Authorization: Bearer <agent key> Content-Type: application/json
What does an agent's deploy look like?
The agent queues a build, follows it, reads the log and checks health before it reports back. The tool names below are the real ones. A retried deploy joins the queued build, and the stored database address comes back masked.
# An illustrative session. Project, Service and ids are examples. you The checkout page fails on an empty cart. The fix is merged. Ship it to staging and tell me if it is healthy. agent deploy_service { "serviceType": "application", "serviceId": "storefront" } result { "deploymentId": "dep_7f2c", "coalesced": false, "message": "Deployment dep_7f2c is queued; poll list_deployments for it." } # The client timed out and retried. Nothing new is queued. agent deploy_service { "serviceType": "application", "serviceId": "storefront" } result { "deploymentId": "dep_7f2c", "coalesced": true } agent list_deployments { "serviceType": "application", "serviceId": "storefront" } result [ { "deploymentId": "dep_7f2c", "status": "done" }, ... ] agent read_deployment_log { "deploymentId": "dep_7f2c", "lines": 100 } result ... Installing dependencies DATABASE_URL=•••••• Build finished, starting container ... agent get_service_health { "serviceType": "application", "serviceId": "storefront" } result { "uptimeChecks": [ { "name": "checkout", "state": "up" } ], "openIncidents": [] } agent Deployed dep_7f2c to staging. The checkout uptime check is up and there are no open incidents.
Which tools can an agent call?
Four groups of tools, each checked against the Agent's role and grant on every call. There is no tool that runs a shell, applies a Plan or changes an alert.
- Deploy and operate
Queue a build, start or stop a Service, or cancel a Deployment that should not finish.
deploy_servicestart_servicestop_servicecancel_deployment
- Previews
Open a requested preview of a branch, give it more time, rebuild it, or end it early.
create_previewextend_previewredeploy_previewdelete_previewlist_previewsget_preview
- Plans and project config
Read the Project config, ask for a fresh Plan and read what it would change. Applying it stays with you.
get_project_configrequest_planget_plan
- Read health, logs and state
Follow a Deployment, read its log, and read the same health a person sees on the Health tab.
get_service_healthlist_deploymentsread_deployment_logget_serviceget_environmentlist_projectslist_environmentslist_domains
What stops an agent from doing damage?
The limits sit in Cloudgate, outside the model, so they hold whatever the agent is told or tells itself.
- Every call is in the audit log
- One row per call, with the tool and the outcome: succeeded, refused or failed. A refusal names its reason, such as permission, grant or rate limit.
- Secrets are masked in every result
- Stored secrets, from environment variables to database passwords, are replaced with
••••••in every answer, deployment logs included. - Rate limits per Agent
- 120 reads and 10 writes a minute, shared by all of an Agent's keys. Going over answers 429 with a Retry-After and spends nothing.
- Deploying twice is safe
- If a Deployment of the Service is still queued, a second
deploy_serviceanswers that one withcoalesced: trueand queues nothing. - Plans are requested, never applied
- An agent can tell you what a change to the Project config would create, change or destroy. You review the Plan and apply it in the console.
- Keys work in two places only
- An agent key is accepted at the MCP endpoint and the Gateway. The REST API and the sign-in routes refuse it, and a personal key is refused at
/mcp.
How does an agent test its own fix?
With a requested preview: a copy of the Application built from a branch, with its own address, that expires on its own. The agent never touches the Environment you ship from.
Pushing to a branch needs git access, which you give the AI tool at your git provider. An Agent's grant reaches Cloudgate's Projects, Environments and Services, never your repository.
Push a fix to a branch
The agent commits its change to a branch, with the git access you gave it.
Open a preview of that branch
create_previewbuilds the branch as its own preview, which expires by itself.extend_previewgives it more time.Read the log and health
read_deployment_logandget_service_healthshow whether the build worked and the app answers.Report back, or try again
It tells you what it found, or pushes another commit and calls
redeploy_preview.
Can agents call AI models you host yourself?
Yes, through the Gateway. Deploy a model served by Ollama, vLLM or llama.cpp as a Service, on your own Server and GPUs. Every call reaches it through Cloudgate's Gateway, which speaks the OpenAI API, so any OpenAI client works by changing its base URL.
The caller uses the key of a caller Agent, a third role that may call the AI models it is granted and nothing else. The Gateway counts token spend per model and per calling Agent, so give each app or agent its own caller Agent: its spend shows on its own line, and you can suspend one caller without cutting off the rest.
# Any OpenAI client, pointed at the Gateway OPENAI_BASE_URL=https://<console>/ai/<AI model id>/v1 OPENAI_API_KEY=<caller Agent key>
Where to go next
- Built your app with AI?
- The plain-language path from a folder or a template to an address you can share, with your AI doing the deploying if you like.
- Everything Cloudgate does
- Ways in, where it runs, and what it looks after once your app is live: databases, backups, domains, monitoring and access.
- Deploy from your terminal with the CLI
- For scripts and CI, the
cloudgatecommand uses a personal key, kept apart from your agents' keys. - Plans and prices
- Agents are not counted. A plan counts Servers and Cloud Environments, with a 30-day free trial.
Questions about AI agents
Which AI tools can connect to Cloudgate?
Any MCP client, such as Claude Code or Cursor. It connects to your console address plus /mcp with an agent key as a bearer token. The console's Connect panel has the configuration for each supported client.
Can an agent see my secrets?
No stored secret reaches it as written. Every tool result, deployment logs included, passes through a mask that replaces stored secrets with ••••••. A value the build prints that Cloudgate never stored is not masked, so do not let builds print secrets.
What is the difference between the Reader and Operator roles?
A Reader reads: Services, Deployments, logs, health and plans, and it can ask for a Plan. An Operator can also deploy, start and stop Services, cancel Deployments and manage previews. Both are limited to the Projects, Environments and Services in their grant.
Can an agent apply infrastructure changes or turn off alerts?
No. An agent can ask for a Plan and read it, but no tool applies or dismisses one, whatever its role. It reads a Service's health and never adds, edits or removes an uptime check or an error-rate threshold, so it cannot silence an incident.
What happens if an agent gets stuck in a loop?
Each Agent has two budgets: 120 reads a minute and 10 writes a minute. A call over budget is answered with HTTP 429 and a Retry-After header, and writes a refused row in the audit log. Calling deploy_service twice while a build is queued joins that build instead of queuing another.
Can I use an agent key with the REST API or the CLI?
No. An agent key works only at the MCP endpoint and the Gateway. The REST API and the console's sign-in routes refuse it. Scripts and the CLI use a personal key instead.
Are Agents included in every plan?
Yes. Agents and the MCP endpoint are part of the Starter plan on the Hosted instance, and of every self-hosted install. See Cloudgate pricing for what each plan counts.
Give your agent a key, not your keys
Create an Agent, grant it one Environment, and connect your MCP client. Every plan starts with a 30-day free trial.