Salus
Developers & agents

Salus Cloud developer and agent resources.

Everything you need to drive Salus Cloud programmatically — for you, or for the agent working on your behalf. The interface is MCP: connect the Salus MCP server and your assistant can create projects, deploy from a repository, provision databases, read logs and metrics, and roll back releases.

Predictable URLs

Resource index

Every machine-readable document Salus Cloud publishes, at a stable path. All of them are listed in llms.txt too.

ResourceURLFormatWhat it is
MCP server descriptor/mcp.jsonJSONMCP registry server.json for the Salus MCP server — name, version and how to obtain it.
MCP tool catalogue/mcp-tools.jsonJSONAll 52 tools the server exposes, each with its capability tier, plus the authorization model. Schema at /mcp-tools.schema.json.
OpenAPI specification/openapi.jsonOpenAPI 3.1The public, unauthenticated discovery surface of salus.cloud. Also served as /openapi.yaml.
Documentation/docs/HTMLQuickstart, projects, pipelines, deployments, databases, observability, billing — and the CLI.
CLI reference/docs/cli/HTMLInstall the salus binary, run it as an MCP server, and choose how much access your assistant gets.
Authenticationauth.salus.cloud/realms/salus/.well-known/openid-configurationOpenID ConnectOIDC discovery document. Authorization code flow with PKCE (S256); short-lived, refreshable tokens.
llms.txt/llms.txtMarkdownWhat Salus Cloud is, what it does for agents, pricing, and an index of every page on this site.
llms-full.txt/llms-full.txtMarkdownThe complete prose of all 49 pages in one fetch, each chapter stamped with its source URL — the whole site without crawling it.
Sitemap/sitemap-index.xmlXMLEvery indexable URL on salus.cloud.
Two minutes

Connect the Salus MCP server

One binary, one config block. There is no separate login step — the first time your assistant calls a Salus tool, it walks you through browser sign-in.

1 · Install

curl -fsSL https://download.salus.cloud/install.sh | bash

Prefer not to use a terminal? Install the Claude Desktop extension instead.

2 · Point your assistant at it

{
  "mcpServers": {
    "salus": {
      "command": "/usr/local/bin/salus",
      "args": ["mcp"]
    }
  }
}

Shown for Claude Code (.mcp.json). Cursor, Codex and OpenCode run the same salus mcp command — see the CLI docs.

52 tools

Scoped by what it can break

Every tool carries a capability tier. You pick how far your assistant reaches — Read-only, Standard, Operator or Full — when you set the server up, and you can narrow it to an explicit list of tools.

read

29

View only, no side effects

list_projects, get_app_logs, get_deployment_metrics

write

9

Create or modify — additive, reversible

create_project, create_database, update_project

operate

9

Act on running workloads

deploy_repo, rollback_deployment, set_deployment_offline

destructive

5

Delete — irreversible

delete_project, delete_database, delete_space

How access works. An agent acts on behalf of the person who invoked it, using that person's own access — so anything that person cannot reach, the agent cannot reach either, and the agent needs no seat of its own. Roles are scoped by organisation, space and project. Being explicit, because it matters when you evaluate us: an agent does not hold an identity separate from the human today, so platform records name that person, not the agent. The tier preset above is a guardrail on the machine running the server — it decides which tools that server offers. Platform roles and permissions apply to every call regardless.

What can change, and how you'll know

Versioning, deprecation and rate limits

Stated so you can integrate against these URLs without watching them. The same policy is machine-readable in /openapi.json under info.x-versioning, info.x-deprecation and info.x-rate-limits.

Additive only, dated, and never silently removed

The documents on this page are versioned by date, not by URL path. Paths are stable and new fields may appear without notice; nothing is removed or renamed without first carrying a Deprecation header (RFC 9745) and a Sunset header (RFC 8594) for at least 90 days, with a Link rel="successor-version" pointing at the replacement. Nothing is deprecated today, so those headers are absent — their presence is the signal.

There is deliberately no /v1/ prefix and nothing to negotiate on the way in. To tell one snapshot from another, read the Salus-Discovery-Version response header — it carries the same date as info.version in the OpenAPI document, so you can detect a change without refetching and diffing. The platform's own HTTP API is separate, versioned in its URL path, and not covered by this policy.

No rate limits, and no rate-limit headers

Every URL in the resource index is a static file. Nothing is metered, so there are no RateLimit headers to read — we don't emit them, because a limit nobody enforces is a number you'd throttle against for no reason. Polling is safe. DDoS protection at the CDN may still refuse abusive volumes; those thresholds aren't published and aren't expressed as rate-limit headers.

Prefer caching anyway: /mcp-tools.json changes on CLI releases and the rest change on site deploys, not per request. MCP tool calls run against the platform API, which is a different surface with its own limits.

Unknown paths return a real 404

Not a 200 with an error page. The body is negotiated from Accept: an RFC 9457 application/problem+json document with a machine-readable code and recovery URLs, markdown, or HTML. URLs here end in a trailing slash; an unslashed path 301s to the slashed form in one hop.

What isn't here

So you don't go looking

Three things developers reasonably expect that we don't publish yet. We'd rather you know now than find out mid-integration.

No public REST API contract

The platform is driven by a versioned HTTP API that the CLI and console use, but it is not publicly specified and carries no compatibility commitment — so it is not documented in /openapi.json, which covers the public discovery surface only. Use MCP or the CLI. If you need a supported REST contract, tell us what you're building.

No outbound webhooks

There is no webhook subscription API. To follow a build, poll get_pipeline after triggering a deploy; for organisation-wide activity, read list_organization_events.

No sandbox, and no API keys

There is no test or sandbox environment — every environment is a real one, so treat a Free-tier deploy as production. And there is no key to generate: authentication is browser-based OAuth with PKCE, driven by the MCP server itself (auth_login, then poll auth_status). Signing up is self-serve and free, and connecting a repository grants $10 of credit.

A connected Git provider is required

Salus builds from a clone, so a connected GitHub, GitLab or Azure DevOps repository is needed before a project can be created or deployed. There is no archive-upload or image-only path, and Salus does not create the repository for you.

Start with read-only. Widen when you trust it.

Install the CLI, connect it to your assistant, and give it the narrowest tier that gets the job done.