major.minor.patch: the major is the platform generation (v26 since March 21,
2026; v25 from launch to February 2026), the minor is the monthly release, and each patch
groups everything delivered on the same day.
November 8, 2026
Automatic app updates for Docker images
Images now have the option Update apps automatically after every build. When it is on, every successful build of the image (a push to GitHub, an upload or a manual rebuild) restarts on the new version the apps of that image that are running. Stopped apps stay stopped, and an app that fails to update does not stop the others: the failure shows up in the activity log. See Custom Docker images.- Default: an image created from GitHub starts with the option on; all others start with it off. Change it on the image page.
- Deploys tab: an app that runs from an image now shows which image the deploy comes from and whether automatic updates are on. The GitHub link belongs to the image, not to the app.
- Same rules as any deploy: zero-downtime deploys and automatic rollback apply when your plan includes them.
Clearer warning about WORKDIR /app
At runtime /app is the appβs persistent disk, mounted over the image, so what the image puts there is hidden. The check now warns about WORKDIR /app only in the final stage of the Dockerfile (a build stage of a multi-stage build no longer triggers it), and the warnings of every build, including those started by a push to GitHub, are kept on the image. The panel shows a banner on the image page and a warning on the Deploys tab of the apps that use the image, and asks you to confirm before creating an app from it. To fix it, use another directory (such as WORKDIR /srv) and build again. See Custom Docker images.warnings(list of{ code, line }) is returned byGET /v1/images/:image_idand by the image list.
API and MCP
auto_update_apps(boolean) is returned byGET /v1/images/:image_idand accepted byPATCH /v1/images/:image_id.- The MCP
update_imagetool acceptsauto_update_apps.
Language of the site and of emails
- Site: on your first visit, the site opens in Portuguese when you access it from Brazil or another Portuguese-speaking country, and in Spanish from a Spanish-speaking country, even when the browser is set to another language. Elsewhere, the browser language still decides. A language you pick in the language selector always wins and is remembered.
- Account and emails: a new account now keeps the language of the page where it was created, so the sign-in email and every later email arrive in that language. Existing accounts that never chose a language are updated on the next sign-in. You can always change it in your account settings.
Snapshots of any size can be downloaded
Downloading a snapshot no longer has a size limit.GET /v1/users/:id/snapshots/:snapshot_id/download now returns the ZIP for any existing snapshot, in a single response.Very large projects show a clear message
Downloading a project that has more than 300 MB of files directly as a ZIP now returnsDOWNLOAD_TOO_LARGE (HTTP 413) and the panel asks you to download a snapshot instead, which has no size limit. See Download Application.Snapshot before deleting is now optional
Deleting an application or a database no longer creates a snapshot automatically. The delete dialog in the panel now has the option Create snapshot before deleting, off by default (shown on plans with manual backups). When it is on, the panel creates the snapshot and deletes only if it succeeds; when it is off, the resource is deleted right away.- API:
DELETE /v1/apps/:idandDELETE /v1/databases/:iddelete right away. To keep a backup, create a snapshot first. - Unchanged: deleting a whole stack or a custom Docker image (which deletes its apps) still takes a safety snapshot first. When the platform removes projects on its own (an expired plan or an account without a plan), the backup is still required: if it fails, the project is stopped and kept, not deleted. See Back up and restore with snapshots.
Snapshot size limit
A snapshot can have at most 4 GB (the size of the snapshot file, already compressed). Above that, creating it is refused withSNAPSHOT_TOO_LARGE (HTTP 413) instead of a generic error. The limit applies to manual, daily and safety snapshots. Downloading has no such limit: any existing snapshot can be downloaded. See Back up and restore with snapshots.New daily limits for manual backups
Manual backups now have two daily limits: up to 5 per project (application or database) and, across all your projects, 2 per GB of plan RAM per account, at least 5 and at most 64: 5 on Starter 1 and 2, 8, 12 and 16 on Pro 4, 6 and 8, 24, 32 and 48 on Business 12, 16 and 24, and 64 on every Enterprise size. The day is counted in BrasΓlia time, the 5-minute interval between manual backups of the same project still applies, and the automatic daily backup does not count. See Plans and limits.Adjusted traffic protection limits
We adjusted the limits of Vertra Shield and of the request rate limit per visitor IP so that legitimate traffic is interrupted less often.- Vertra Shield: applications that make many outgoing requests, such as bots and integrations that call external APIs, are paused less often. A first occurrence no longer pauses the application right away. Higher plans keep proportionally higher limits.
- Request rate limit per visitor IP: the limit for applications on
*.vertraweb.appand on custom domains was adjusted. If your application legitimately receives high-volume traffic from a single IP, such as a server-to-server integration, contact support. See Platform protections.
November 3, 2026
Web Analytics
Every web application now has an Analytics tab with the traffic measured by Vertraβs edge network: how many people visit, how fast the site answers, where the errors are and what each request looked like. There is nothing to install and nothing to turn on. See Web Analytics.- Summary: a plain sentence about how the site is doing, plus visitors, requests, response time (p95) and error rate, the traffic chart and the slowest pages.
- Traffic: requests, visits and bytes over time, broken down by country, path, referer, device, operating system, browser, HTTP status, method, protocol, network, content type, cache result and verified bots. Click any value to filter every panel at once.
- Errors: 5xx errors over time, the paths with the most errors and the status codes behind them. 4xx can be included with one switch.
- Performance: the time the visitor waited and the time your application took, at p50, p75, p90, p95, p99 and p99.9, per country, per edge location, the slowest paths and errors and time per path.
- Requests: the request log with time, path, status, times, country, device and request ID. IP addresses and URL parameters are masked until you choose to show them.
- Periods and comparison: pick 5 minutes up to 30 days, or a custom range, and compare it with the period right before, the same time the week before, or a start date you choose. The compared period always has the same length.
- Plans: Summary, Traffic, Errors and comparison are on every plan. Performance and the request log are available from Pro. History goes back 7 days on Starter and Pro and 30 days on Business and Enterprise. See History and plans.
- Privacy: Vertra keeps no data that identifies your visitors. Only each applicationβs totals (requests, visits, bytes, error rates and response time) are kept, for up to 31 days, and they are deleted with the application. The Privacy Policy describes this. See Privacy.
API, SDKs, CLI, MCP and VS Code extension
- New routes under the
apps:readscope:GET /v1/apps/:id/analytics,/analytics/errors,/analytics/performanceand/analytics/requests. They takestart,end, one filter per dimension,compareandcompare_start. - New error codes:
PLAN_DOES_NOT_SUPPORT_WEB_ANALYTICS_PERFORMANCE,PLAN_DOES_NOT_SUPPORT_WEB_ANALYTICS_REQUESTS,ANALYTICS_RANGE_EXCEEDS_PLANandANALYTICS_BUSY. See Errors. GET /v1/plansgainsfeatures.web_analytics_performance,features.web_analytics_requestsandlimits.web_analytics_history_days.@vertracloud/api-types0.6.1 has the new types. The JavaScript, Python and Go SDKs (0.4.1), the CLI (vertra app analytics,errors,performanceandrequests, v0.3.6), the MCP server (four read tools, 0.3.4) and the VS Code extension (0.3.4) read Web Analytics.
November 1, 2026
New plans: Starter, Pro, Business and Enterprise
Vertra Cloud now has 22 plans in four families: Starter (1 and 2 GB of RAM), Pro (4, 6 and 8 GB), Business (12, 16 and 24 GB) and Enterprise (from 32 GB up to 512 GB). Memory is still the only thing you pay for. The price, vCPU and limits of every plan are in Plans and limits.- Every plan includes deploy from GitHub, daily and manual backups, choosing your subdomain, rolling back to an earlier version, the safety snapshot taken before an application is deleted, and Blob Storage.
- From Starter 2: zero-downtime deploys, workspaces and custom domains.
- From Pro: the database data manager, automatic rollback and custom Docker images (up to 2 on Pro, 6 on Business and 20 on Enterprise).
- More room as the plan grows: custom domains per application (1 on Starter 2, 2 on Pro, 5 on Business, 20 on Enterprise), workspace members, deploys per hour, versions kept for rollback, API requests and Blob storage all rise with the plan.
- The βPowered by Vertra Cloudβ badge now appears only on sites hosted on Starter 1.
- Economy, Scale, Intermediary and the other plans of the previous grid are no longer sold.
Upgrade at no extra cost for current subscribers
Every active subscription moved to the equivalent plan of the new grid at no cost, and the expiry date stays the same. You donβt have to do anything and nothing was charged. Applications and databases keep the memory they already have; you decide how to use the extra RAM.The new planβs vCPU ceiling reaches each application and database the next time it restarts or is deployed. Nothing restarts on its own. The email you received names your new plan and what it includes.Discord roles
On the Vertra Cloud Discord server, plan roles are now one per family: Starter, Pro, Business and Enterprise, with no size in the name. If your account has Discord linked, you get the role for your new plan automatically.Billing periods and payment
Plans can be bought for 1, 3, 6 or 12 months: 3 months get 10% off the monthly price, 6 months get 15% off and 12 months get 25% off. The 6-month option is back. You can pay with Pix or card on every plan, Starter included, and a plan paid by card renews automatically.Backups on every plan
Manual backups are now available on every plan, with a daily limit per account that grows with the plan, from 8 on Starter 1 up to 200 on Enterprise. The day is counted in BrasΓlia time. The previous limit of 10 per hour is gone. Over the limit, the API answers429 SNAPSHOT_RATE_LIMITED with details.limit and details.resets_at, the moment the budget resets. Daily backups run on every plan and are kept for 30 days. See Backups and snapshots.API, SDKs, CLI, MCP and VS Code extension
GET /v1/plansis a new public route that lists the plans on sale, with price, memory, vCPU, limits, features and the billing periods with their discounts. It needs no API key. See List Plans.POST /v1/orders/quotereturns the exact price of a plan and period, with an optional coupon, without creating an order. It needs thebilling:readscope. See Quote Order.POST /v1/ordersacceptsmonths: 6and answersPLAN_NOT_FOR_SALEfor a plan that is no longer sold.- Plan names:
plan.nameinGET /v1/users/menow returns names such asstarter-1,pro-4,business-12andenterprise-32. - The JavaScript, Python and Go SDKs, the CLI, the MCP server (
list_plansandquote_order) and the VS Code extension know the new plan names, the 6-month period, the plans route and the quote.
October 31, 2026
Templates: deploy ready-made software in one click
Pick a template, answer a few questions and Vertra Cloud creates everything it needs, as one operation: the application, its databases and the variables that connect them. If any step fails, everything the deploy created is removed, so you never end up with half a setup.- Catalog: n8n, OpenClaw, Hermes Agent, Evolution API, Open WebUI, Uptime Kuma and starter Discord bots in JavaScript and Python. Browse it in the dashboard, with search, categories and a βfits my planβ filter, or with
vertra template list. - Generated secrets: encryption keys and tokens are generated for you. A secret an output needs is shown once, at the end of the deploy.
- Required plan is calculated from what the template needs (memory, web publishing, Docker images). The assistant tells you what is missing and why.
- Docker image slots: an image template takes one image slot per distinct image in use, not one per app. Three apps from the same template use one slot. Code templates use none.
POST /v1/apps/imagerefuses images that belong to a template, withIMAGE_TEMPLATE_ONLY. - Updates are never automatic. A new version shows βNew version availableβ; updating takes a safety snapshot first and rolls back on failure.
- Everywhere: dashboard,
vertra templateandvertra stackin the CLI, the MCP server and the JavaScript, Python and Go SDKs. New API key scopes:templates:read,templates:write,templates:deploy,stacks:read,stacks:writeandstacks:delete. See the Templates guide and the API reference.
Stacks
A template with more than one service creates a stack: applications, databases and Blob folders that belong together. You can also build one by hand: add a database to an application, or turn the apps and databases of a folder into a stack.- Connection variables and the client certificates are injected into the app and kept up to date when a database password or certificate changes. Variables managed by a stack are marked as such in the dashboard.
- Apps in a stack reach databases through their public address, with client certificates managed by the platform.
- A Connect panel shows the connection code in the language of your app, with the real variable names.
- Snapshot and roll back the whole stack together, and update it to a newer template version.
- Deleting a stack asks whether to only undo it (the resources stay, loose) or delete everything.
- Blob in stacks: a stack can have its own Blob folder with a restricted key. Undoing the stack keeps the files.
Your own templates and share links
- Save as template from an app or a stack, from a GitHub repository, or write the manifest (
vertracloud.template.yaml) in the editor. Secrets never go in: every variable becomes a question, and you review what is copied. - Available on plans that can create Docker images, up to 5 private templates per account. In a workspace, only the owner creates and manages templates.
- Share links let another account use your template (use link) or take a full copy (copy link). Both show a preview with the author and what will be created, and carry the βNot verified by Vertraβ label. You can revoke a link at any time; what was already created keeps running. Use Report on a preview or on a created app to flag abuse.
- Closed templates hide the code from whoever uses them: no file manager, downloads or terminal, on every route. Databases are never closed.
vertra template validatechecks a manifest locally against the public JSON Schema.
Blob: keys restricted to one folder
An API key withblob:* scopes can now be limited to one folder with blob_prefix. The S3 credentials derived from the key inherit the limit. Operations outside the folder, and account-level ones such as rules, domains and statistics, fail with BLOB_PREFIX_DENIED. See Blob authentication.Python 3.14
Python 3.14.10 is now available and is thelatest version. 3.13.17 stays recommended, and no app changed version on its own. Pick it in Settings β General, in VERSION or through the API. See the knowledge base.Databases
- The page How do I connect to each engine? now covers Prisma with client certificates and Python 3.13.
- Resetting a database certificate rewrites the files of the apps connected through a stack. Restart those apps to pick them up.
Folders
Dashboard folders have notes and a position on the Flow canvas, and the Flow groups became folders.October 26, 2026
Documentation in Portuguese and Spanish
The documentation is now available in Brazilian Portuguese and Spanish, alongside English. Pick the language in the switcher at the top of any page. English pages keep their addresses, and the translations live under/pt-br and /es-es. Guides, tutorials, Blob Storage, the developer tools and the changelog are translated. The API reference and the knowledge base stay in English in every language, so the contract reads the same everywhere.Corrections across the docs
- API reference: every endpoint now lists the authentication errors the API really returns:
AUTH_TOKEN_MISSING,API_KEY_INVALIDandSESSION_REVOKEDwith 401, andAPI_KEY_IP_DENIEDandAPI_KEY_SCOPE_DENIEDwith 403. The genericUNAUTHORIZEDcode, which the API never returns, is gone, and the error examples show the right status codes. - Creating an app from the terminal: run
vertra uploadin the project folder. It creates the application and saves its ID invertracloud.config, sovertra deploycan then send new code to it. The docs used to start withvertra deploy, which only updates an application that already exists and fails on an account with none. The CLI page also explainsvertra linkandvertra unlink. - Panel steps point to the real tabs: Settings β General, Deploy, Environment variables and Network. Automatic deploy is Settings β Deploy β Enable auto deploy.
- Database storage is 6 GB + 1 GB for every 512 MB of RAM, or 3Γ the RAM when that is larger.
- Application plus database: running an application with PostgreSQL, MySQL or MongoDB needs Scale or above. With Redis, Pro is enough.
- Workspace roles have 20 permissions. Some pages said 19 or 21.
- Code samples: fixed the Python Discord bot (
message.channel.send), the Flask, Telegram, Ruby, PHP and Django tutorials, and the Python, Go and JavaScript SDK examples. - Plan downgrade: the example now moves Enterprise-4 to Intermediary, one step down.
October 25, 2026
Custom Docker images
Enterprise 28, Enterprise 30 and Enterprise 32 can now build an image from their ownDockerfile and run applications from it. Use it for another language or version, system packages, your own start process or ready-made apps.- Create an image from a ZIP file of up to 100 MB, or from a GitHub repository. The branch is optional: without it, the repositoryβs default branch is used. A repository in your GitHub App installations is linked, so each push rebuilds the image; a public repository outside them is built once, with no link. In the panel, New project also has the Use a Docker image option to create an app from an image you already have. The project needs a file named exactly
Dockerfileat its root. The image is built in an isolated build environment with a 26-minute limit, and the result can be up to 10 GB. Each account can have up to 20 images. - Check before you build. The panel reviews your
Dockerfilebefore the build starts: instructions that would weaken the isolation of the build are refused, and common mistakes, like.envfiles in the project, are pointed out so you can fix them..env*files never go into the image, and yourDockerfileis never rewritten. See what is refused and what is warned about. - Create apps from the image. Several apps can share one image, each with its own variables. For a web app, the port is the first
EXPOSEof theDockerfile, or 80, and it reaches your app asPORT. An app created without web can be published later by informing the port. - Update the image by uploading a new context, by a commit on top of the current context, or by a push to a linked GitHub branch (link a repository from your GitHub App installations; the branch is optional). The GitHub Action accepts
image-idto rebuild an image. A rebuild never restarts your applications: each app moves to the new version when you restart or deploy it. - Versions and rollback. Every successful build is a version. Apps keep 30 releases for 30 days, and a rollback starts a version that was already built.
- Snapshots of these apps hold the data of
/appand the image version. When you restore, you can also go back to that version if it still exists. - Rename and describe. Give an image a description (up to 128 characters) when you create it, and rename it or change its description later in the panel, the API, the SDKs, the CLI, the MCP server or the VS Code extension. Nothing is rebuilt and your applications keep running.
- Deleting an image deletes every application created from it, after you type the image name.
- In the VS Code extension. A new Docker images view lists your images and their apps. From it you can create an image from a folder or a GitHub repository, rebuild it, follow the build log, browse versions, link a GitHub branch, delete it and create an app from it. Deploying, publishing and restoring snapshots of image apps also work from the extension, and a new app from a folder with a
Dockerfileoffers to create an image instead.
/v1/images (including PATCH /v1/images/{image_id} to rename and describe) and POST /v1/apps/image, with the new images:read, images:write and images:delete API key scopes (deleting an image that has apps also needs apps:delete, and uploading files to an app that runs an image also needs images:write), and the new error codes PLAN_DOES_NOT_SUPPORT_CUSTOM_IMAGES, MAX_IMAGES_REACHED, IMAGE_NOT_FOUND, IMAGE_VERSION_NOT_FOUND, IMAGE_BUILD_IN_PROGRESS, IMAGE_NOT_READY, IMAGE_BUILDER_UNAVAILABLE, IMAGE_CONTEXT_TOO_LARGE, IMAGE_NAME_MISMATCH, IMAGE_TOO_LARGE, IMAGE_LABEL_REFUSED, IMAGE_VOLUME_REFUSED, IMAGE_APP_PORT_REQUIRED, IMAGE_APP_FIELD_NOT_APPLICABLE, IMAGE_APP_CODE_NOT_APPLICABLE, DOCKERFILE_NOT_FOUND and DOCKERFILE_REFUSED. Read the guide and the API reference.Improvements
- Choose the branch of your GitHub deploys. Importing a repository from GitHub in the panel now has a branch selector, and automatic deploy follows the branch you pick (the deploy webhook route accepts an optional
branch). Existing automatic deploys keep followingmainandmaster. - Developer links in the sidebar. CLI, VS Code extension, MCP, Whatβs new and Docs moved from the account menu to the panelβs sidebar.
- One-click theme. Appearance in the account menu is now a single button that cycles through System, Light and Dark.
- Deleting an application waits for the result. The confirmation dialog stays open with its progress until the deletion is done, then closes with the application already gone from the list. If the deletion fails, the dialog stays open and shows the reason.
- Already signed in. Opening the sign-in page while signed in takes you straight to the dashboard.
Fixes
- Importing a GitHub repository whose name contains
.gitin the middle, likename.github.io, no longer fetches the wrong repository. - Restoring a snapshot (application or database) or rolling back to a release from a damaged file is now refused before anything changes (
INVALID_ZIP_STRUCTURE,400). The applicationβs files and the running database stay as they were; before, a database could be left stopped and an applicationβs files could be erased. An application snapshot with no files is refused the same way. - Actions on applications, databases, snapshots, domains and files now always record their activity in the workspace the resource belongs to.
- Connecting an application to automatic deploy now checks the repository against your GitHub App installation. A
repo_idthat does not match the repository is refused withVALIDATION_ERROR, a repository outside the installation returnsINSTALLATION_NOT_FOUND, and GitHub being unavailable returnsFETCH_ZIP_ERROR(502).
October 24, 2026
New databases get a dedicated vertracloud user
Databases created from this release on come with a dedicated user named vertracloud and a default database named vertracloud, on all four engines:TLS with the client certificate is still required, as before. The dashboard, the API and the MCP server show the right user and connection string for each database.
Redis: the username is now required on new databases
On new Redis databases, log in with the user and the password (AUTH vertracloud <password>, or the user in the URL). A password alone is rejected. Use the connection string shown in the dashboard when you create a new Redis database.username in the API
The database object returned by the API now includes username. Read it instead of assuming the user from the engine, since older and newer databases use different users. See Databases.Applications can only write to /app, /tmp, /var/tmp and /run
The rest of the containerβs file system is now read-only, and HOME is /app. Anything your app writes to its home directory (package manager caches, config folders) goes to /app and counts toward your disk quota. /tmp is half the appβs RAM, with a minimum of 128 MB and a maximum of 1 GB, and /var/tmp is limited to 64 MB; both live in memory and are cleared on every restart. An app that writes anywhere else gets a read-only file system error. Applications switch over on their next deploy or restart.Temporary files no longer pile up in your project: the appβs TMPDIR is no longer redirected into the project folder after dependencies are installed, so temporary files go to /tmp and are cleared on restart.Choose the database version
When you create a database you can now pick its version, in the dashboard or withversion in the API. The recommended version is the default.The database object returns
version, and the new List Database Versions endpoint lists what is available per engine. A version outside the list fails with INVALID_DATABASE_VERSION.When you create a database from a snapshot, it starts on the snapshotβs major version (a MySQL 8.0 snapshot creates a MySQL 8.4 database, and a Redis 7.4 snapshot a Redis 8.2 one). version can be the same or newer, and an older one fails with SNAPSHOT_VERSION_NEWER. Restoring a snapshot taken on a newer version into an older database fails with the same code and nothing is changed.Security updates on restart
Existing databases keep their major version. Security updates (patch releases) are applied automatically whenever the database is restarted: stop it and start it again in the dashboard. Existing MySQL 8.0 databases stay on 8.0 and existing Redis 7.4 databases stay on 7.4; neither is available for new databases. If you usebtree_gist indexes on float columns or ltree indexes in PostgreSQL, run REINDEX on them after the restart.Fixed: MySQL password reset
Resetting the password of a MySQL database created with thevertracloud user now takes effect. Before this fix the new password was shown but not applied, and the old one kept working.October 22, 2026
Deno, .NET and Elixir
Three new languages are available when you create an application.- Deno (
deno): 2.9.8 recommended and latest, plus 2.8.3. Detected fromdeno.json,deno.jsoncordeno.lock.MAINis the entry file, such asmain.ts. - .NET (
dotnet, shown as .NET (C#)): 10.0.402. Detected from.csproj,.fsproj,.slnorglobal.json.MAINis the.csproj, and the app listens on the port inASPNETCORE_HTTP_PORTS, which is already set to 80. - Elixir (
elixir): 1.20.4 on OTP 28. Detected frommix.exs. Phoenix is supported withSECRET_KEY_BASEandPHX_HOSTset as environment variables. Runmix assets.deploybefore zipping, or use a project without assets.
Updated runtimes and end of support
Every runtime moved to its latest patch release:Versions that reached end of support were removed: Node.js 18 and 20, Bun 1.2, Go 1.21 to 1.23, Ruby 3.2, and Rust 1.97 and 1.98. An application saved on an older version now runs on the newest release of the same line (for example, Python 3.11 runs on 3.11.17). If the whole line was removed, it runs on the
recommended version. Check the full list in the knowledge base or with List Runtimes.Security fixes in the updated runtimes
The new versions include these upstream security fixes. Applications pick them up on their next deploy or restart.- Node.js 22.23.4 and 24.22.1: seven fixes, including CVE-2026-111497 in the Brotli decoder. 24.22.1 also fixes CVE-2026-105483. Node.js advisory
CVE-2026-105481CVE-2026-105482CVE-2026-106069CVE-2026-106072CVE-2026-106073CVE-2026-106074 - PHP 8.2.35, 8.3.36 and 8.4.27: CVE-2026-109618 and CVE-2026-109619, both in the PHP core. GHSA-w8hw-w9fx-j79w and GHSA-6wmf-4rv5-p3rp
- Python 3.11.17, 3.12.15 and 3.13.17: eight fixes, including CVE-2026-82049 in
tarfile. 3.13.17 also ships updated root certificates. 3.11.17, 3.12.15 and 3.13.17 release notesCVE-2026-15310CVE-2026-15806CVE-2026-17084CVE-2026-19445CVE-2026-19553CVE-2026-19672CVE-2026-87910 - Go 1.26.10 and 1.27.3: CVE-2026-56866 in
net/http, CVE-2026-111943 incrypto/x509and the other fixes of the 1.26 and 1.27 lines. Go release history - Bun 1.3.14 and 1.4.4: fixes for HTTP request smuggling, TLS, WebSocket and the package manager. Bun 1.3.14 and Bun 1.4.4
More reliable language detection
The platform now reads only the manifest files at the root of the project and checks each ecosystem beforepackage.json. A Python, PHP (Laravel) or Ruby (Rails) project that also has a front-end package.json is no longer taken for JavaScript. bun.lock is recognized as Bun, Java projects are also recognized by build.gradle.kts, settings.gradle(.kts), mvnw and gradlew, and MAIN=./src/index.js is accepted.To force a language, set LANGUAGE=<slug> in vertracloud.config (the key is "language" in vertracloud.config.json) or send language on POST /v1/apps. The precedence is the API field, then the config file, then detection. See Configuration.The creation wizard shows what was detected
Before you create an application, the creation wizard in the dashboard now shows the detected language, the main file and the version, so you can check them (or set them yourself) before anything is built.vCPU now scales with each projectβs RAM
A projectβs vCPU now grows with its RAM, up to the planβs vCPU: on plans with up to 2 vCPU, +1 vCPU for every 512 MB, and on plans with more than 2 vCPU, +1 vCPU for every 1 GB. Projects with 512 MB or more get at least 2 vCPU (never above the plan), and smaller ones get at least 1. Small projects on smaller plans gain vCPU, and on plans with more than 2 vCPU a projectβs vCPU now follows its RAM (for example, 4 GB = 4 vCPU). The change applies the next time the project restarts or is deployed. See Plans and limits.Breaking change: missing_dependencies removed
The warning about missing dependencies shown before you send a project is gone, and the missing_dependencies field is no longer returned by the upload and application responses. If your code reads this field, remove it. When an application crashes because a dependency is missing, the applicationβs logs still show it.Automatic cleanup when the language changes
When you change an applicationβs language, the dependencies of the previous language are now cleaned up automatically on the next restart. Thecleanup_old_runtime_language field of the restart route was removed and is ignored if sent.INVALID_LANGUAGE answers 400
INVALID_LANGUAGE is now documented, and returned, as HTTP 400 instead of 500, because it reports a value the request sent. See Errors.October 22, 2026
Multiple custom domains per application
An application can now have several custom domains, and adding, changing or removing one never restarts the application. Custom domains start at the Intermediary plan, and the number per application grows with the plan:- Automatic
www: addingexample.comalso addswww.example.com, and the other way around. The companion redirects to the main domain, doesnβt count toward your limit, and can be turned off. Either one can be made the main domain. - Port per domain: each domain can reach a different port of your application, from 1 to 65535, with up to 5 ports besides 80 per application.
- Path prefix: a domain can add a path such as
/apiin front of every request. Recommended for APIs. - Redirects: a domain can redirect to another domain of the same application with a
301,302,307or308(default308), keeping the path and the query string. - Status and cleanup: each domain shows its status and certificate state. A domain that stays without DNS for 14 days is removed automatically and you get an email. When a domain is removed, by you, by unpublishing or by this cleanup, delete its
CNAMEand validationTXTrecords at your DNS provider. Root domains show a warning, because aCNAMEon the root needs a DNS provider with CNAME flattening.
/v1/apps/{id}/domains: list, add, update, remove and DNS records. The SDKs, the CLI, the MCP server and the VS Code extension support them. See Connect custom domains.Breaking change: plans are identified by name in the API
The API identifies a plan by its name, such aspro or enterprise-8. The numeric plan ID is gone.GET /v1/users/meno longer returnsplan_idorplan.id. Readplan.nameinstead.planisnullwhen the account has no active plan.- Applications, databases and workspaces return
owner_plan(the plan name, ornull) instead ofowner_plan_id. - Accounts without an active plan get
PLAN_REQUIREDwhen they create applications or databases or publish a site.FREE_PLAN_SUSPENDEDandFREE_PLAN_NO_WEB_PUBLISHare no longer returned. - The full list of names is in the knowledge base.
Breaking change: custom domain routes replaced
GET, POST and DELETE /v1/apps/{id}/network/custom and GET /v1/apps/{id}/network/dns are replaced by the domain routes above.- Application payloads return
domains, a list, instead ofcustom_domain.public_urlpoints to the main domain. The publish routes return the hostnames indomains. NO_CUSTOM_DOMAINis no longer returned: an application without domains has an empty list.DOMAIN_ALREADY_IN_USEnow answers409andCUSTOM_DOMAIN_REGISTRATION_FAILEDanswers502.- New error codes:
DOMAIN_NOT_FOUND,DOMAIN_LIMIT_REACHED,DOMAIN_PORT_LIMIT_REACHED,INVALID_DOMAIN_PORT,INVALID_PATH_PREFIX,INVALID_REDIRECT_TARGETandDOMAIN_CONNECT_UNAVAILABLE. See Errors.
plan_id, owner_plan_id or custom_domain.SDKs, CLI, MCP server and VS Code extension 0.3.0
New versions of the SDKs (JavaScript, Python and Go), the CLI, the MCP server and the VS Code extension support multiple custom domains per application and plans by name. They follow the breaking changes above, so update them together.- CLI: new
vertra app domainscommands (see CLI). Stopping an application or a database and removing an environment variable now ask for confirmation; declining any confirmation exits with code 1. - MCP server: new domain tools. Tools that delete, overwrite, stop, restart or change access are marked destructive, so the client asks before running them. Logs, files and other content from your applications are marked as untrusted. See MCP.
- VS Code extension: manage all of an applicationβs custom domains and see plan names.
- Your API key stays on the Vertra Cloud API: the MCP server and the VS Code extension no longer follow redirects, and the SDKs drop the key when a redirect leaves the API. The SDKs and the MCP server also reject invalid request paths before sending anything.
- GitHub Action v1.0.4 uses CLI 0.3.0 by default. See GitHub Actions.
Environment variable limit raised to 256
An application can now have up to 256 environment variables, up from 25. Keys can have up to 255 characters and values up to 3,072. See Configuration.Malformed JSON now returns 400
A request with malformed JSON in the body now gets400 with INVALID_JSON, where it used to get 500. Other request problems also answer with their own status and a stable code: UNSUPPORTED_MEDIA_TYPE (415), BAD_REQUEST (400) and REQUEST_TIMEOUT (408). A request with content-type: application/json and an empty body still returns 400 EMPTY_BODY. See Errors.October 20, 2026
Stronger protection against traffic floods
Applications on*.vertraweb.app and on custom domains now have stronger protection against traffic floods: abusive visitors are blocked before they reach your application. Applications that receive a sudden traffic spike are no longer paused by Vertra Shield.During a Shield pause, start, restart and configuration changes now show the reason and when the pause ends, instead of a generic access error (APP_SHIELD_COOLDOWN). See Platform Protections.October 18, 2026
App creation returns immediately and the build continues in the background
Creating an application no longer holds the request open until install and build finish.POST /v1/apps now answers 202 Accepted right away with the application in the new building status, and the build continues in the background with live logs. When it ends, the application becomes up, or down if the install or build failed, with the output in its logs.- Following the build: read
GET /v1/apps/{id}or open the real-time logs. - During the build: start, stop, restart, file deploys, rollback, snapshots, restores and configuration changes answer
409 APP_BUILDING. Deleting the application is allowed. - Interrupted builds: the application stays
downandBUILD_INTERRUPTEDappears in its log. If the platform cancels the creation, the application no longer exists. - Failure reason: when a build or install fails,
GET /v1/apps/{id}returns the code in the newlast_build_errorfield (nullafter a successful build), and the SDK wait helpers, the MCP server, the CLI, the VS Code extension and the dashboard use it to say what to do. See Errors. - Response changes: the creation response no longer includes
removed_directories, andmissing_dependenciesis returned byGET /v1/apps/{id}after the build. - SDKs, MCP and CLI:
apps.waitUntilReady(JavaScript),apps.wait_until_ready(Python) andApps.WaitUntilReady(Go) wait for the build. The MCP server has a newwait_for_apptool, and the CLI accepts--no-wait. See the SDK guide and MCP.
Builds install devDependencies when a build command is set
When an application has a build command, dependency installation now includesdevDependencies, so tools such as Tailwind, TypeScript and PostCSS work without moving them to dependencies. Without a build command, only dependencies are installed, as before.Faster builds
Dependency installs and builds are now faster, especially for large projects.Puppeteer uses the preinstalled Chromium
Puppeteer now uses the Chromium that already ships in the runtime image, so installation no longer downloads a browser.Runtime fixes for Ruby, Java, PHP and Rust
- Ruby: gems installed from the Gemfile are now loaded automatically at startup, so you no longer need
require "bundler/setup". Applications also run withRACK_ENVandRAILS_ENVset toproduction, so Sinatra apps no longer answer403 Host not permitted; both variables are now reserved, likeNODE_ENV. - Java: Maven and Gradle projects are compiled on the platform, since the runtime now ships a JDK.
- PHP: adding a package to
composer.jsonwithout updatingcomposer.lockno longer fails the install; the lock file is refreshed. - Rust: the runtime is updated to 1.98 (recommended) and 1.99 (latest); 1.97 is also available.
October 15, 2026
Blob Storage
Vertra Cloud now stores files for your projects: user uploads, images, videos, exports and backups. Files live apart from your applicationβs disk, survive redeploys, and are served from a global CDN. Manage them from the new Blob Storage page in the dashboard, the API, the SDKs, the CLI, the MCP server or any S3-compatible tool. Start with the overview and the quickstart.Public and private files
Every file is public or private, and new files are private. A public file has a permanent URL onblob.vertracloud.dev, cached by the CDN. A private file is read through a temporary link (60 seconds to 24 hours) or a share page with an expiration, a download limit and, from Enterprise-12, a password. You can switch a file between the two at any time without changing its ID.Uploads up to 10 GB
Files up to 100 MB go in a single request. Larger files, up to 10 GB, are sent in parts straight to storage, with resume and abort. A browser can upload with a short-lived upload token created by your backend, so your API key never reaches it; see the user uploads guide. When a path is taken,overwrite replaces the file and rename_on_conflict saves it as name-1.ext, name-2.ext and so on. Details in Uploads.Safe by default
Executables and installers are refused, even when renamed. HTML, SVG and XML files always download on the default address instead of opening in the browser, and the content type comes from the extension.Folder rules, image transformations and custom domains
- Folder rules: defaults and limits per folder, such as visibility, maximum size, allowed extensions, cache and automatic deletion after a number of days.
- Image transformations: resize, crop and convert public images through URL parameters, from Scale.
- Custom domains: serve public files from a subdomain you own, such as
cdn.example.com, from Enterprise-4. A domain can also serve HTML, SVG and XML in the browser, sandboxed, when you turn onweb_content.
Quota by plan
Blob Storage is included from Economy: 1 GB on Economy, 5 GB on Pro, 15 GB on Scale, 20 GB on Intermediary and 30 to 250 GB on Enterprise. Uploads above the quota answerSTORAGE_QUOTA_EXCEEDED. After a downgrade your files stay, and usage above the new quota is charged at R$0.20 per started GB on the next renewal. When a plan expires, files stay online for a 72-hour grace period and are then permanently deleted, without a backup. The full table is in Limits and quotas.API keys and workspaces
API keys have two new scopes,blob:read and blob:write. Workspaces have two new permissions, blob:read and blob:manage, that act on the ownerβs files and quota; no existing role receives them, so the owner grants them explicitly. See Authentication.SDKs, S3, CLI and MCP
- JavaScript: a dedicated SDK,
@vertracloud/blob, for Node, browsers and edge runtimes. See JavaScript SDK. - Python and Go:
client.blobandclient.Blobin the existing SDKs. See Python and Go SDKs. - S3: aws-cli, rclone, boto3 and other S3 tools work with credentials derived from your API key. See S3 compatibility.
- CLI:
vertra blob ls,put,get,link,rmandstats. See CLI. - MCP: tools to list, upload, link, change visibility and delete files. See MCP.
October 12, 2026
Zero-downtime deploys on Enterprise
On Enterprise, a deploy or a restart can now start the new version next to the running one, check that it is healthy, and only then switch over, so an application that receives web traffic stays reachable while it is updated. The old version receives a shutdown request as soon as the new one has taken over.- Modes:
off(the default, including for applications created before this update) keeps stopping the running version first;autouses zero downtime for applications that receive web traffic;onforces it, including for applications without web traffic. Bots and other applications without web traffic stay on stop-and-start inauto, because two copies of a bot would answer the same event twice. Turn it on in the applicationβs settings, under Deploy; it applies from the next restart or deploy. - Health check path: set the path the platform calls on the new version,
/by default, with the newdeploy.health_check_pathfield of Update Application Configuration or in the applicationβs settings. Any HTTP response counts as healthy, including404; a refused connection, a timeout or a5xxresponse does not. - Discarded deploys: if the new version does not become healthy within about 2 minutes, it is discarded, you get a notice with its log, and the previous version keeps running. The live log shows the same notice.
- Fallback: if the second copy canβt be started at that moment, the deploy falls back to stopping the running version first.
Automatic rollback when a new version fails to start
On Intermediary and Enterprise, an application that stops within 60 seconds after a deploy now goes back to its previous version by itself, so a broken deploy no longer leaves the application down.- When it acts: only if the new version stops in the first 60 seconds after a deploy. A stop after that is treated as a normal crash and handled by auto-restart.
- Once only: the platform goes back one time. If the previous version also stops, the application stays stopped and you are notified.
- What comes back: the code files, not the environment variables. To bring variables back, use the manual rollback with the variables option.
- You are told: you get a notification, the Rollbacks tab marks the failed version with its log, and the automatic rollback appears as a new version authored by Vertra Cloud. The applicationβs live log shows the same notices.
- Setting: it is off by default, including for applications created before this update. Turn it on in the applicationβs settings, under Deploy, or with the new
deploy.auto_rollbackfield of Update Application Configuration. Changing it does not restart the application.
deploy object with the saved deploy settings. After a downgrade the saved value stays, but it only acts on a plan that includes the feature.Safety snapshot when deleting an application
On Pro and above, deleting an application now takes a safety snapshot of it first, as deleting a database already did. The snapshot is kept for 30 days in Snapshots, where you can download it.- If the snapshot fails, the application is not deleted and the request answers
SNAPSHOT_FAILED; contact support. Too many safety snapshots in a short time answerFORCED_SNAPSHOT_RATE_LIMIT. - On Free and Economy, the application is deleted right away with no copy. The delete dialog says so and offers to download the project first.
- Plan expiry still takes a snapshot of every project before removing it, on every plan.
Roll back an application to an earlier version
The Rollbacks tab now lets you go back to an earlier version of an applicationβs code. Pick a version and confirm: the application returns to the code it had in that version and restarts.- What comes back: all the code of that version. Code files the version did not have are removed.
- What stays: data the application created while running, such as a database file or uploads. To bring data back, use a snapshot.
- Environment variables (optional): check the option to restore the variables saved with that version. The confirmation lists only the names of the variables that will be added, changed or removed. Values are never shown.
- Undo: a rollback is a new version in the history, so you can roll back to the version you came from. Two rollbacks of the same application need 30 seconds between them.
- Limits by plan: rollback starts on Pro. Pro keeps the 3 previous versions for 7 days, Scale 5 for 14 days, Intermediary 10 for 30 days, and Enterprise 15 to 30 by tier for 30 days. A versionβs time starts when it stops running; the running version never expires. Economy and Free show the history without the rollback option.
apps:write scope, plus apps:envs when restoring variables.Deploy history and commit messages for every application
Each application now has a Rollbacks tab in the dashboard. It lists every version of the applicationβs code, whatever its source: a push to GitHub, the CLI, an upload from the dashboard or the API, or an edit in the file manager. Each entry shows its status, message, author, date and build time. The tab is available on every plan.The history starts with the first code submission after this update. Applications created from a snapshot do not get an initial entry. Edits made in the file manager are grouped into the history at the next restart or code submission. Files sent without a restart show as Awaiting restart until the application restarts, because until then it keeps running the previous version.You can write a message for each version:- Dashboard: an optional message field in the upload dialog.
- API: a
messagefield on the file upload endpoint. - CLI:
vertra app commit -m "...". Without-m, inside a git repository, the CLI uses the subject of the latest commit.
apps:read scope. The Go SDK adds Apps.Releases() and a Message field on uploads.Auto-deploy from GitHub builds the commit you pushed
Auto-deploy from GitHub now builds exactly the commit that was pushed. Before, the build took whatever was at the tip of the branch when the download started, so two pushes close together could show one commit in the deploy history while a newer one was running. Each deploy now matches the commit it lists.A push that deletes themain or master branch no longer starts a deploy.Releases, rollback and deploy settings from the CLI, SDKs and MCP
The CLI, the JavaScript, Python and Go SDKs and the MCP server now cover releases, rollback and deploy settings, with the same plans and API key scopes as the dashboard and the API.- CLI:
vertra app releaseslists versions andvertra app releases logshows the log of a failed one.vertra app rollbackshows what will happen and asks before it runs; with--envit lists only the names of the variables that change. Without a terminal it needs--yes.vertra app configaccepts--zero-downtime,--auto-rollback,--health-pathand--clear-health-path. - SDKs:
apps.releaseslists releases, reads a log, previews a rollback and runs it, in all three languages. Updating an applicationβs configuration accepts the deploy settings, and uploads accept a message. - MCP: new tools
list_releases,get_release_log,preview_rollbackandrollback_app.rollback_appis marked destructive, so your client asks you to confirm.update_app_configaccepts the deploy settings anddeploy_appaccepts a message. - Scopes:
apps:readto list and read logs,apps:envsfor the preview and to restore variables,apps:writeto roll back.
October 10, 2026
Choose where uploaded files go
The Upload changes dialog in the file manager has a Commit destination field. It starts with the folder you have open, and Select lets you pick any other folder of the application. Files are written to that folder. A ZIP is extracted inside it and merged with the files already there, so files you donβt upload are kept.- API:
POST /v1/apps/{id}/files/uploadaccepts an optionalpathquery parameter with the destination folder, relative to the applicationβs root. Leave it empty or omit it to upload to the root. Three new error codes can come back:INVALID_PATH,FORBIDDEN_PATHandPATH_IS_FILE. - SDKs: JavaScript
apps.files.upload(id, file, filename, { path }), Pythonupload(..., path="src")and GoApplicationFileUploadParams{Path: "src"}. - CLI:
vertra app commit --path srcuploads into that folder.
Uploaded files appear right away when restarting
With Restart the application checked, uploaded files used to show up in the file list only after the restart finished. They now appear as soon as the upload completes.October 5, 2026
Account menu
The account menu now opens a grouped panel: profile, appearance, language, settings, billing, CLI, VS Code, MCP, changelog, docs, support, workspace switching and sign out.Pay by card, with automatic renewal
You can now pay for a plan with a Visa or Mastercard credit card, in addition to PIX, without leaving the Vertra checkout.- A card is saved to your account and your plan renews automatically on your default card. The card is charged 3 days before the plan expires, and you get an email the same day. If the charge fails, it is retried on each of the next 2 days and on the expiration day; if every attempt fails, the plan expires normally. If your bank asks for confirmation, you receive an email to confirm it.
- There is no loyalty period. To stop automatic renewal, use Cancel renewal on the Plan card under Billing: your plan stays active until its expiry date, your card stays saved, and you can turn renewal back on at any time.
- PIX payments donβt renew by themselves; you keep getting the usual expiration notice.
- The Economy plan is paid with PIX only, so it never renews automatically.
- Vertra never sees or stores your card number: the card and your billing details are stored by Stripe, and Vertra keeps only the brand, last 4 digits and expiry.
Billing details
Buying a plan now requires billing details, because they are needed to issue the service invoice (NFS-e). In Brazil: name, CPF or CNPJ and the full address (CEP, street, number and neighborhood; city and state are filled from the CEP). Outside Brazil: name, street, city, country and postal code. The phone is optional. Set them under Billing; if they are missing, the checkout asks for them before payment. Saving a new card doesnβt change them.Billing periods: 1, 3 or 12 months
Plans can be bought for 1, 3 or 12 months. A 3-month purchase gets 5% off and a 12-month purchase gets 15% off the monthly price. The 6-month option was removed. Prices stay in R$, and the website now shows an approximate US dollar amount next to them for reference.Automatic service invoices (NFS-e)
The Brazilian service invoice (NFS-e) is issued automatically for every paid order and delivered by email, issued in the name and CPF or CNPJ of your billing details. Issuance can take a few minutes, and a full refund cancels the invoice. Free orders and redeem codes donβt generate one.API changes
POST /v1/ordersonly acceptsmonthsof1,3or12; any other value returns400 INVALID_MONTHS. The Economy plan only accepts1.- Creating an order and checking its status now return
allowed_payment_methods. For the Economy plan it is["pix"]. POST /v1/orders/{orderId}/initiate/pixreturns the same QR code while it is still valid, and the QR code expires with the order. It returns409 ORDER_NOT_PAYABLEwhile a card payment of the same order is being confirmed.
SDKs (JavaScript, Python and Go)
- New
billing.details()andbilling.updateDetails()(update_details()in Python,Details/UpdateDetailsin Go) read and update your billing details through/v1/users/me/billing, with the structured address, CPF or CNPJ and optional phone.orders.createfails withBILLING_DETAILS_INCOMPLETEuntil they are complete. - Order responses include
allowed_payment_methods, and each order in the list includeshas_receipt. - The order list filter accepts
cardas a provider, besidespixandredeem_code. - JavaScript: billing, runtime and restart types now come straight from
@vertracloud/api-types0.3.2.apps.runtimes()returnsAPIApplicationRuntimes, andapps.restart()takesRESTPostAPIApplicationRestartBody. If you imported the old local type names, switch to these. - The READMEs list card payments, saved cards, automatic renewal, coupon preview and receipts as dashboard-only, and no longer mention workspace ownership transfer, which was removed.
MCP server
- New tools to read and update your billing details.
create_appandupdate_app_configaccept the build command (build).create_app,create_databaseandcreate_orderexplain theFREE_PLAN_SUSPENDEDerror.
VS Code extension
- Creating an app or database on the suspended Free plan shows a clear message with a View plans button.
- Opening a file path as a folder in the remote file explorer now shows the right error instead of a generic failure.
CLI
- No changes needed. The CLI picks up the Go SDK updates in its next release.
September 30, 2026
New projects require a paid plan
The Free plan no longer creates new applications or databases. Projects that are already running on the Free plan stay online.- Creating an application or a database on the Free plan now returns
403 FREE_PLAN_SUSPENDED. - When this happens during a deploy in the dashboard, you can pick a plan and pay with Pix right on the deploy screen. As soon as the payment is confirmed, the deploy continues with the same files, so you donβt need to upload your project again.
September 27, 2026
Workspace ownership transfer removed
Transferring workspace ownership to another member has been removed from the platform.POST /v1/workspaces/{id}/transfer-ownershipis no longer part of the API.- The workspace owner is still the only member who can rename or delete the workspace, or link/unlink an application or database β that doesnβt change, and remains fixed to the account that created the workspace.
One error code for a subdomain already in use
Creating an application with a subdomain that another application already uses now returns409 SUBDOMAIN_TAKEN, the same code as publishing or changing the subdomain.
SUBDOMAIN_ALREADY_IN_USE is no longer returned.Plan changes keep every remaining hour
When you switch plans, the time left on the current plan is converted into days of the new one without rounding down, so switching right after a purchase no longer loses up to a day.Bot check on sign-in
Requesting a sign-in code by e-mail now shows a quick Cloudflare check. Most of the time it passes on its own; when it doesnβt, a single click confirms youβre human. Signing in with Discord, GitHub or Google is unchanged.September 27, 2026
A failed build no longer loses your new application
When dependency installation or the build command failed while creating an application, the creation failed and the upload was discarded β and the error that explained why was never shown.Now the application is created anyway, stopped (status: "down"), with the install or build
output in its logs:- Dashboard: after the upload you land on the application, with the build error in the console. Fix the files in the file manager and start it again β no need to upload the project again.
- API, SDKs and CLI:
POST /v1/appsreturns201with the application indowninstead of an error.BUILD_FAILED,BUILD_TIMEOUT,INSTALL_FAILED,INSTALL_TIMEOUT,INSUFFICIENT_MEMORYandINSTALL_SHIELD_BLOCKEDare still returned (422) when starting or restarting an existing application. - The application counts toward your planβs application limit like any other stopped application.
Bun 1.2.23
Bun applications now run on 1.2.23, the recommended and latest version. Versions 1.2.2 and 1.1.0 are no longer offered: their official images are built on an operating system release that stopped receiving security updates.- Applications without
VERSION, or withVERSION=recommended, move to 1.2.23 on their next start or restart. - If your
vertracloud.configpinsVERSION=1.2.2orVERSION=1.1.0, change it to1.2.23.
September 24, 2026
Auto-restart fields removed from the API
Auto-restart has been on for every application on every plan since September 17. The leftover fields are now gone:- Responses: applications no longer include
auto_restart. If your integration reads it, treat auto-restart as always on. - Requests:
autorestartinPOST /v1/appsandauto_restartinPATCH /v1/apps/{id}/configare no longer part of the API. Clients that still send them keep working β the field is simply ignored. - SDKs and CLI: the JavaScript, Python and Go SDKs drop the field, and the CLI drops the
--autorestartflag. vertracloud.config: an oldAUTORESTARTline is ignored and doesnβt block the upload.
The runtime version you choose is the one that runs
The runtime version picked in the wizard, in Settings β General, inVERSION or through the API is now
the version the application runs.- Choosing the latest version runs the latest version. Before, picking Node.js 24.5.0 or Ruby 3.4
(the
latestof each) could silently build the application on the recommended version instead. - The version you confirm wins. When a
.ziphas aVERSIONinvertracloud.config, the wizard pre-fills it; if you pick another one before creating, the application now runs the one you picked β before, the fileβs value could override your choice. - Unknown versions are refused. A version that doesnβt exist for the applicationβs language
answers
400 INVALID_VERSIONinstead of quietly falling back to another one. See List Runtimes for the valid values.
September 23, 2026
Standardized empty responses and validation errors
Three adjustments to API response formats, so every route follows the same envelope:- An empty response is
{ "response": null }. Removing an environment variable, saving, moving and deleting a file, removing a custom domain, clearing the cache, removing a deploy webhook and deleting an application used to respond{}. They now respond{ "response": null }, matching what workspace routes already did. - The invalid field moves to
details.path. A400 VALIDATION_ERRORused to includepathloose at the top of the response; it now comes as{ "code": "VALIDATION_ERROR", "message": "...", "details": { "path": "..." } }. - File manager client errors are
400, not500. Uploading with no file (NO_FILE_UPLOADED) or an unreadable zip (INVALID_ZIP_STRUCTURE) used to respond500; it now responds with the correct4xxstatus.
GET /v1/apps/runtimesresponds with just{ "response": { ... } }, without the extrastatusfield.PATCH /v1/users/meonly acceptspt-br,en-usores-esforlanguage.POST /v1/users/{id}/snapshots/{snapshot_id}/restorerejects an invalidresource_idwith400.POST /v1/orders/{orderId}/initiate/pixalways returnstransaction_amountas a number.
path at the top level of an error or treated {} as success, update to
the formats above. The @vertracloud/api-types types already describe the new format.Error codes related to applications and databases were also standardized.File content always base64
File content returned by Get Application File Content and the SDKs is now always standard base64, with the responseβssize field reflecting the real
byte size of the file rather than the length of the encoded string. Previously the format varied
by file type. If your integration branched on content format, that branch is no longer needed.September 22, 2026
CLI installer for macOS, Linux and Windows
The CLI is now a single, dependency-free binary that installs with one command:- macOS and Linux:
curl -fsSL https://cli.vertracloud.app/install | sh - Windows (PowerShell):
irm https://cli.vertracloud.app/install | iex
vertra command on your PATH. To update, run the same command again.See the CLI page to connect your account and make your first deploy.Usage and AI credits removed
Usage credits and AI credits no longer exist on Vertra Cloud.POST /v1/orders only accepts
plan-type orders, and no payload carries use_credits or credits_used anymore. Legacy credit
orders from before this change no longer appear in the userβs order history.Simplified custom domain response
The routes that read and attach a custom domain (GET and POST /v1/apps/{id}/network/custom)
now return just { "domain": "example.com" }, matching what the public type already described.
DNS record validation status remains on the
Custom Domain DNS Records route.Two custom domain error codes were renamed to CUSTOM_DOMAIN_REGISTRATION_FAILED and
CUSTOM_DOMAIN_RECORD_NOT_FOUND.If your integration compares these codes, update to the new names.Docs refresh: first deploy and configuration
The documentation was refreshed to match todayβs dashboard:- First deploy rewritten to follow the current New Project flow: source, build, environment, network, review and deploy, including creating from a snapshot.
- New Configuration page: every
vertracloud.configkey, what can change after deploy, start and build commands by framework, port, environment variables and an applicationβs limits. - GitHub deploy now explains automatic deploys as they actually work today: Vertra creates the
webhook on your repository for you, and only pushes to
mainormasterpublish. - Tutorials now use the same deploy walkthrough, whether through the dashboard, the CLI or VS Code.
- The API reference gained pages for deleting a database, updating a profile and listing all of an accountβs snapshots, and fixed the delete-environment-variable route, the database update body, and authentication error codes.
βPowered by Vertra Cloudβ badge on Pro
On the Pro plan, published HTML pages now show a small βPowered by Vertra Cloudβ badge in the bottom-right corner, linking back to Vertra. It doesnβt appear on Scale and above, and switching plans turns it on or off immediately, without a redeploy.SDKs and GitHub Actions pages on the site
The developer tools section got two new pages on the site:- SDKs: installation and examples for JavaScript, TypeScript, Python and Go, available features and FAQs.
- GitHub Actions: a copyable workflow, secrets configuration and options for updating an existing application.
Official JavaScript, Python and Go SDKs
SDKs
@vertracloud/sdk-api(npm),vertracloud-api(PyPI) andgithub.com/vertracloud/sdk-api-goarrive as official clients for the public API. One method per route, authentication via the same scoped API key, and coverage for applications, databases, snapshots, account, workspaces and billing β with no caching, automatic retries or internal state. See SDKs.- All three expose live output streaming for an application (
apps.realtime): an async generator in JavaScript, an iterable stream in Python, and an iterator (Next/Event) in Go. - Every error response becomes a structured error, always with an accessible
code: in JavaScript and Python, one exception class per HTTP status (AuthenticationError,NotFoundError,ValidationError,RateLimitError, among others); in Go, a single*rest.APIErrorwith methods likeIsNotFoundError()andIsRateLimitError(). - What remains dashboard-only β activity history, notifications, API key management, workspace invites, the database Data tab, plan downgrades and workspace deletion/transfer β is listed in SDKs β What you canβt do with an API key.
API
- The deploy webhook creation path is now
/deploys/webhook, singular β matching the query and delete routes that already used that form. Reference updated at Create Deploy Webhook. - Activity history is dashboard-only and has no equivalent in the public API or SDKs.
Workspaces by API key and MCP
More workspace actions are now available outside the dashboard β through the SDKs, the CLI, the VS Code extension and the MCP server:- Delete a workspace with the new
workspaces:deletescope. Only the workspace owner can, same as in the dashboard. - Invites with the new
workspaces:invitesscope: list and revoke a workspaceβs invites, and view, accept or decline an invite by token. The key acts as the account that owns it, so an email invite is only accepted if it matches that accountβs email. - Action requests:
workspaces:readlists requests andworkspaces:writecreates one for someone with approval permission.
read and write presets β only in full or a custom
selection β and appear unchecked on the connected-app authorization screen. Workspace role
permissions still apply to the key.Some workspace operations remain dashboard-only, including creating invites, transferring
ownership, approving or rejecting action requests, and exporting activity.September 21, 2026
CLI and VS Code pages for developers
Vertra Cloudβs developer tools now have their own pages:- The CLI page covers installation, pre-deploy diagnostics, and commands for logs, applications, databases and automation with JSON output.
- The official VS Code extension 1.0 page covers installation, connecting by account or API key, and features for deploy, logs, metrics, remote files, databases and snapshots inside the editor.
New look for notifications
Notifications got a more compact look, with context-based icons and smooth transitions in light and dark themes.- New neutral, soft, outlined and solid presentations for success, error, info and update messages.
- Support for actions, a close button and a progress bar for operations that report their progress.
- Animations respect the deviceβs reduced-motion preference.
September 19, 2026
Folders and favorites saved per account
Folders and favorites are now saved to the account, instead of depending on browser or editor local storage.- Personal organization is separate from each workspaceβs organization.
- Folders can be created, renamed, recolored and reordered.
- Applications and databases can be placed in folders and favorited independently.
- The dashboard, workflows, CLI, MCP and VS Code extension all use the same persisted organization.
- The project list and Flow show the same folder and favorite state; Flowβs own canvas groups remain local and independent.
- Actions are logged to activity history, including when performed via an API key.
Restart flags: reinstall dependencies and force build
Restart Application now accepts two optional body fields:reinstall_dependenciesreinstalls the applicationβs dependencies from scratch, ignoring the install cache β the same as βReinstall dependenciesβ in the dashboardβs file manager.force_buildruns the applicationβs build command again even if no source file changed since the last build β the same as βForce buildβ in the dashboard.
VS Code extension 1.0
The Vertra Cloud VS Code extension reaches version 1.0, available on the VS Code Marketplace and Open VSX, plus a.vsix file for manual installation.The vertracloud.config file in the linked folder now gets dedicated support: field completion,
hover descriptions and inline warnings when a value is missing or malformed. Real-time logs now go
to an editor output channel instead of an integrated terminal.The rest of the application management actions remain available on the dashboard.See Manage Vertra Cloud from VS Code for the full list of features.September 18, 2026
MCP server and API key-driven requests
Vertra Cloud now has an official MCP server (@vertracloud/mcp), giving MCP-compatible tools the
ability to manage applications, databases, snapshots and billing β always through your API key
and within what it allows. Install it locally with npx -y @vertracloud/mcp or connect to the
official MCP endpoint listed on the integration page.Three new API key scopes ship alongside it: billing:read (list orders and check status),
billing:write (create a plan order and generate a PIX code) and redeem:write (redeem a promo
code). Downgrading a plan remains a dashboard-only action.See Connect Vertra Cloud to AI agents (MCP) for the full list of tools.September 17, 2026
Auto-restart on every plan
What changed
Automatic restart is no longer a feature gated behind a plan β itβs now the default for every application, on every plan, including Free. Thereβs no longer a dashboard control to turn it on or off; itβs simply always on.- A crashed container comes back on its own, on Free just like any other plan.
- Crash-loop protection stays the same: 5 crashes in 10 minutes disable automatic restart for 24 hours, with a minimum 1-hour cooldown between restarts and a minimum of 60 seconds online for the container to count as stable.
- The
AUTORESTARTfield invertracloud.configis still accepted, but now ignored β it no longer needs to be present in the file. - In the API, the
auto_restartfield remains in application responses and is now alwaystrue; theautorestartfield in the creation body is still accepted for compatibility, but ignored.
September 16, 2026
Per-minute and per-day request limits on the API
Calls made with an API key now respect two new limit windows, scaled by the accountβs plan, in addition to the existing per-route limits (lifecycle actions, SQL console, subdomain changes, etc.):- Per minute, from 30/min on Free to 480/min from Enterprise-12 up. Exceeding it returns
429 RATE_LIMIT_EXCEEDED. - Per day, from 1,000/day on Free to 864,000/day on Enterprise-32, resetting at midnight,
Brazil time. Exceeding it returns
429 DAILY_QUOTA_EXCEEDED.
- Manual snapshot creation got its own limit β 1 every 5 minutes on the same project and 10
per hour on the account β so it doesnβt compete with the automatic snapshot the platform already
takes before deleting or resetting a database. Exceeding it returns
429 SNAPSHOT_RATE_LIMITED. - Unit fix: the API request quota was always daily, not monthly as the documentation stated. No number changed size, only the unit was wrong.
- Intermediary plan fix: the published daily quota was 56,000; the correct value is 115,200.
- Database reset fix: the limit is 1 per hour, not 1 every 3 hours.
September 15, 2026
New About page
The About page was reorganized to better separate the company introduction from its history milestones.The timeline now stacks its cards while scrolling, with dates that are easier to find and highlighted details on the current milestone, in both light and dark themes.September 14, 2026
New look for the applications page
The public applications page now opens with a new illustration, keeping clear space for the main message.Build command, per-app vCPU and new storage limits
Build command
- New
build_commandfield, on every plan. Runs on every deploy β creation, zip upload, GitHub deploy, dependency reinstall or changing the command itself β always after dependency installation and before the application starts. A simple restart doesnβt rerun the build if the previous one already succeeded with the same command. - Runs in an environment isolated from the application: 2Γ its RAM (minimum 1 GB, maximum 4 GB) and 2Γ its vCPU (minimum 1, maximum 2), with a 10-minute timeout. Dependency installation keeps its own separate timeout, now up to 15 minutes.
- New
BUILDkey invertracloud.config, alongsideSTART. - Creating an application from a Next.js, Nuxt, SvelteKit, Remix, React Router, Astro, Gatsby or
Vite zip now suggests the right build and start commands automatically β editable before
creation. The entry file is also now recognized for these projects, which donβt have an
index.js. - The build environment has double the bandwidth and request limit of the application β downloading dependencies weighs more than serving traffic. Exceeding it interrupts the deploy, the same as it already did for a live application.
Storage
- Applications: a fixed 10 GB, regardless of memory (previously the ceiling grew with RAM).
- Databases: 6 GB + 1 GB for every 512 MB of allocated RAM, always rounded to whole GB β a 1 GB database now has 8 GB, a 2 GB one has 10 GB. No existing database loses space.
Per-app vCPU
- An application with 2 GB or more of RAM now gets the planβs full vCPU; below that, it gets a third of the planβs vCPU, with a floor of 1 vCPU. More memory never results in less vCPU.
Hourly deploy limit
- Creating an application, uploading a zip, deploying via GitHub, reinstalling dependencies and changing the build command now count against an hourly cap per account β 5 on Free, 10 on Economy, 20 on Pro, 40 on Scale and 60 from Intermediary up. Restarting and stopping donβt count, and a GitHub push above the limit is ignored and logged to activity history.
Introducing Vertra Flow
Vertra Flow got its own page on the site. It introduces the interactive canvas and explains how groups, notes, previews and attachments help organize applications and databases.The page also makes clear whatβs still in development: real-time collaboration, comments on the canvas and more expressive ways to represent application networks.vertracloud.config no longer lives on the volume
What changed
vertracloud.config is no longer written to the applicationβs volume. Until now it was
written once, at creation, and never followed changes made in the Settings tab β the user would
open the file in the file manager, see the old memory and start command, edit it, and nothing
would happen.Now:- When downloading the project, the zip comes with a
vertracloud.configgenerated from the current configuration β name, entry file, memory, version, start command, auto-restart and subdomain. - When creating a snapshot, the same applies: the snapshot already carried the generated file, and still does.
- When uploading a zip, the file is read to pre-fill the form and discarded on extraction; it no longer appears in the file manager.
- Existing apps lose their old copy on the next restart or rebuild.
KEY=value, with keys NAME, DESCRIPTION, MAIN, MEMORY,
AUTORESTART, START, VERSION and SUBDOMAIN.September 12, 2026
New look for not-found pages
URLs that donβt exist now open a dedicated Vertra Cloud 404 page, with direct paths back to the homepage and the dashboard.September 11, 2026
More complete activity history
The account and per-project activity history got more events: file changes from the file manager (save, delete, move, upload), deploys, snapshot restores and domain changes.Each activity now shows who triggered it, with a dedicated filter to browse by origin.API keys with scopes and allowed IPs
Until now, an account had a single API key with full access. You can now create up to 10 keys, each with a name, a set of permissions (apps, databases, snapshots, account, workspaces, notifications β with βread onlyβ, βread and writeβ and βfull accessβ shortcuts) and, optionally, a list of allowed IPs (the check uses the real source IP, not a header the client sends itself). A key used only by a CI server, for example, can be restricted to creating deploys and see nothing beyond that β and locked to that serverβs IP.A new keyβs secret (vc_live_...) is shown only once, at creation or rotation; after that only
the start and end remain visible. Keys generated before this change keep working normally, with
full access.The legacy generation (the single βgenerate keyβ button) remains available for scripts and the
CLI.September 10, 2026
Redesigned data manager
The Data tab for databases now organizes the object browser and its contents into a single workspace, with a clearer hierarchy and better use of space on desktop and mobile.SQL tables, MongoDB collections and Redis keys got easier-to-find actions, explicit filters, compact summaries and simple pagination with range, page size and current position. The repeated header and unnecessary color highlights were also removed.Fix: silent console when reinstalling dependencies during a fast restart
When restarting an application after changing its runtime (or any restart that reinstalls dependencies), if the installation finished quickly the dashboard console showed nothing of it β no start notice, no installer lines. The app came back online already ready, with no explanation on screen in the meantime.The console now detects when an installation is in progress during a restart and streams its logs live, the same way it already did when creating an application.Change the language of an existing application
Previously, choosing the wrong language when creating an application was final: the only way out was recreating the app from scratch, which erased its volume and entire deploy history. The runtime can now be changed at any time, under the appβs General β Environment settings.Before confirming the switch, the dashboard shows the real risks of the change:- it only takes effect from the next restart β the running container stays on the old runtime until then;
- the entry file and start command donβt change automatically: an
index.jswritten for Node wonβt run as a Python application, for example; - the runtime version resets to the recommended version for the new language, because the old version may not exist there;
- no project file is deleted by this operation.
node_modules folder after switching to Python, for example) stayed on the volume taking up plan
quota, with no automatic reinstall or removal. Now, in the βrestart now?β dialog that appears
after saving the switch, an optional checkbox lets you delete known artifact directories from the
language being left behind before installing the new ones β never a project code file.Snapshots keep the project name
Every snapshot now keeps the name the project had at the moment it was taken. In the snapshot list, opening a project shows, besides the date, the name it used on that date β useful when the project was renamed and a two-week-old snapshot belongs to an βapi-stagingβ thatβs now called something else. When the name hasnβt changed, nothing is repeated: only the difference shows.Snapshots of already-deleted projects also stop showing up as a code. Previously, deleting the project removed the name from the list, leaving only the identifier; now the last known name stays, with a marker that the project no longer exists.Snapshots taken before this change remain without their own name β todayβs name wasnβt written retroactively onto old dates, because that would record information that wasnβt true on that day.September 9, 2026
Applications page
Vertra Cloud got a public page for applications at/apps, in Portuguese, English and Spanish.It explains the path from ZIP or GitHub to the container, the Bot and Website types, supported
runtimes, deploy methods and operational features: isolation, logs, metrics, snapshots,
environment variables, web publishing and custom domains.It also documents the lifecycle and recovery after crashes, with FAQs published as structured data
for search engines.Database origins
The public PostgreSQL, MySQL, MongoDB and Redis pages now include a section on how each database came to be, with historical milestones and a portrait of a central author or contributor.The pages remain available in Portuguese, English and Spanish.New Enterprise experience
The Enterprise page now ends with a redesigned capacity configurator: memory, compute, project limit and price change together as you pick a tier.The SLA, premium support and the 4 GB to 32 GB scale are now clearer.September 7, 2026
Pages for each language and database
A page per language
The site now has/runtimes β the list of the ten languages the platform runs β and a
dedicated page for each one: JavaScript, TypeScript, Python, Go, Rust, Java, Bun, PHP, Ruby and
static sites.Each page answers what people ask before signing up:- Which versions exist, which one is recommended and which is latest, with the exact
VERSIONvalue forvertracloud.config. - What the platform handles automatically for that runtime β dependency installation during build, auto-restart, live logs and metrics.
- What people run with it: bots, APIs, workers, sites.
- The minimum configuration, in a copyable block.
- The most common questions, with short answers β the same ones that reach support.
A page per database
The four managed databases got their own pages under/databases: PostgreSQL, MySQL,
MongoDB and Redis. Each one covers the version, port, authentication mode and host format,
a ready-made connection command with TLS, and what each dashboard operation does β including what
a destructive reset deletes.The /databases page remains the overview of the service; the new pages are for people who
already know which engine they want.In three languages
All pages exist in Portuguese, English and Spanish, with each languageβs own URL declared for search engines. Each pageβs FAQ is also published as structured data, so it can appear directly in search results.Where to find them
The ten languages and four databases are listed in the footer of every page, in their own columns, and the languages also appear in the top Resources menu β without going through the hub.Cleanup
Prototype pages that were never announced went offline along with a few unused image files β no previously published URL was removed.September 6, 2026
Plans, limits and guides in the documentation
The Plans and limits page gathers pricing, features and platform limits, along with available versions and managed databases. Values now have a centralized public reference.- The Free plan is described as a trial option, for testing the platform before using it in production, with the applicable limits alongside it.
- The published SLA was standardized across all pages.
- New βGuidesβ section, with step-by-step content on hosting Discord bots and deploying Node.js apps.
- Recent changelog entries were added to navigation, so they have a published URL.
- Page titles and descriptions were updated to explain what each page answers.
New email design
Access, plan and alert emails got a flat layout, with the Vertra logo, social links, soft corners, subtle dividers and better-organized information. Buttons now use a light background with an outline, including the Outlook version. The layout offers light and dark versions; final colors also depend on the email client used.Getting started tutorial in the dashboard
In the dashboard sidebar, Getting Started walks through five steps with a GIF and instructions on what to click. The app only goes live after New Project. Progress is saved in that browser; once all steps are done, a confirmation appears and the guide disappears. The upgrade to the next plan button appears in the same place; it doesnβt show on the last step.Terms, privacy and acceptable use rewritten
The three documents governing use of Vertra Cloud were rewritten and now exist in Portuguese, English and Spanish: Terms of Use, Privacy Policy and the new Acceptable Use Policy. All three link to each other and identify who provides the service and who is responsible for data protection.- You can withdraw within 7 days of your first paid plan purchase, with a full refund via the same payment method, as guaranteed by Brazilβs Consumer Protection Code. The old terms said βno refundsβ β a clause that wasnβt valid. Renewals and upgrades remain without a right of withdrawal.
- Plan expiration is described as it actually works: projects are shut down, the platform keeps a snapshot of each application and database for 30 days, and renewing within that window restores everything. The old terms mentioned suspension after 1 day and deletion after 7, and said payment was Pix-only and that no plan had backups β none of that was true.
- The Privacy Policy now states who processes your data and why. When Vertra is the controller and when itβs only a processor of your projectsβ content; the legal basis for each purpose; where data is stored and international transfers; how long each type of data is kept; how to exercise each right under Brazilβs LGPD, with a 15-day response window; and the commitment to report security incidents. The data protection officer (DPO) is named and the contact channel is [email protected].
- The Acceptable Use Policy is now its own document. What can and canβt run on the platform, what counts as resource abuse, how to report it and what the penalties are β with the rule that only a severe violation triggers action without notice; in other cases youβre notified and given time to respond.
- The Terms and the Acceptable Use Policy now require 30 daysβ notice for any material change (previously 7), define the applicable law and jurisdiction, and make clear that consumers can file in their home jurisdiction.
- The 30-day snapshot window now appears where it matters, not just in the Terms. The plan-expired email shows the deadline and the recovery path (renew, recreate the project, restore from the Snapshots page or download the .zip); expiration reminders and the plan card in Billing warn that, without renewal, projects remain as a snapshot only for 30 days.
/lgpdleads to the Privacy Policy, and the footer now calls it βPrivacy and LGPDβ.- The cookie banner now says what actually happens: analytics and session recording on public pages only, with consent, never in the dashboard.
New project from a snapshot
In New Project, Restore from a snapshot opens a dialog to find the application or database and pick the backup. The rest of the flow is the same as creating the resource. Going back to the type picker, or the trash icon on the zip, clears the file and removes its name and description until a new source is provided. In Projects, the More options menu leads directly to creating an application, creating a database, restoring a snapshot or redeeming a code.Project list in cards or list view
In the Projects list, next to search, a toggle switches between list (the default) and cards, up to three per row. The choice persists for that browser tab: if the list reloads, the loading skeleton already matches the same layout, without flashing the other one.A projectβsβ¦ menu now fits on screen. When the window is too short to show every action, the
menu scrolls down to Delete project instead of cutting off the bottom.September 2026
Dashboard
- The sidebar lists Docs, Tutorials,
llms.txtand MCP Server above the account divider. Docs, tutorials (YouTube@vertracloud) andllms.txtopen in a new tab. MCP Server is locked for now. - The workspace overview now answers whether the fleet is healthy. RAM, peak CPU and a health score sit in cards with a segmented meter; resources over 80% RAM or CPU are listed before the app and database lists.
- Opening an app or database on a phone uses a bottom bar instead of a row of labels you had to scroll sideways. Overview, logs, files, snapshots and settings stay under the thumb; activity remains in the menu.
- Inside a project, the same meters show CPU, RAM and network (or storage and connections on a database), with start / restart / stop next to the status. Request and connection figures marked βpreviewβ are placeholders until the API exposes them.
- The published page of an application sits as a large iframe card (~44% of the overview header). Click it to open the live site in a new tab. Next to it, labeled topics: app id, domains (subdomain and custom domain together), status with uptime beside the cluster, creation date, and source. The preview reloads once a minute while the page is in view β a restart still has to build, so the card does not refresh two seconds after you click. Without web publishing, the same card stays in place and sends you to Network settings to publish.
- The origin of an application (uploaded zip vs GitHub repo) is on the overview immediately. Connecting or disconnecting GitHub still happens in Settings; the overview no longer waits on a second request just to show the label.
- The file manager opens faster and is usable on a phone. Folders and files share one list, the path trail jumps to any ancestor folder, and dropping a zip stages a commit in place instead of covering the page. Opening a file shows the editor placeholder β not the folder list β and browsing a folder you already opened no longer flashes empty.
- Log consoles can be expanded to a larger view. The expand control sits next to the overflow menu; download lives in that menu. Esc or the same control returns the console to its place on the page.
- A plan due to expire in three calendar days or already expired shows a notice above the project list, with a renew action to Billing. βTodayβ and βtomorrowβ follow BrasΓliaβs calendar, and the clock is 24-hour Fortaleza time with the period of day (β02:14 da madrugadaβ, not a 12-hour β02:14β that could be read as afternoon). The small βexpires in N daysβ line next to the plan name is gone.
- The project switcher lists the open project first, then running ones, then stopped.
- The Resources section in the mobile site menu now opens on tap. It used to close in the same gesture.
- Support is a page, not a cramped FAQ card. Discord, email and docs sit as three links; the questions use the same two-column accordion as the plans page; guides underneath jump to deploy, common errors, downgrade and billing. The old copy that mentioned tickets and live chat as a separate product is gone.
- After a minute on the dashboard, a card in the bottom-left invites you to the Discord community. Closing it hides the card for seven days. The landing page invite still uses the one-minute delay and does not keep that long snooze.
- Creating a project is a split screen. The left column carries a short tip for the step you are on; the form sits in one card on the right. Type and source share the first step. After you pick a ZIP or a GitHub repo you can name the project and add an optional description before continuing. An application then goes through build, environment variables and network as separate steps before review; a database goes through engine and storage, then review. Back and Continue stay pinned to the bottom of that card after you leave the first choice. If the plan does not have enough RAM for the memory you picked, the build step says so and Continue stays disabled. GitHub import starts with a repository URL, or you pick from the repos on your account. Environment variables use the same side sheet as an applicationβs Environment tab.
- Project names follow the API limit of 50 characters. A ZIP or GitHub import used to keep the full file or repository name (often a timestamp plus a UUID) and then fail on create. The wizard now trims that derived name, and the database name field stops at 50.
- Snapshots use the same list and dialogs as the rest of the dashboard. Search and filter match Projects and Activity, creating a snapshot picks a project the way you add one to a workspace, and the list of snapshots β on the Snapshots page and inside a project β is the same row layout. The create button is the same size as New project, without the accent fill.
- Changing a projectβs memory now shows up on the project list immediately. The allocated amount used to stay on the old figure until the list was loaded again.
- The overflow menu on a project row leads with Details and Settings. Logs and terminal keep their place underneath, without repeating βOpenβ on every line. When the menu does not fit the window, it scrolls so Delete stays reachable.
- Projects can be viewed as a list (the default) or as cards, from a control next to search. The choice lasts for the tab; loading placeholders follow the same layout.
- Environment variable keys keep the case you type. The field used to rewrite every key to uppercase as you typed; mixed case is valid and is no longer forced.
- On the Free plan, opening Projects shows an upgrade dialog with what a paid plan adds. It says you create one project β not one app and one database, because Free cannot create a database. The action goes to Review order for Economy (monthly, PIX), not the plans page. Dismissing it hides it for the session; a surface notice remains above the list. The header is tinted for the next plan (gold for Economy), not hatched.
- A paid plan at 85% of its RAM cap opens the same dialog for the next plan. Economy β Pro (orange), Pro β Scale (green), Scale β Intermediary (purple), Intermediary and up β Enterprise (blue). Enterprise 32, already at the top, does not get a prompt.
- New project on the personal list is a split button. The chevron opens Redeem code as a dialog on Projects (
?redeem=also works). After a successful redeem, the same plan card used for upgrade prompts thanks you and lists what the new plan adds versus the previous one. The mobile navigation sheet lists Docs, Tutorials,llms.txtand MCP Server above the account row, like the desktop sidebar β creating a project stays on the Projects page, not in that menu. - Changing an appβs RAM no longer treats leftover plan memory as the whole budget. The unused 448 MB on the plan is what is left after this app; the app can still keep or lower its own allocation down to 512 MB without an upgrade. The field describes the container RAM, and βNeed more RAM on the plan?β opens the upgrade dialog β it does not quote this appβs ceiling.
- Live CPU, memory, storage and network stay on the overview even below 512 MB, including the charts β two live samples are enough to draw the line. The 512 MB floor only gates advanced metrics (the 10m / 30m / 24h history). The notice title says so. Expand RAM goes to the projectβs settings when the plan still has 512 MB to give this project, or opens the same upgrade dialog used on Projects (
?upgrade=pro&upgrade_for=advancedMetrics) for the next plan that actually has 512 MB β Pro, not Economy (256 MB). The page used to replace the whole telemetry section with an empty βinsufficient hardwareβ card. - Features locked by plan open that same upgrade dialog instead of sending you to the plans page. Settings cards dropped the βFrom Intermediaryβ header badge; the plan name now sits in a notice in the card body with an Upgrade plan link. File manager and the database data tab use the same empty layout as Snapshots. Creating a snapshot on a plan without backups (below Scale) opens the Scale upgrade dialog, instead of an error toast. The title and description follow the feature that opened it (snapshot, files, auto-restart, deploy, metrics, and so on) β they no longer reuse the βmemory is at the capβ copy unless RAM itself was the trigger. The sidebar βUpgrade to β¦β button after the getting-started guide uses the same dialog (
?upgrade=), not a second popup. Refreshing the dashboard no longer flashes Economy before the real next plan. - Attachment lines that go up or left no longer loop the long way around. The curve follows the two cards instead of shooting past them first.
- The project name on the overview opens a dialog to rename it, edit the description and change RAM. A pencil sits next to the title. Saving a new memory amount still asks whether to restart now, as in Settings. After you save, the heading updates immediately β it used to keep the old name until you reloaded.
- Back in a projectβs sidebar steps up one level. On Data, logs, files or settings it returns to that projectβs overview; only from the overview does it go to the projects list.
- The plan name on Projects is a colored plate, using that planβs color, with a shine across it. The billing link sits under the plate.
Workspaces
- A workspace is no longer hidden when your plan ends. When a paid plan expires the account falls back to Free, which cannot create workspaces β and the Workspaces page used to hide the ones you already had behind the upgrade notice. Anyone on Free who belonged to someone elseβs workspace saw the same empty gate. The list is now always shown; only the create button follows the plan.
- A workspace whose ownerβs plan expired is frozen, not deleted. Nothing is removed: members, projects and the workspace itself stay. What stops is writing β renaming, inviting, changing a role and linking a project are refused while the plan is gone, and the row is marked Frozen. Viewing, removing a member or a project, leaving and deleting stay available, and everything works again the moment the plan is renewed. The plan that counts is the ownerβs: a Free member of a paid workspace is unaffected.
- Roles now match what the table says they do. Operator can start, stop and restart applications and databases β the whole point of the role, which until now was refused with an access error. And Developer can no longer delete an application or a database: deletion is irreversible, and the permissions table never granted it. Deleting is Owner and Admin only. Everything else is unchanged β Developer keeps deploying, editing files, environment variables, networking and configuration.
Workspaces v2
- Invite codes are gone. Bring people in by e-mail (a real invite sent to one address, valid 7 days) or by link (a shareable URL, valid 24 hours, optionally capped at a number of uses) β both assign a role up front, from the workspaceβs Invites tab.
- Members can have an expiry date. Set one when inviting or afterward, and access ends on its own on that date β useful for a contractor or a temporary collaborator, without anyone having to remember to remove them.
- Activities and audit logs are workspace-scoped now, not just your own actions inside it β see everything anyone on the team did, with the same CSV export as billing.
- Workspace settings live in the sidebar, not in a row of tabs. Opening a workspace lists General, Notes, Members, Roles, Invites, Projects, Activity, Billing, Requests and Danger zone in the same nav as the rest of the dashboard. The workspace list uses the same search, filters and list/card toggle as Projects.
- A shared notes board for quick team context β sticky notes in seven colors, visible to everyone in the workspace, now on their own Notes tab instead of mixed into General.
- Invite links stay copyable after you create them. A link invite used to show the URL once and then only a revoke button; the copy action stays on that row for the rest of the session, and creating a link copies it for you.
- The Projects tab is the same list as the dashboard overview β search, filters, cards, and opening a project β not a stripped-down name list.
- Hitting the role cap opens the upgrade dialog for the next plan that actually has more roles, instead of a plan-error toast on the create-role sheet.
- Sensitive actions can be requested instead of refused. A member without permission to delete a project or manage a snapshot can now ask for it; anyone who does have that permission approves or rejects the request from a new Requests tab, and approving runs the action for real.
- A weekly digest e-mail summarizes what happened across a workspaceβs projects over the past week.
- You can leave a workspace, and an owner can transfer it to another member β both from the workspaceβs settings.
- Saving a note on a frozen workspace opens the Enterprise upgrade. You can still fill in the editor; Create note closes it and shows which plan unlocks workspace notes, instead of a plan-error toast.
Networking
- Creating an application inside a workspace no longer locks Web publishing as a plan-only feature when the workspace ownerβs plan already includes it. The wizard used to look up the plan on an application that does not exist yet, so Enterprise (and Pro+) looked like Free on that step.
- Web publishing can be turned on and off after creation. An application created without a subdomain used to stay private forever β the only way out was to recreate it. From the applicationβs Network settings you can now publish it, and unpublish it again, whenever you want. Publishing without a plan that lets you choose the name gets you a subdomain assigned by the platform; with one, you pick it.
- Unpublishing names the address in bold, and you type
EXCLUIR(orDELETE/ELIMINAR) instead of the project name to confirm. Choosing a custom subdomain on vertraweb.app is called out as the Scale feature in Network settings β the lock notice used to read as if the whole address card were gated. - Two things to know before you do it. Turning publishing on or off recreates the container, so the application restarts β expect a short downtime. And unpublishing releases the subdomain: it is not held for you, so someone else can register it. Any custom domain attached to the application is detached at the same time.
- Publishing needs 512 MB of RAM, the same floor a site created as a site has. If the application has less, the request says so and shows how much it has and how much it needs, so you can raise it and try again.
- Purging the edge cache works again. The button in Network settings never actually reached the CDN β the request was rejected before it got there, and the CLIβs version reported success while purging a hostname that does not exist. Purging now clears the applicationβs real hosts, and you can still name specific hostnames or URLs if you want a narrower purge.
- Replacing a custom domain now detaches the old one. Attaching a second domain used to leave the previous one behind, still pointing at the platform with nothing owning it. The replacement is only detached after the new domain is in place, so a failure never leaves the application without a domain.
Site and sharing
- Pages in Portuguese and Spanish now say so. Every page on the site declared itself as English to browsers and search engines, whatever language you were reading β a
/pt-brpage was served markeden-us. Translators, screen readers and search engines were all being told the wrong language. - Each page has its own address and preview again. Pricing, Enterprise, Databases, Blob Storage, CLI and VS Code were all pointing search engines at the home page as their canonical address, so they competed with it instead of ranking on their own.
- Links to the site show a preview card. Pages like About, Terms and Privacy shared with no preview image at all. The pages that do have their own image β Pricing and Enterprise among them β were generating it with the untranslated text key printed inside instead of the real title.
- Intermediary is a full plan band on Pricing, sitting above Enterprise β the same wide layout as dedicated infra, not a one-line footnote pointing at Compare.
- Pricing uses the same Enterprise offer card as the Enterprise page β capacity copy, column artwork, slider and checkout, instead of a separate compact band.
- Each plan card has a More + control that opens the full feature list β including what that plan does not include.
- The Go hosting page now tells the languageβs origin. After the fold: why Go is a single binary, three design principles, and a portrait of the gopher β then the same version table and config as before.
- The header starts with Pricing, then Product, Enterprise, Developers and Resources. Community left the top bar: Discord, docs, the API reference and support tickets live under Developers, as larger cards with an icon and a short description. Product and CLI/VS Code use the same card size.
- Moving between Product, Developers and Resources keeps the menu open. Hovering from one header item to the next used to close the panel instead of swapping it, so the second menu never appeared.
- The plan comparison table on Pricing is readable on a phone. Below a laptop-width screen each feature is a list of plans and values, instead of six columns squeezed into the viewport. From
lgup the side-by-side matrix is unchanged.
File Manager
- Hardened path validation in the file manager when creating folders and resolving paths.
Deploys
- Dependencies now install outside your planβs memory. Installing and compiling used to run inside your applicationβs container, under a memory ceiling sized to run your app, not to build it β
npmalone idles at 60β100 MB. Installation now happens in a short-lived container with platform memory, and your application only starts once it succeeds. When it fails, it fails once with a reason instead of looping. - The console shows the installation as it happens. While dependencies install, the application container does not exist yet β the console used to sit empty and the project looked stopped. It now streams the install output live, so a
pipcompiling a package from source is something you can watch instead of guess at. - An installation can be interrupted. While dependencies install, the only action offered is Stop β it cancels the installation instead of leaving a βStartβ button for something that is already running.
- Saving
requirements.txtorpackage.jsonno longer freezes the reinstall dialog. It confirms and closes; the folder is cleared and the restart reinstalls in the background, with the console showing it happening. The folder cleared is now the right one for the language β the post-save path knew only Python and Node, so asking to reinstall on a Go, PHP, Ruby or Rust project deleted nothing. Editinggo.mod,composer.json,GemfileorCargo.tomlnow offers the reinstall too, and apackage.jsonsitting in a Python project no longer offers it by mistake. - Restarting an app now keeps its log. Saved records only ever contained crashes: stopping or deleting an application saved its log, restarting discarded it β and restarting is the common gesture. What the app said before a normal restart is now kept like any other run.
- The installation stays in the log after it ends. The install container is discarded when it finishes, and its output used to go with it β now it is appended to the applicationβs own log and replayed with the history, so reloading the page or reopening the console still shows what the installation did, and why it failed when it did.
- A project installing dependencies no longer reads as βstoppedβ. The dashboard and the project header show installing dependencies while it runs, in the list and inside the project.
Lifecycle and API
- A stopped project no longer reads as broken. A stopped application or database has no container β that is how stopping works β and asking for its status used to answer with a server error. The dashboard treated it as a failed request and kept showing the last good reading, so a project you had just stopped stayed on screen as running, with its uptime frozen, until you reloaded the page. Status now answers normally for a stopped resource, with everything at zero.
- Stopping something already stopped is no longer an error. It confirms, and the recorded state is corrected to stopped. Before, an application whose container had died on its own stayed marked as running forever: the Stop button failed every single time, and there was no way to get the project back to a consistent state.
- Two operations at once on the same project now say so. Start, restart, stop, delete, dependency installs, deploys and snapshot restores are done one at a time per project. Asking for a second one while the first is still running answers another operation is in progress and changes nothing β instead of a generic failure that looked like your app had broken. Wait a few seconds and try again. Over the API this is HTTP
409 OPERATION_IN_PROGRESS. - Clicking Start twice on a stopped application β two open tabs, a double click β no longer restarts it twice silently. If the application is already running or already starting, Start now answers this project is already running or starting up instead of quietly repeating the whole boot. Over the API this is HTTP
409 CONTAINER_ALREADY_RUNNING. Clicking Restart twice in a row is covered too: the second click now answers another operation is in progress instead of silently restarting the application a second time. - Lowering an applicationβs memory is refused when the files no longer fit. Disk space follows the memory you allocate, so lowering the memory lowers the ceiling. Applying a ceiling below what the volume already holds does not delete anything, but it makes every subsequent write fail β the app breaks instantly, for a reason nothing on the panel explains. The change is now refused up front, telling you how much you have to free first.
- The lifecycle buttons share one budget per application. Start, restart, stop and install dependencies now allow ten requests per minute per application between them, instead of a separate allowance each. Normal use never comes close; a script in a loop stops before it hurts the project.
Databases
- Databases have a Data tab, from the Intermediary plan up. Browse and edit what is actually stored, without leaving the dashboard and without pasting a connection string anywhere. PostgreSQL and MySQL show schemas, tables, columns, indexes and a paginated row browser; MongoDB shows collections, indexes and documents; Redis shows the keyspace, each keyβs value by type, and its TTL. The plan that counts is the database ownerβs β workspace members use the tab on a database whose owner has the plan.
- There is a SQL console. It runs against your own database as your own database user, so nothing is filtered or rewritten. What is enforced are limits: 10 seconds per statement (applied by the engine itself), 200 rows by default and 1000 at most, 64 KB of SQL, 5 MB of result, and one console query at a time per database.
- Editing a row always goes through its primary key β the complete one, composite keys included β never its position on the page. The same applies to documents (
_id) and keys (the key named in the URL). - Reading is open to every workspace member; writing and the SQL console are not. Those need owner or admin, and every change is recorded in the databaseβs activity log with the operation and the object β never the content.
- The API exposes the same surface under
/v1/databases/{id}/data/*, with stable error codes documented alongside it. - A database in a workspace now shows its allocated RAM. Opening one from a team used to crash the overview and leave the memory field blank, even when the database had RAM assigned β the workspace list was missing those fields. The RAM breakdown on Projects includes it too.
- Deleting or resetting a database now takes a safety snapshot first, automatically. If the backup fails, the action is blocked and the database is neither destroyed nor wiped β before, deleting or resetting left no backup behind.
Checkout
- Changing plan at checkout is a catalog, not a dropdown. The selected plan still sits in the form; opening it now shows Economy, Pro, Scale and Intermediary as cards (RAM, vCPU, app limit) and Enterprise as a list β the same catalog as the pricing page, without leaving payment.
August 2026
Website
- The Enterprise page now matches the landing page. Same mesh, type scale and cards; the plan picker uses the same blue as the plans page instead of orange.
- The plans page now matches the landing page. Economy, Pro, Scale and Enterprise sit in the same cards, Enterprise is blue instead of orange, the comparison table stays pinned while you scroll β with a search box and accordion groups, on desktop and on a phone.
- The login and register screens now match the rest of the site. Same header and footer as the landing page, a centered sign-in form, a short look at Economy / Pro / Scale, and a compact FAQ β with a link through to the full plans page.
- Login and register are now the same screen. Enter your e-mail and get a code β no separate sign-up form, and no name to type. New accounts get a starting name from the e-mail address, which you can change anytime in your profile settings.
Performance
- The site now opens faster. The landing page and every institutional page β About, Pricing, Plans, Databases, Enterprise, CLI, VS Code, Blob Storage, Privacy and Terms β are now pre-rendered ahead of time and served without any server work per visit.
- Much less to download and run on the landing page. The global map is now a pre-generated image instead of being built in your browser on every load, and the pageβs animations now run on CSS instead of JavaScript.
- Translations now load per page instead of the whole site downloading the text for all three languages on every screen.
- The dashboard loads only what youβre looking at. Heavy panels β the file editor, the terminal, and charts β now load on demand instead of upfront, and background requests that used to run on screens where they werenβt even used have been removed.
E-mails
- Every transactional e-mail has been redesigned. Confirmation codes, purchase and redemption receipts, renewal reminders, plan expiry and project deletion notices now share one layout, with the key fact β the code, the amount, the deadline β put first instead of buried in a paragraph.
- The Vertra Cloud logo now shows up in your inbox. It was being sent as an SVG, which Gmail, Outlook desktop and Yahoo do not display at all, so most recipients saw a broken image.
- E-mails now carry a preview line, follow your systemβs light or dark theme, and read correctly on a phone and with images blocked.
- Fixed the redemption e-mail showing a raw
{{duration}}placeholder instead of the plan duration, and the English and Spanish purchase e-mails showing the amount without its currency.
Backups & Automatic Deletion
- Projects are never deleted without a verified backup. Plan expiry and the FREE cleanup job now create a snapshot first and only delete the resources whose snapshot completed. Anything that fails to back up is stopped and kept in place rather than deleted, and reported for manual review.
- The FREE cleanup job previously deleted offline projects without creating any snapshot at all. It now takes one first.
- Pre-deletion snapshots ignore the planβs backup permission β a project about to be removed is always backed up, regardless of tier.
- Snapshots of large projects now work. The size ceiling that made backups of bigger projects fail outright has been removed.
- Snapshot archives no longer include reinstallable content (
node_modules, virtualenvs,vendor, build caches) or git history, so they are considerably smaller. - A snapshot is only recorded once the archive is confirmed to exist in storage, and its reported size now comes from storage itself β a snapshot can no longer appear in your list without a real file behind it.
Validation & Error Messages
- Endpoints taking a workspace, application, database or environment-variable ID now reject a malformed ID with a clear
400, instead of failing with a generic internal error. - Updating an application or workspace with an empty body now returns a validation error instead of failing.
start_commandis now limited to 512 characters at the moment you save it, instead of only failing later during a rebuild.- Uploading a corrupted or truncated
.zipwhen creating an application now returnsINVALID_ZIPinstead of a generic internal error. - Writing a file over a path that already exists as a folder now returns
TARGET_IS_DIRECTORYinstead of a generic internal error.
July 2026
Landing Page Preview
The new Vertra Cloud landing-page preview received a clearer product-first opening and a more consistent visual mesh.- Refined the responsive hero while keeping the live deployment card as its own product section.
- Added a hatched transition between the hero and the page content.
- Refined mesh intersections so edge diamonds are cut toward the content and full diamonds only appear at true internal crossings.
- Expanded the footer mesh to make the transition into the site footer clearer.
- Improved the product navigation menu with accessible animated open and close states.
Dashboard v2
- Moved the real dashboard to the new responsive shell, including workspace navigation, command palette search, and the mobile navigation flow.
- The overview, application and database lists now refresh their status automatically.
- Updated upload entry, snapshots, logs, settings, billing, support, and workspaces to the new dashboard frame.
- Replaced the application Files navigation with an expandable project file tree in the desktop sidebar and mobile navigation sheet.
- Unified application and database lists into searchable, paginated rows with safer quick actions, and standardized dashboard empty, restricted, notification, and modal states.
- Quick start, restart, and stop actions now show a transition indicator and wait for the refreshed overview status before accepting another command.
New Project & Templates
- Redesigned the New Project screen into a dedicated full-screen flow without the sidebar, focused entirely on creating a project.
- Made
.zipupload the primary way to start, with GitHub import and a database shortcut as secondary options. - Added a Templates section, marked coming soon while the ready-to-deploy catalog is built.
- Every βNewβ action across the dashboard now opens the creation screen directly, where you choose what to build.
- Replaced the old step-by-step wizard with a single scrolling flow: each stage β source, configuration, review, deploy β appears in order as you complete the one before it, instead of jumping between full screens with back/next buttons.
- Removed the separate project name and description step: the name is now derived automatically from the uploaded
.zipfilename or the connected repository, and can be edited later from project settings. Workspace selection moved into the configuration step instead of its own screen. - Runtime and database engine are now chosen from selectable cards instead of a plain dropdown or manual grid.
- Added a file import option to the environment variables step, accepting
.envor.txtfiles instead of typing each variable by hand.
Missing Dependency Detection
- Deploys now scan the uploaded project for imports that arenβt declared in its dependency manifest (
requirements.txt,package.json,go.mod,Gemfile,composer.json,Cargo.toml,pom.xml), even when the manifest is missing entirely, across all supported languages. - When missing dependencies are detected before deploy, the creation flow offers to add them to the manifest and deploy once with the fix applied, instead of requiring a rebuild after the fact.
- If dependencies are found missing on an existing appβs deploy or file upload, a notification is sent linking back to the app, and an endpoint is available to install the missing dependencies and trigger a rebuild.
Realtime Logs
- Rebuilt the application log terminal on a real terminal engine, so live logs stream smoothly and no longer freeze the page when an app or bot starts and floods output.
- Live streaming now survives restarts: the terminal keeps the connection open across a restart instead of disconnecting.
- Platform events now appear inline in the log stream, highlighted β including app restarts.
- Application logs, from both normal runs and crashes, are retained on disk with automatic rotation.
Navigation
- Reworked the not-found page with a clearer route status and direct links back to the home page or dashboard.
Email Templates
- Redesigned all six transactional email templates (magic link, purchase confirmation, rescue success, plan expiry, plan reminder, and project deletion) to a unified visual system.
- Replaced the old orange-header layout with a clean centered logo on the warm paper background, white content card with 1px border, and consistent Inter typography.
- Standardized the color palette across all templates, with the accent color reserved for buttons.
Bug Fixes
- Corrected toast colors so success and deployment confirmations follow the active light or dark theme.
- Fixed spacing in terminal error dialogs so log details and actions use the standard dialog body and footer.
- Matched the terminal log preview radius to the dashboard control scale.
- Standardized the Account ID field with the same input styling used by localization and email settings.
- Fixed an image-cropping bug on the landing page.
SEO & Social Previews
- Fixed link previews (Discord, WhatsApp, Slack, X): shared Vertra Cloud links now show a proper branded card instead of a broken or generic image.
- Added dedicated preview cards for Pricing, Enterprise, Databases, Blob Storage, CLI and the VS Code extension pages, each showing that pageβs own title.
- Added a proper page title and description to About, Privacy Policy, Terms of Service, Log In and Sign Up β they no longer show the homepageβs title when shared or found in search.
- Fixed the canonical link on Portuguese and Spanish pages, which previously always pointed at the English version.
- Published
llms.txt, a short machine-readable summary of the product for AI assistants and search tools.
March 21, 2026
Overview
Version 26.0 is the largest update to Vertra Cloud since launch. It introduces collaborative workspaces, multiple authentication providers, and a redesigned dashboard.New Features
Workspaces
Collaborative team spaces with role-based access control.- Create, edit, and delete workspaces
- 5 roles: Owner, Admin, Developer, Operator, Viewer
- Member management with invite links
- Assign applications and databases to workspaces
- Available from the Enterprise plan (5 to 24 members)
Authentication
Multiple login options and account management.- Magic Link β Passwordless email authentication
- GitHub OAuth β Login and account linking
- Google OAuth β Login and account linking
- Discord OAuth β Existing provider, now with account linking/unlinking
- Account switching β Up to 5 saved accounts in the same browser
- Session management β View active sessions, revoke all sessions
- API Key generation β For programmatic access
Notifications
Platform notification system integrated into the dashboard.- API-driven notifications with read/unread status
- Mark individual or all notifications as read
- Real-time display in dashboard header
- Localized email templates in 3 languages (EN, PT-BR, ES)
- Templates for: plan expiration, deletion warning, purchase confirmation
Plan Downgrade
Users can now downgrade their plan directly from the dashboard or API.- Downgrade to Free plan via
POST /v1/users/me/downgrade - Rate limiting to prevent abuse
- Warnings about impact on existing resources
Snapshots
Replaced the previous backup/commit system with unified snapshots.- Create manual snapshots for applications and databases
- Restore from any previous snapshot (with cooldown)
- Download snapshot content
vertracloud.configauto-injection during snapshot creation- Grouped snapshots view in dashboard
Free Plan Cleanup
Automatic management of inactive Free plan resources.- Projects offline for 30+ days are automatically deleted
- Email notifications at days 7, 23, and 27
- Reactivation link included in warnings
Dynamic Runtime Versions
Runtime selection now fetches available versions dynamically.- Version picker in project creation wizard
recommendedandlatesttags- New languages supported: Ruby, Rust, Java
Dashboard
Complete Redesign
The dashboard has been rebuilt from the ground up.- New project wizard β Multi-step creation with vertical animated layout
- File Manager β Rewritten with Monaco Editor (drag-and-drop, ZIP upload, forbidden path validation)
- Embedded terminal β Real-time log streaming via SSE with ANSI colors and auto-scroll
- Account settings β Authentication connections, session management, API key generation, redeem codes
- Responsive header β Compact mode, overflow prevention, close-on-click-outside menus
Internationalization
Full i18n support across the dashboard.- 3 languages: English, Portuguese (BR), Spanish
- Localized error messages, success messages, and email templates
- Granular message files organized by feature
GitHub Integration
Enhanced GitHub support in the project creation flow.- Repository selection including private repos
- Branch selection
- ZIP fallback when GitHub is unavailable
- Webhook configuration for automatic deploys
API Changes
New Endpoints
POST /v1/users/me/downgradeβ Plan downgradeGET /v1/users/me/sessionsβ List active sessionsDELETE /v1/users/me/sessionsβ Revoke all sessionsPOST /v1/users/me/generate-api-keyβ Generate API keyGET /v1/notificationsβ List notificationsPOST /v1/notifications/:id/readβ Mark as readPOST /v1/notifications/read-allβ Mark all as readPOST /v1/workspacesβ Create workspaceGET /v1/workspacesβ List workspacesGET/PUT/DELETE /v1/workspaces/:idβ Workspace CRUDPOST/DELETE /v1/workspaces/:id/membersβ Member managementPOST/DELETE /v1/workspaces/:id/apps/:appIdβ App associationPOST/DELETE /v1/workspaces/:id/databases/:dbIdβ Database associationGET /v1/apps/runtimesβ Available runtime versionsPOST /v1/ordersβ Create orderGET /v1/ordersβ List ordersPOST /v1/orders/:id/initiate/pixβ PIX paymentPOST /v1/redeem/:codeβ Redeem code
Response Format
Standardized API response format across all endpoints:- Success:
{ "status": "success", "response": { ... } } - Error:
{ "code": "ERROR_CODE", "message": "..." }
Type Safety
- Published the
@vertracloud/api-typespackage with full TypeScript definitions - All REST endpoint response types documented with
@seelinks to documentation - Complete type coverage: applications, databases, workspaces, orders, snapshots, notifications
Improvements
Crash Loop Detection
Intelligent auto-restart with abuse prevention.- 5 crashes in 10 minutes disables auto-restart for 24 hours
- Exit code filtering (normal exit code 0 is not counted)
- 1-hour cooldown between restarts
- Minimum 60-second uptime to count as stable
Real-Time Logs
Enhanced log streaming with improved reliability and real-time delivery.Custom Subdomain Management
- Select custom subdomain during project creation
- Change subdomain via API (
PATCH /v1/apps/:id/network/subdomain) - Availability validation
File Manager
- Upload via drag-and-drop with ZIP support
- Forbidden directory/file validation
- Smart file tree sorting
- Localized error messages
Bug Fixes
- Fixed database status monitoring inconsistencies
- Fixed notification delivery during data migration
- Fixed horizontal overflow in responsive dashboard header
- Fixed various bugs in project creation wizard flow
- Fixed crash loop detection for containers with syntax errors
- Fixed custom domain DNS record verification
Breaking Changes
- Snapshot system β Replaced previous backup/commit system. Old backup endpoints are deprecated.
- Authentication β New session-based authentication. Existing API keys continue to work.
- Workspace endpoints β
/v1/organizations/*renamed to/v1/workspaces/* - Auto-restart behavior β Now includes crash loop detection with automatic disable
- Free plan cleanup β Inactive projects are deleted after 30 days (with email warnings)
v26.1 β March 25-26, 2026
Bug Fixes
- GitHub deployment file deletion β Fixed deployments aggressively removing
.envand untracked configuration files - App file deployment preservation β App updates now preserve existing local files instead of wiping untracked content
- Metrics collection β Fixed metrics not being collected for some running applications
- Metrics display β Fixed missing network fields, null value crashes, and duplicate time labels on charts
- UUID validation β API route parameters for app and database IDs now validate UUID format, returning 400 for invalid values
- Environment variable deletion β Fixed the delete endpoint call from the dashboard (was missing the env ID in the URL path)
- Environment variable key editing β Fixed the key input not updating when editing an existing environment variable
- Upload overlay text color β Fixed low-contrast description text in the commit upload progress dialog
Improvements
- vertracloud.config persistence β The config file is now written to the app directory on creation, ensuring future uploads inherit the configuration
February 2026
Overview
February 2026 brought critical database management features and integrated development tools. The official VSCode extension, managed database support, and enhanced security features make Vertra Cloud a comprehensive platform for full-stack development.New Features
VSCode Extension
Official Vertra Cloud extension for VS Code.- Direct deployment from the editor
- Application management from VS Code
- Real-time log viewing in sidebar
- Quick status and metrics display
- Integrated project creation
- Available on VS Code Marketplace
Managed Databases
Production-ready database hosting with automatic management.- PostgreSQL 17
- MongoDB 8.0
Automatic TLS Certificates
Encrypted database connections out of the box.- Automatic TLS certificate generation
- Certificate renewal management
- Client certificate support
- Secure connection requirements
MySQL Support
MySQL 8.0 database hosting.- MySQL 8.0 with latest features
- Mandatory X509 authentication for security
Improvements
Email Delivery
Optimized email system performance.- Improved magic link email delivery speed
- Better email routing
- Reduced delivery latency
- Increased reliability
Custom Domain Fixes
Resolved DNS configuration issues.- Fixed 404 errors on some custom domain configurations
- Improved DNS propagation handling
- Better certificate provisioning for custom domains
Database Management
Enhanced certificate and credential handling.- Fixed certificate generation edge cases
- Better credential display and management
- Improved database connection testing
Bug Fixes
- Fixed email delivery timing issues
- Corrected certificate generation for edge cases
- Fixed custom domain DNS configuration
- Improved database connection resilience
Breaking Changes
January 2026
Overview
January 2026 marked the official public beta launch of Vertra Cloud with a full-featured REST API and comprehensive documentation. The platform opened to the community with team collaboration features.Features
API v1
The first public version of the Vertra Cloud RESTful API.- Comprehensive REST API for all platform operations
- Full API reference documentation
- Request/response examples
- API key authentication
- Rate limiting and quota management
Workspaces
Team collaboration with role-based access control.- Create and manage workspaces for teams
- 5 predefined roles: Owner, Admin, Developer, Operator, Viewer
- Role-based permission management
- Member invitation and management
- Workspace isolation and security
Public Beta
Official open beta period launch.- Platform opened for public user registration
- Beta testing and feedback collection
- Community user support
- Stability and performance improvements based on feedback
Documentation
Complete API and platform documentation.- Docs site at docs.vertracloud.app
- API reference with all endpoints
- Code examples and tutorials
- Getting started guides
- FAQ and troubleshooting
Infrastructure
SSL/TLS Support
Automatic SSL/TLS certificates provisioned and renewed for all applications and custom domains.Improvements
- Solid API foundation for integrations
- Clear role hierarchy for teams
- Comprehensive documentation for developers
Bug Fixes
- API response consistency
- Documentation accuracy
Breaking Changes
December 2025
Overview
December brought new language runtime support and improved the promotional system with the holiday VERTRA30 coupon. Email delivery improvements ensure better communication with users across the platform.New Features
Go Language Support
Added Go runtime for high-performance applications.- Go language support for deployment
- Automatic Go compilation
- Go module dependency management
- Fast build times
- Ideal for microservices and CLI tools
PHP Language Support
Added PHP 8.x runtime for web applications.- PHP 8.x runtime support
- Common PHP web framework compatibility
- Apache/Nginx configuration support
- PHP package management via Composer
- Web application hosting
Coupon System
Promotional code support for discounts on orders.Improvements
- Improved email delivery reliability and template rendering
Bug Fixes
- Resolved email delivery failures
- Fixed date and duration calculations
- Improved timezone handling
Breaking Changes
November 2025
Overview
November brought critical infrastructure improvements and a major redesign of the pricing model. The new auto-restart system prevents failure loops, the new Intermediary plan expands accessibility, and static site hosting enables pure frontend deployments.New Features
Auto-Restart
Intelligent container restart with crash detection to prevent failure loops.- Monitors container status continuously
- Only restarts on real execution failures (crashes), not config or syntax errors
- Prevents infinite restart loops that would waste resources
- Automatic stabilization for transient issues
.vertraignore File
Control which files and folders are excluded from auto-deploy.- Works similar to
.gitignorefor deployment - Prevents unnecessary files from being uploaded
- Optimizes deployment speed and reduces package size
Improved Commits
Enhanced commit flow for greater stability and reliability.- Streamlined deployment process
- Better commit tracking and rollback options
- Increased deployment reliability
Static Site Hosting
New language option for hosting pure frontend applications.- Deploy HTML, CSS, and JavaScript sites directly
staticlanguage option in project creation- Perfect for static sites, SPAs, and documentation
- Automatic serving with proper MIME types
New Plans Structure
Redesigned pricing tiers with clear resource allocations.- Intermediary Plan β R$18.99/month with custom domain support
- PRO Plan β Custom domain included, host up to 2 APIs for R$5.99/month
- Updated vCPU allocations per plan tier
- Clearer value proposition at each tier
Credit Card Payments
Initial UI implementation for credit card payment method.- Foundation for credit card processing
- Preparation for enhanced payment options
- Improved checkout experience
Download .env
Export project environment variables as a file.- Download all environment variables at once
- Convenient for local development setup
- Secure offline access to configuration
UI and Performance Improvements
Visual Enhancements
- Download button added to files tab
- Faster dashboard loading times
- Mobile and tablet responsiveness improvements
- Environment variable paste auto-detection
- New project grid with list and card view options
- Improved header and profile menu interactions
Performance
- Faster file uploads
- Speedier commit operations
- Reduced restart, stop, and start operation times
New Payment Page
Completely redesigned payment flow.- Clearer payment options
- Improved user experience during checkout
- Support for multiple payment methods
- Transaction history and invoice access
Improvements
- Better plan feature blocking based on tier
- Improved error messages throughout the platform
- Enhanced mobile responsiveness across all pages
- More intuitive navigation between plan tiers
Breaking Changes
September 2025
Overview
September introduced critical developer tools and a unified logging system. The Bun runtime adds a modern JavaScript alternative, smart metrics provide insights into application behavior, and the VSCode extension brings Vertra Cloud deployments directly into your editor.New Features
Unified Log System
Centralized error and crash tracking for all applications.- Errors and crashes now stored in dedicated LOGS tab
- Unified interface for viewing all application logs
- Easy filtering and searching through log history
- Better debugging and issue investigation
Bun Support
Fast JavaScript and TypeScript runtime now available.- Deploy applications using Bun 1.2.2 or later
- Alternative to Node.js with faster performance
- Full TypeScript support out of the box
- Compatible with existing npm packages
Smart Metrics
Automated performance monitoring at regular intervals.- Metrics captured every 5 minutes
- Tracks CPU usage, memory consumption, and request counts
- Historical data for performance analysis
- Foundation for auto-scaling features
App Logs Tab
New dedicated logs interface for applications.- Real-time log streaming
- Historical log retrieval
- Log filtering and search capabilities
- Integration with error tracking
VSCode Extension
Official Vertra Cloud extension published for beta testing.- Deploy directly from VS Code
- Manage applications from the editor
- View logs and metrics in the sidebar
- Alpha version available on VS Code marketplace
Runtime Updates
Node.js Versions
Multiple Node.js versions now supported.- Node.js 22.18.0
- Node.js 24.5.0
- Automatic version selection during deployment
Python Version
Latest Python 3.13 support available.Bun Runtime
- Bun 1.2.2
Improvements
Navigation and UX
- Improved sidebar navigation
- Better organization of application management features
- Cleaner log interface
- Enhanced metric visualization
Bug Fixes
- Fixed log streaming connection issues
- Improved error message clarity in logs tab
- Fixed metric calculation edge cases
- Resolved navigation issues in VSCode extension
Breaking Changes
August 2025
Overview
August delivered a complete platform redesign with modernized file management, comprehensive API documentation, and simplified database credential handling. The visual refresh and feature improvements make the platform more intuitive and developer-friendly.New Features
File Manager Modernization
Complete visual and functional overhaul of the file management system.- New modern interface with improved usability
- Commit button for File Manager users to deploy changes directly
- Reinstall dependencies button for Free plan users
- Enhanced file tree visualization
- Drag-and-drop support
- ZIP file extraction capabilities
Database Certificates
Simplified certificate management for secure database connections.- Unified certificate copy flow for Redis, MongoDB, and PostgreSQL
- New certificate tab in database settings
- One-click certificate copying to clipboard
- Clear certificate information display
- Better certificate organization
API Reference
Full REST API documentation published.- Complete documentation for Applications endpoint
- Databases endpoint reference
- Organizations endpoint documentation
- Users endpoint reference
- Services endpoint documentation
- Interactive API examples and request/response samples
TSX Support
Added TypeScript JSX file support in File Manager..tsxfiles now recognized and editable- Full syntax highlighting for TSX
- Proper file handling in commits
App Link on Cards
Improved dashboard project cards.- For websites and APIs, the deployment URL now displays directly on project cards
- Quick access to view live applications
- One-click navigation to running app
Open App
Enhanced application opening behavior.- Now opens in the same tab instead of new tab
- Improved user experience
- Better browser tab management
Platform Redesign
Major visual modernization across the entire website.- Updated color scheme and design system
- Improved typography and spacing
- Better visual hierarchy
- Modern UI components throughout
- Responsive design improvements
Management Improvements
Organization CRUD
Enhanced routes for organization and project management.- Improved organization creation flow
- Better project addition/removal from organizations
- More intuitive member management interface
Detailed Descriptions
Added comprehensive descriptions across features.- Organizations section has detailed explanations
- Explore page descriptions for better discovery
- Backups section with helpful context
- Settings pages with clearer instructions
Order Limit Increase
Increased simultaneous plan order limit.- Can now handle up to 3 simultaneous plan orders
- Better support for bulk plan changes
- Improved checkout flow
Terminal and Logging
Enhanced Terminal
Improved terminal viewing experience.- View last logs even when app is offline
- Better log preservation
- Fixed duplicate request bug
- Improved log scrolling
Language and Runtime Support
Python Upload Fix
Fixed deployment issues for Python projects.- Better handling of Python projects with different directory structures
- Improved package detection
- More reliable deployment process
Python Versions
Recommended and latest versions now available.- Python 3.11 (recommended for stability)
- Python 3.12 (latest version)
Additional Features
Privacy Page
Added dedicated privacy policy page./privacyendpoint now available- Clear privacy statement for users
- Compliance and data handling information
Performance Improvements
Package Installation
Significantly faster dependency installation.- 1.5x faster package installation speed
- Quicker deployments
- Reduced build times
Header Responsiveness
Improved header performance and responsiveness.- Fixed responsiveness issues on smaller screens
- Better overflow handling
- Smoother interactions
Bug Fixes
- Fixed various UI inconsistencies
- Improved error handling across the platform
- Fixed certificate generation edge cases
- Corrected file manager sorting issues
- Improved database connection stability
Breaking Changes
July 2025
Overview
July marked a major milestone with the launch of the payment system, organization management, and comprehensive application settings. The platform evolved from a basic hosting service to a full-featured application management system with team collaboration and billing capabilities.New Features
App Settings Tabs
Organized application management across dedicated tabs.- General β Basic app settings and information
- Environment Variables β Secrets and configuration management
- Deploys β Deployment history and auto-deploy setup
- Network β Custom domain and networking options
- Danger Zone β Destructive operations like app deletion
Environment Variables
Complete secrets and configuration management system.- Full CRUD operations for environment variables
- Dedicated secrets section for sensitive data
- Bulk paste support for quick setup
- Real-time environment variable injection
- Variable encryption at rest
Custom Domains
DNS and subdomain management for applications.- Configure custom domain for any application
- DNS settings guidance and validation
- Subdomain customization
- SSL/TLS certificate provisioning
Auto Deploys
Automatic deployment from GitHub webhooks.- GitHub webhook integration
- Automatic deployment on push to specified branch
- Webhook configuration and management
- Deployment logs and history
Organizations
Full team management with role-based access control.- Create and manage organizations
- Member management with role assignment
- Commit permissions per role
- Backups access control per role
- Organization deletion
Pricing Page
Complete pricing structure with plan comparison.- Tier comparison table
- Feature list per plan
- Database plan pricing
- Annual pricing options
- Clear plan differentiation
Payment System
Mercado Pago integration for billing.- PIX Integration β Brazilian instant payment method
- Invoice page showing transaction history
- Pay page for plan purchases
- Plan renewal management
- Multiple payment options support
Redeem Codes
Promotional code redemption.- Redeem promotional codes
- Code validation and verification
- Usage tracking and history
Plan Management
User-friendly plan management interface.- Upgrade to higher tier
- Downgrade to lower tier
- Plan renewal
- Plan change history
Plan Expiry Notifications
Alerts for upcoming plan expiration.- Email notification before expiration
- Dashboard warning indicators
- Time to renew information
- Renewal prompt in settings
API Key
Request and manage API keys from dashboard.- Generate API keys
- Revoke keys
- Key management interface
- API key usage in applications
Activities and Audit Logs
Complete activity tracking for accountability.- Activity tracking for applications
- Database activity logs
- User action history
- Timestamp and details for each action
- Export capability
Database Features
Database Settings Redesign
Improved database management interface.- Reset section for database reset operations
- Credential management and display
- Overview tab with database information
- Backup and restore options
Deployment Features
GitHub Integration
Simplified project setup from existing repositories.- GitHub repository selection in new project flow
- Private repository support
- Branch selection
- Automatic webhook setup
Access Control
Plan Permissions
Feature availability based on selected plan.- Auto-restart limited to paid plans
- File manager restricted to certain tiers
- Custom domain availability per plan
- Metrics visibility by plan
- Backup functionality by plan
- Auto-deploy availability
- Plan-based feature blocking
Terminal Improvements
Real-Time Terminal
Enhanced live log streaming with improved stability and reliability.Improvements
- Clearer plan differentiation
- Better team collaboration features
- Improved payment flow
- Enhanced application organization
- Better environment variable management
Bug Fixes
- Fixed API key generation issues
- Improved webhook delivery reliability
- Fixed organization deletion edge cases
- Corrected plan permission checking
Breaking Changes
June 2025
Overview
June introduced fundamental platform features that transformed Vertra Cloud from a basic deployment service into a comprehensive application management platform. The complete dashboard rebuild, file manager implementation, and real-time logging system provided the foundation for all future development.New Features
Dashboard Rebuild
Complete redesign of the main application interface.- New sidebar-based navigation layout
- Cleaner, more intuitive organization
- Responsive design for all screen sizes
- Real-time status indicators
- Streamlined application management
File Manager
Full-featured file management system for applications.- Browse and edit application files directly
- Bulk delete capabilities
- Configuration file editing support
- File upload and download
- Directory tree navigation
- File creation and editing
Organizations
Team collaboration and management structure.- Create and manage organizations
- Add members to organizations
- Role-based access control
- Organization-level settings
- Member invitations
- Permission management
Real-Time Logs
Live application log streaming.- Real-time log updates as applications run
- Log filtering and search
- Historical log retrieval
Spanish Language Support
Internationalization support for Spanish users.- Complete Spanish (ES) translations
- Language selection in user settings
- All UI text translated
- Email templates in Spanish
Commit System
Application versioning and deployment tracking.- Create application commits
- Revert to previous commits
- Commit history visualization
- Deployment tracking
- Version management
Backups
Application backup and restore functionality.- Create manual backups
- View backup history
- Restore from backup
- Backup scheduling
- API integration
New Landing Page
Completely redesigned home page.- Modern design and layout
- Clear value proposition
- Feature highlights
- Call-to-action buttons
- Better navigation
Pricing Page
Initial pricing structure and plans.- Plan comparison
- Feature list per tier
- Pricing transparency
- Tier differentiation
Additional Pages
New informational pages for platform.- Terms of Service page
- About page
- Support/Contact page
- Help documentation
Components and Visualization
Charts
Metrics visualization components.- Charts for resource usage
- Performance metrics display
- Historical data visualization
- Interactive chart interactions
- Multiple chart types
Activities
Activity tracking and display.- Application activity logs
- Database activity logs
- User action tracking
- Detailed activity information
- Activity filtering
Markdown Support
Logs and Activity Cards
Enhanced text formatting.- Markdown rendering in logs
- Markdown in activity cards
- Better content readability
- Code block support in logs
- Link rendering
Improvements
- Cleaner user interface throughout
- Better organization of features
- Improved navigation flow
- More intuitive application management
- Enhanced visibility of application status
- Better resource utilization display
Bug Fixes
- Fixed dashboard rendering issues
- Improved real-time log delivery
- Fixed file manager edge cases
- Corrected navigation bugs
- Improved error handling
Breaking Changes
May 2025
Overview
May marks the beginning of Vertra Cloud with the initial dashboard launch. This foundational release provides core application management, database connectivity, and the building blocks for all subsequent features.Features
Dashboard
Initial dashboard page for application and database management.- View all deployed applications
- View all connected databases
- Quick status overview
- Project listing and filtering
- Basic resource management
Database Details
Connected database management interface.- View database information
- Connection credentials display
- Database usage statistics
- Configuration management
- API integration
App Details
Application management and file viewing.- Application overview
- File manager integration
- Tab navigation from URL parameters
- Application logs
- Deployment status
Apps and Databases Pages
Dedicated listing pages for organization.- Apps page showing all applications
- Databases page showing all databases
- Filtering and sorting
- Quick actions per resource
Custom Domain Field
Initial custom domain support in application model.- Custom domain configuration on applications
- Domain validation
- DNS setup guidance
- Foundation for custom domain features
Development Setup
Code Quality Tools
Professional development standards.- ESLint configuration for code linting
- Prettier configuration for code formatting
- Automated code quality checks
- Consistent code style enforcement
Design System
Custom Tailwind configuration.- Tailwind CSS for styling
- Custom color system with brand colors
- Design tokens and utilities
- Responsive design framework
Improvements
- Clean, functional UI
- Intuitive application management
- Foundation for future features
- Solid architectural base
- Ready for platform expansion
Infrastructure
Initial Platform
Basic hosting and deployment infrastructure.- Container deployment system
- DNS and SSL support
- Basic routing
- Application isolation