Skip to main content
Releases follow 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.

API and MCP

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 returns DOWNLOAD_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.

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 with SNAPSHOT_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.app and 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:read scope: GET /v1/apps/:id/analytics, /analytics/errors, /analytics/performance and /analytics/requests. They take start, end, one filter per dimension, compare and compare_start.
  • New error codes: PLAN_DOES_NOT_SUPPORT_WEB_ANALYTICS_PERFORMANCE, PLAN_DOES_NOT_SUPPORT_WEB_ANALYTICS_REQUESTS, ANALYTICS_RANGE_EXCEEDS_PLAN and ANALYTICS_BUSY. See Errors.
  • GET /v1/plans gains features.web_analytics_performance, features.web_analytics_requests and limits.web_analytics_history_days.
  • @vertracloud/api-types 0.6.1 has the new types. The JavaScript, Python and Go SDKs (0.4.1), the CLI (vertra app analytics, errors, performance and requests, 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 answers 429 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/plans is 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/quote returns the exact price of a plan and period, with an optional coupon, without creating an order. It needs the billing:read scope. See Quote Order.
  • POST /v1/orders accepts months: 6 and answers PLAN_NOT_FOR_SALE for a plan that is no longer sold.
  • Plan names: plan.name in GET /v1/users/me now returns names such as starter-1, pro-4, business-12 and enterprise-32.
  • The JavaScript, Python and Go SDKs, the CLI, the MCP server (list_plans and quote_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/image refuses images that belong to a template, with IMAGE_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 template and vertra stack in 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:write and stacks: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.
  • 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 validate checks a manifest locally against the public JSON Schema.

Blob: keys restricted to one folder

An API key with blob:* 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 the latest 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_INVALID and SESSION_REVOKED with 401, and API_KEY_IP_DENIED and API_KEY_SCOPE_DENIED with 403. The generic UNAUTHORIZED code, which the API never returns, is gone, and the error examples show the right status codes.
  • Creating an app from the terminal: run vertra upload in the project folder. It creates the application and saves its ID in vertracloud.config, so vertra deploy can then send new code to it. The docs used to start with vertra deploy, which only updates an application that already exists and fails on an account with none. The CLI page also explains vertra link and vertra 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 own Dockerfile 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 Dockerfile at 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 Dockerfile before the build starts: instructions that would weaken the isolation of the build are refused, and common mistakes, like .env files in the project, are pointed out so you can fix them. .env* files never go into the image, and your Dockerfile is 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 EXPOSE of the Dockerfile, or 80, and it reaches your app as PORT. 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-id to 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 /app and 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 Dockerfile offers to create an image instead.
New API routes under /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 following main and master.
  • 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 .git in the middle, like name.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_id that does not match the repository is refused with VALIDATION_ERROR, a repository outside the installation returns INSTALLATION_NOT_FOUND, and GitHub being unavailable returns FETCH_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 with version 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 use btree_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 the vertracloud 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 from deno.json, deno.jsonc or deno.lock. MAIN is the entry file, such as main.ts.
  • .NET (dotnet, shown as .NET (C#)): 10.0.402. Detected from .csproj, .fsproj, .sln or global.json. MAIN is the .csproj, and the app listens on the port in ASPNETCORE_HTTP_PORTS, which is already set to 80.
  • Elixir (elixir): 1.20.4 on OTP 28. Detected from mix.exs. Phoenix is supported with SECRET_KEY_BASE and PHX_HOST set as environment variables. Run mix assets.deploy before zipping, or use a project without assets.
Step-by-step guides: Deno, .NET and Elixir.

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-105481 CVE-2026-105482 CVE-2026-106069 CVE-2026-106072 CVE-2026-106073 CVE-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 notes
    CVE-2026-15310 CVE-2026-15806 CVE-2026-17084 CVE-2026-19445 CVE-2026-19553 CVE-2026-19672 CVE-2026-87910
  • Go 1.26.10 and 1.27.3: CVE-2026-56866 in net/http, CVE-2026-111943 in crypto/x509 and 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 before package.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. The cleanup_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: adding example.com also adds www.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 /api in front of every request. Recommended for APIs.
  • Redirects: a domain can redirect to another domain of the same application with a 301, 302, 307 or 308 (default 308), 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 CNAME and validation TXT records at your DNS provider. Root domains show a warning, because a CNAME on the root needs a DNS provider with CNAME flattening.
New routes manage domains under /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 as pro or enterprise-8. The numeric plan ID is gone.
  • GET /v1/users/me no longer returns plan_id or plan.id. Read plan.name instead. plan is null when the account has no active plan.
  • Applications, databases and workspaces return owner_plan (the plan name, or null) instead of owner_plan_id.
  • Accounts without an active plan get PLAN_REQUIRED when they create applications or databases or publish a site. FREE_PLAN_SUSPENDED and FREE_PLAN_NO_WEB_PUBLISH are 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 of custom_domain. public_url points to the main domain. The publish routes return the hostnames in domains.
  • NO_CUSTOM_DOMAIN is no longer returned: an application without domains has an empty list.
  • DOMAIN_ALREADY_IN_USE now answers 409 and CUSTOM_DOMAIN_REGISTRATION_FAILED answers 502.
  • New error codes: DOMAIN_NOT_FOUND, DOMAIN_LIMIT_REACHED, DOMAIN_PORT_LIMIT_REACHED, INVALID_DOMAIN_PORT, INVALID_PATH_PREFIX, INVALID_REDIRECT_TARGET and DOMAIN_CONNECT_UNAVAILABLE. See Errors.
Update the SDKs, the CLI and the MCP server together with any code that reads 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 domains commands (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 gets 400 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 down and BUILD_INTERRUPTED appears 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 new last_build_error field (null after 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, and missing_dependencies is returned by GET /v1/apps/{id} after the build.
  • SDKs, MCP and CLI: apps.waitUntilReady (JavaScript), apps.wait_until_ready (Python) and Apps.WaitUntilReady (Go) wait for the build. The MCP server has a new wait_for_app tool, and the CLI accepts --no-wait. See the SDK guide and MCP.
See Create Application and Errors.

Builds install devDependencies when a build command is set

When an application has a build command, dependency installation now includes devDependencies, 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 with RACK_ENV and RAILS_ENV set to production, so Sinatra apps no longer answer 403 Host not permitted; both variables are now reserved, like NODE_ENV.
  • Java: Maven and Gradle projects are compiled on the platform, since the runtime now ships a JDK.
  • PHP: adding a package to composer.json without updating composer.lock no 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 on blob.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 on web_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 answer STORAGE_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.blob and client.Blob in 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, rm and stats. 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; auto uses zero downtime for applications that receive web traffic; on forces it, including for applications without web traffic. Bots and other applications without web traffic stay on stop-and-start in auto, 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 new deploy.health_check_path field of Update Application Configuration or in the application’s settings. Any HTTP response counts as healthy, including 404; a refused connection, a timeout or a 5xx response 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.
Both versions share the application’s folder for a short time, so read the limitations before turning it on for an application that writes data files or reads its files on every request. The new rollback and zero-downtime guide covers how releases, rollback and zero-downtime deploys work together.

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_rollback field of Update Application Configuration. Changing it does not restart the application.
Get Application now returns a 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 answer FORCED_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.
The API has a preview of the variable changes and a rollback endpoint. Rolling back needs the 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 message field 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.
The API exposes the same history to your tools. List releases returns the versions of an application, and release log returns the log of one of them. Both require the 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 the main 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 releases lists versions and vertra app releases log shows the log of a failed one. vertra app rollback shows what will happen and asks before it runs; with --env it lists only the names of the variables that change. Without a terminal it needs --yes. vertra app config accepts --zero-downtime, --auto-rollback, --health-path and --clear-health-path.
  • SDKs: apps.releases lists 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_rollback and rollback_app. rollback_app is marked destructive, so your client asks you to confirm. update_app_config accepts the deploy settings and deploy_app accepts a message.
  • Scopes: apps:read to list and read logs, apps:envs for the preview and to restore variables, apps:write to roll back.
See CLI, SDKs, MCP and the rollback and zero-downtime guide.
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/upload accepts an optional path query 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_PATH and PATH_IS_FILE.
  • SDKs: JavaScript apps.files.upload(id, file, filename, { path }), Python upload(..., path="src") and Go ApplicationFileUploadParams{Path: "src"}.
  • CLI: vertra app commit --path src uploads 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/orders only accepts months of 1, 3 or 12; any other value returns 400 INVALID_MONTHS. The Economy plan only accepts 1.
  • Creating an order and checking its status now return allowed_payment_methods. For the Economy plan it is ["pix"].
  • POST /v1/orders/{orderId}/initiate/pix returns the same QR code while it is still valid, and the QR code expires with the order. It returns 409 ORDER_NOT_PAYABLE while a card payment of the same order is being confirmed.

SDKs (JavaScript, Python and Go)

  • New billing.details() and billing.updateDetails() (update_details() in Python, Details / UpdateDetails in Go) read and update your billing details through /v1/users/me/billing, with the structured address, CPF or CNPJ and optional phone. orders.create fails with BILLING_DETAILS_INCOMPLETE until they are complete.
  • Order responses include allowed_payment_methods, and each order in the list includes has_receipt.
  • The order list filter accepts card as a provider, besides pix and redeem_code.
  • JavaScript: billing, runtime and restart types now come straight from @vertracloud/api-types 0.3.2. apps.runtimes() returns APIApplicationRuntimes, and apps.restart() takes RESTPostAPIApplicationRestartBody. 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_app and update_app_config accept the build command (build).
  • create_app, create_database and create_order explain the FREE_PLAN_SUSPENDED error.

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-ownership is 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 returns 409 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/apps returns 201 with the application in down instead of an error. BUILD_FAILED, BUILD_TIMEOUT, INSTALL_FAILED, INSTALL_TIMEOUT, INSUFFICIENT_MEMORY and INSTALL_SHIELD_BLOCKED are 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 with VERSION=recommended, move to 1.2.23 on their next start or restart.
  • If your vertracloud.config pins VERSION=1.2.2 or VERSION=1.1.0, change it to 1.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: autorestart in POST /v1/apps and auto_restart in PATCH /v1/apps/{id}/config are 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 --autorestart flag.
  • vertracloud.config: an old AUTORESTART line 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, in VERSION 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 latest of each) could silently build the application on the recommended version instead.
  • The version you confirm wins. When a .zip has a VERSION in vertracloud.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_VERSION instead of quietly falling back to another one. See List Runtimes for the valid values.
An application created with Node.js 24.5.0 or Ruby 3.4 that was running on the recommended version switches to the version it chose on its next deploy, rebuild or restart. If it depends on the older runtime, set the version to recommended in Settings β†’ General before restarting.
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. A 400 VALIDATION_ERROR used to include path loose at the top of the response; it now comes as { "code": "VALIDATION_ERROR", "message": "...", "details": { "path": "..." } }.
  • File manager client errors are 400, not 500. Uploading with no file (NO_FILE_UPLOADED) or an unreadable zip (INVALID_ZIP_STRUCTURE) used to respond 500; it now responds with the correct 4xx status.
Also:
  • GET /v1/apps/runtimes responds with just { "response": { ... } }, without the extra status field.
  • PATCH /v1/users/me only accepts pt-br, en-us or es-es for language.
  • POST /v1/users/{id}/snapshots/{snapshot_id}/restore rejects an invalid resource_id with 400.
  • POST /v1/orders/{orderId}/initiate/pix always returns transaction_amount as a number.
If your integration read 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’s size 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
The installer picks the right build for your system and processor (x64 or ARM), verifies the file checksum, and puts the 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.config key, 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 main or master publish.
  • 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.
The pages are available in Portuguese, English and Spanish, with access from the menu and footer.

Official JavaScript, Python and Go SDKs

SDKs

  • @vertracloud/sdk-api (npm), vertracloud-api (PyPI) and github.com/vertracloud/sdk-api-go arrive 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.APIError with methods like IsNotFoundError() and IsRateLimitError().
  • 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:delete scope. Only the workspace owner can, same as in the dashboard.
  • Invites with the new workspaces:invites scope: 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:read lists requests and workspaces:write creates one for someone with approval permission.
The two new scopes aren’t included in the 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.
Open CLI or VS Code Extension to get started.

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.
Flow’s groups remain a separate thing: they organize elements on the local canvas. There’s no sync or migration between Flow groups and resource folders.

Restart flags: reinstall dependencies and force build

Restart Application now accepts two optional body fields:
  • reinstall_dependencies reinstalls the application’s dependencies from scratch, ignoring the install cache β€” the same as β€œReinstall dependencies” in the dashboard’s file manager.
  • force_build runs the application’s build command again even if no source file changed since the last build β€” the same as β€œForce build” in the dashboard.
This replaces the separate dependency-install route. Sending either flag counts one slot against the plan’s hourly deploy limit.

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 AUTORESTART field in vertracloud.config is still accepted, but now ignored β€” it no longer needs to be present in the file.
  • In the API, the auto_restart field remains in application responses and is now always true; the autorestart field 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.
Dashboard usage doesn’t count toward either window.Also changed:
  • 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.
Full detail in API limits and Plans and limits.
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_command field, 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 BUILD key in vertracloud.config, alongside START.
  • 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.config generated 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.
The format hasn’t changed: 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.js written 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.
The new runtime’s dependencies are installed automatically on the first restart after the switch β€” that already happened and still does. What was missing was space: the old runtime’s packages (a 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 VERSION value for vertracloud.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.
The comparison table at the top shows all ten side by side, for anyone still choosing.

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.
  • /lgpd leads 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.txt and MCP Server above the account divider. Docs, tutorials (YouTube @vertracloud) and llms.txt open 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.txt and 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 (or DELETE / 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-br page was served marked en-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 lg up 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 β€” npm alone 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 pip compiling 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.txt or package.json no 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. Editing go.mod, composer.json, Gemfile or Cargo.toml now offers the reinstall too, and a package.json sitting 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_command is now limited to 512 characters at the moment you save it, instead of only failing later during a rebuild.
  • Uploading a corrupted or truncated .zip when creating an application now returns INVALID_ZIP instead of a generic internal error.
  • Writing a file over a path that already exists as a folder now returns TARGET_IS_DIRECTORY instead 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 .zip upload 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 .zip filename 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 .env or .txt files 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.
  • 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.config auto-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
  • recommended and latest tags
  • 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 downgrade
  • GET /v1/users/me/sessions β€” List active sessions
  • DELETE /v1/users/me/sessions β€” Revoke all sessions
  • POST /v1/users/me/generate-api-key β€” Generate API key
  • GET /v1/notifications β€” List notifications
  • POST /v1/notifications/:id/read β€” Mark as read
  • POST /v1/notifications/read-all β€” Mark all as read
  • POST /v1/workspaces β€” Create workspace
  • GET /v1/workspaces β€” List workspaces
  • GET/PUT/DELETE /v1/workspaces/:id β€” Workspace CRUD
  • POST/DELETE /v1/workspaces/:id/members β€” Member management
  • POST/DELETE /v1/workspaces/:id/apps/:appId β€” App association
  • POST/DELETE /v1/workspaces/:id/databases/:dbId β€” Database association
  • GET /v1/apps/runtimes β€” Available runtime versions
  • POST /v1/orders β€” Create order
  • GET /v1/orders β€” List orders
  • POST /v1/orders/:id/initiate/pix β€” PIX payment
  • POST /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-types package with full TypeScript definitions
  • All REST endpoint response types documented with @see links 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

Review these changes before updating. They may impact existing integrations.
  • 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 .env and 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

No breaking changes. Existing applications and databases continue to work without modification.
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

No breaking changes. This is the initial public beta release.
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

No breaking changes in this release. All existing applications continue to work without modification.
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 .gitignore for 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
  • static language 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

No breaking changes in this release. All existing deployments continue to work without modification.
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

  • 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

No breaking changes. The LOGS tab is an addition that doesn’t affect existing functionality.
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.
  • .tsx files now recognized and editable
  • Full syntax highlighting for TSX
  • Proper file handling in commits
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.
  • /privacy endpoint 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

No breaking changes. All existing deployments and features continue to work without modification.
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

No breaking changes. All existing applications continue to work without modification.
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

No breaking changes. All deployments from May continue to work without modification.
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

Breaking Changes

This is the initial release. No breaking changes to consider.
Last modified on November 8, 2026