Skip to main content
permissions controls what the person who uses your template can do with the apps it creates. The permissions are stored with each version and travel with the app, so a later version of the template does not silently take them away from apps that already exist.

The permissions

Combinations that are refused

Leaving the field out is always allowed: a closed template that does not mention env.add simply gets false.

Closed templates

A closed template keeps its code in the app’s /app, but the people who use it have no way to read it. Set code.view: false in a private template to build one.
The validator derives the rest and you cannot change it. In a closed template, the user: The block is enforced by the API on every file and code route, not only in the dashboard, so it applies equally to the CLI, the MCP server and the SDKs. A snapshot taken from a closed app can be restored only into the same closed template. Variables you list in env_hidden are injected into the app and are never returned by the Vertra Cloud API or shown in the dashboard. They are the right place for a key that belongs to you, such as a license. They exist only in a closed template (code.view: false): where the user can read the code or the variables, hiding a value would achieve nothing, so the validator refuses env_hidden in an open template. A version that uses env_hidden cannot enable share.full_copy, so the value never reaches a copy. If the app is ever unlinked from the template, the hidden values are deleted.
Databases are never closed. A closed template does not hide the data in its Postgres, MongoDB, Redis or MySQL: the user can connect to them directly. Keep your intellectual property in the code and the user’s data in the databases.

What Vertra Cloud guarantees, and what it does not

The person who receives your template sees a notice that the code is closed and that what they type goes to code they cannot read. Be careful with what you ask for in inputs.

Updates and permissions

When you publish a version, permissions never become more restrictive for apps that already exist: each flag stays on if the app’s current policy or the new version grants it. A closed template that you later open opens it for existing apps too; the other way around does not close an app that already runs. New services in a new version are created with the new version’s policy.

Using a closed template

The same rules, from the user’s side.

Private templates

Where closed templates are created.
Last modified on October 28, 2026