Access
Two logins before the admin
On Google Cloud the admin and the MCP endpoint sit behind Identity-Aware Proxy. Only allowlisted accounts get through. Caelo's own login is the second line, not the only one.
Security
Caelo keeps the place where your site is built away from the place where it is read. This page shows how that works, what protects the admin, and where the limits are today.
Two worlds
The public site is a folder of static files on a CDN. Everything that can change it sits somewhere else, behind a login. There is no admin path on your domain to probe.
Public
Private, behind login
A comment shows the idea. It waits in the small live database until someone reviews it behind the login. Once approved, it is written into the page at the next build. Data moves one way: the admin publishes what the public side needs, and the public side cannot reach your content.
Layers
No single control carries the whole load. If one layer fails, the next one still stands.
Access
On Google Cloud the admin and the MCP endpoint sit behind Identity-Aware Proxy. Only allowlisted accounts get through. Caelo's own login is the second line, not the only one.
Data
Editing data and visitor data live in separate databases with separate roles. The public gateway has no login to the editing database at all. Row-level security is enforced on every table, for owners too. Content changes go through named, validated operations, each one audited.
Approvals
About 50 actions always wait for a human click: users and roles, domains, themes, layouts, plugins, site-wide rollbacks. The person who approves needs the same permission the action requires. Every AI action is written to the audit log.
Plugins
A plugin the AI writes runs in a Deno sandbox without access to files, network or environment. The owner grants each extra right for one exact version, and a new version asks again.
Supply chain
Container images are signed. The installer and every upgrade check the signature before anything runs, take a backup first and roll back if the new version fails its health check.
Code
Every pull request runs CodeQL static analysis, a dependency review with a licence allow-list, and secret scanning with push protection.
Limits
Security claims are only useful if they say where they stop. These are the boundaries today.
Found something?
Report vulnerabilities through GitHub's private reporting or by email. Nothing is made public before a fix is out.