Changelog
The single place to follow what’s new across the ZSoftly Cloud Platform. Each section below is its
own changelog: platform & services, the Marketplace, the zcp CLI, and the Terraform
/ OpenTofu provider, newest first.
Recent releases
Section titled “Recent releases”CLI v1.1.0: block storage snapshot schedules (October 23, 2026)
Terraform / OpenTofu provider v1.1.0 (October 23, 2026)
ZCP Store (October 11, 2026)
Longer instance passwords (October 11, 2026)
CLI v1.0.1: lifecycle-route and volume fixes (October 11, 2026)
CLI v1.0.0: separate root storage and backup schedules (October 11, 2026)
Terraform / OpenTofu provider v1.0.0 (October 11, 2026)
Compute and storage sold separately (October 11, 2026)
CLI v0.0.31: ACL rule pagination and dependency security updates (October 9, 2026)
CLI v0.0.30: custom VM plans and object storage keys (October 3, 2026)
Terraform / OpenTofu provider v0.2.0 (September 7, 2026)
CLI v0.0.29: complete volume listings (September 7, 2026)
Up to 8 subnets per VPC (September 7, 2026)
CLI v0.0.28: security fixes and working backups (September 7, 2026)
Object storage endpoint DNS resolution from VPCs (September 6, 2026)
Kubernetes 1.37 is available (September 6, 2026)
Postpaid billing is available (September 1, 2026)
Intel compute in Montréal (YUL) (August 16, 2026)
Platform and services updates (August 8, 2026)
CLI v0.0.26: port forwarding and SSH key fixes (July 19, 2026)
CLI v0.0.25: DNS MX record support (July 18, 2026)
CLI v0.0.24: lifecycle and SDK improvements (July 16, 2026)
CLI v0.0.17: full object storage workflows (June 17, 2026)
Marketplace updates (June 17, 2026)
Terraform and OpenTofu provider (June 10, 2026)
Platform & services
Section titled “Platform & services ”Updates to the Public Cloud platform and managed services.
ZCP Store (October 11, 2026)
Section titled “ZCP Store (October 11, 2026) ”The console has a Store tab where an account buys services, licences and dedicated servers. Store products bill on the same invoice as your instances. They are account level, not tied to a project. Available today: Basic Support (free, included with every account), Pro Support at $99 a month, and ten priced bare metal servers from $231 a month. Products at CAD 100 a month or less can be bought by any account. Products above that can be bought by postpaid accounts and by prepaid accounts whose credit balance covers the order. Accounts on manual invoicing order them through support. Professional services, managed services, backup and DR, security and compliance, networking, training and licensing products are placed through support after a quote. See Store.
Longer instance passwords (October 11, 2026)
Section titled “Longer instance passwords (October 11, 2026) ”New instances get a random sixteen character provisioning password instead of six. A password reset on an existing instance also returns the longer form. Instances created before this date keep their current password until reset. See Connect With SSH.
Compute and storage sold separately (October 11, 2026)
Section titled “Compute and storage sold separately (October 11, 2026) ”Every VM plan now covers CPU and memory only. Plan names carry a c before the size, for example
ca2c.m (2 vCPU, 4 GB, YUL on b2.g1, $24.80 per month). You choose the root disk on the OS Disk
Offering step as a per-GB block storage volume. The minimum is the template size. Grow it at any
time. It never shrinks. Rates per GB per month:
b1.g1andb2.g1: $0.14b1.g3: $0.03b2.g2: $0.09b2.l1: $0.10b2.l2: $0.07
The same root size on the default tier costs the same total as before. Review and Deploy now lists compute, network, public IP, and block storage root as separate lines.
Existing servers keep their plan and their price. Resizing an existing server’s plan does not change
its root disk. Custom plans, where you pick your own CPU and RAM, are retired, so choose a fixed
size. CLI v1.0.0, released the same day, sets the root disk with --blockstorage-plan and
--root-disk-size. The Terraform and OpenTofu provider v1.0.0 supports the same named compute and
root storage selections. See Instance Types.
Up to 8 subnets per VPC (September 7, 2026)
Section titled “Up to 8 subnets per VPC (September 7, 2026) ”Each VPC supports up to 8 subnets, up from 3. Existing VPCs get the new limit with no changes on your side. If a workload needs more than 8 subnets in a single VPC, raise a support ticket from the console. We will review the request. See Add Subnet.
Object storage endpoint DNS resolution from VPCs (September 6, 2026)
Section titled “Object storage endpoint DNS resolution from VPCs (September 6, 2026) ”Fixed DNS configuration for newly created VPCs. Workloads in these VPCs now resolve the object storage endpoint.
Kubernetes 1.37 is available (September 6, 2026)
Section titled “Kubernetes 1.37 is available (September 6, 2026) ”New managed clusters can run 1.37.0 or the refreshed patch releases 1.36.4 (the default), 1.35.8, and 1.34.11. At release, clusters already running 1.36.1, 1.35.1, or 1.34.3 remained on those versions until an upgrade. Those earlier patch releases are no longer offered for new clusters. Upgrade one minor version at a time, or apply a patch upgrade within the same minor version. Do this from the Cluster Overview page. These versions are available in both regions. See Create Kubernetes Cluster for the full version list and lifecycle information.
Postpaid billing is available (September 1, 2026)
Section titled “Postpaid billing is available (September 1, 2026) ”Choose Postpaid during signup for eligible hourly and monthly services, then pay invoices with a credit card saved through Stripe. Choose Prepaid or Postpaid during signup. After you create your account, it remains in that billing mode for the life of the account. See Billing.
Intel compute in Montréal (YUL)
Section titled “Intel compute in Montréal (YUL) ”General-purpose ci2 plans from 1 to 96 GB of RAM, memory-optimized cim2 plans from 8 to 64 GB of
RAM, custom Intel configurations, and Intel-backed Kubernetes node capacity. See
Instance types.
Outbound SMTP on Port 25
Section titled “Outbound SMTP on Port 25 ”Outbound SMTP on port 25 is now blocked by default on all compute instances to protect platform-wide sender reputation. Ports 465 and 587 remain open for authenticated email. Verified customers can request access through support. See SMTP Port 25.
Kubernetes 1.36
Section titled “Kubernetes 1.36”Kubernetes 1.36 is now supported for managed clusters.
Windows Server 2025
Section titled “Windows Server 2025”Windows Server 2025 images are available for compute instances.
ZSoftly Cloud Storage
Section titled “ZSoftly Cloud Storage”Dedicated, single-tenant storage clusters are generally available.
Marketplace
Section titled “Marketplace ”One-click application images for compute instances.
- 20+ one-click apps available, including cPanel, GitLab, Grafana, WordPress, PostgreSQL, MySQL, MariaDB, MongoDB, Elasticsearch, InfluxDB, Docker, n8n, and more. Browse them in the Marketplace.
CLI (zcp)
Section titled “CLI (zcp)”The official command-line tool for the platform. The entries below mirror the CLI’s
CHANGELOG.md on GitHub.
v1.1.0: October 23, 2026
Section titled “v1.1.0: October 23, 2026 ”Snapshot schedules, DNS fixes, and security updates. See the CLI releases on GitHub and the CLI reference.
- Create and manage block storage snapshot schedules.
zcp snapshot schedulecreates, lists, shows, updates, pauses, resumes, deletes, and runs schedules on demand. Configure the interval, time zone, retention, and an optional immediate snapshot. - Keep schedules within the selected scope. Before creation, the CLI checks the target volume’s region and project. Updates and actions reject schedules outside the selected region and project.
- Certificate-verification security fix. The CLI release uses Go 1.26.10 to fix a certificate-verification vulnerability.
- Default DNS record-create output verifies the created value. Without
--show-zone,dns record-createreturns an error if the API accepts the request but the CLI cannot verify the new value. Inspect the zone withdns showbefore retrying.--show-zoneprints the resulting zone after creation or deletion and skips this check during creation. - DNS deletion handles multiple values. Default deletion output is a labelled pre-delete snapshot, not a guarantee of the values removed if the record changes concurrently. The CLI deletes the values from its initial snapshot one by one. If a deletion fails, it stops and reports partial progress. The CLI leaves values added after the read alone. An already absent record is treated as deleted.
- CAA values must be quoted. Use, for example,
--content '0 issue "letsencrypt.org"'.
v1.0.1: October 11, 2026
Section titled “v1.0.1: October 11, 2026 ”See the v1.0.1 release on GitHub.
- Instance cancellation and hostname changes use the current API routes. Changing a hostname restarts the instance.
- VM snapshot lists retrieve all reported pages. A later pagination failure returns an error instead of a partial list.
- Named volume plans accept an explicit capacity. Use
--planwith--sizeinzcp volume create. See the CLI reference.
v1.0.0: October 11, 2026
Section titled “v1.0.0: October 11, 2026 ”Separate compute and root-storage selections, VM backup schedules, and complete DNS lists. See the v1.0.0 release on GitHub.
- New instances require named compute and root-storage plans. Pass
--plan,--blockstorage-plan, and--root-disk-size. Custom CPU, memory, and disk inputs are retired. - New Kubernetes clusters use separate control-plane, worker, and root-storage plans. The root disk size applies to every node. Automatic scale-out remains unverified.
- VM backup schedules support interval, time zone, retention, pause, resume, and run-now
controls. List schedules after an
everyOtherDayerror because the platform can persist that policy before returning the error. - DNS lists retrieve every reported page. A later pagination failure returns an error instead of a partial list.
v0.0.31: October 9, 2026
Section titled “v0.0.31: October 9, 2026 ”ACL rule pagination controls and dependency security updates. See the v0.0.31 release on GitHub.
- List ACL rules across API pages.
zcp acl rules <vpc-slug> <acl-name-or-id>now reads every API page by default. Use--max-items,--starting-token, and--page-sizeto control a paginated listing, or--no-paginateto request one API page. The command returns an error instead of partial rules if a later page fails. See the CLI reference. - Go dependency security updates. The language minimum remains Go 1.26.0. The selected toolchain
is Go 1.26.9, and the CLI updates
golang.org/x/netto v0.60.0.
v0.0.30: October 3, 2026
Section titled “v0.0.30: October 3, 2026 ”Custom VM plans, load balancer rule lists, and object-storage access keys. See the v0.0.30 release on GitHub.
- Create a custom VM without a catalogue plan. Omit
--plan, supply a CPU count with--cpu, and supply memory and disk in GB with--memoryand--disk. - List load balancer rules.
zcp loadbalancer list-rule <load-balancer-slug>displays rule IDs for use with VM attachment commands. - Rotate object-storage access keys.
zcp object-storage keyslists, creates, and revokes S3-compatible access keys. Keep the new secret when you create the key, update your consumers, then revoke the old key. A store supports one or two active keys. - Use saved S3 credentials for direct S3 commands. A plaintext secret is visible for five
minutes after key creation. Save it, then set
ZCP_S3_ACCESS_KEYandZCP_S3_SECRET_KEY. The CLI checks that the access key is active for the selected store before it connects. - Object-storage output follows the current API response. Allocation, usage, and unknown status values now display correctly. Debug output also redacts object-storage secrets.
v0.0.29: September 7, 2026
Section titled “v0.0.29: September 7, 2026 ”Complete volume listings and clearer VPC quota errors. See the v0.0.29 release on GitHub.
- Volume listings now retrieve every page. The CLI and its Go SDK no longer miss volumes beyond the API’s first results page. Pagination anomalies return explicit errors instead of partial or duplicated results.
- VPC subnet-limit failures explain the next step. When
zcp network create --vpcreaches the default limit of eight subnets, it directs you to request a quota increase through support. Run the command again after the increase is applied. See the CLI reference.
v0.0.28: September 7, 2026
Section titled “v0.0.28: September 7, 2026 ”Security fixes, working backups, and a public-IP-first instance ssh. This release also ships
everything prepared for v0.0.27, which was never published. Upgrading from v0.0.26 picks up both
sets of changes. See the v0.0.28 release
on GitHub.
--debugoutput no longer leaks your API token. Debug output and error messages now redact the token, thepasswordfield, and other credential fields. This includes messages built from responses the CLI cannot parse. We updatedgolang.org/x/cryptoand the Go toolchain to close two SSH denial-of-service advisories. Rotate your token if you shared--debugoutput before this release.- Backups work again.
backup listdecodes the scheduled hour whether the API sends it as a number or a string.vm-backup deletenow works: it submits a cancellation request instead of theDELETErequest the API always rejected.--intervalaccepts onlydailyAtorhourlyAt.backup listandvm-backup listshow clearer columns. instance sshprefers the public IP. It connects over the public IP when one is attached and falls back to the private IP otherwise. New--use-publicand--use-privateflags force the choice.- Output fixes:
firewall listnow shows each rule’s state.dns showprints-instead of a fabricated status.autoscale policy deleteandautoscale condition deleteprint the numeric ID correctly. - From v0.0.27:
instance createsupports theVpcnetwork type and can attach existing networks with--networks.ip static-nat enablenow requires--network.volume attachandvolume detachshow the API’s status instead of a blank row. - Known limitation:
object-storage bucket encryption enableis disabled until the region’s gateway supports SSE-S3 default encryption.statusanddisablestill work.
v0.0.26: July 19, 2026
Section titled “v0.0.26: July 19, 2026 ”Port forwarding and SSH key fixes.
portforward listshows the ports again. The public and private port columns were blank because the response was read from the wrong field names. They display correctly now.portforward createandfirewall createstop printing an empty table. Both create the rule asynchronously and return no object, so they now report that the request was accepted and point you to the matchinglistcommand.ssh-key deleteaccepts the key’s ID, name, or slug. It previously took only the slug and rejected the ID thatssh-key listshows. Deleting an unknown key is now a no-op.
v0.0.25: July 18, 2026
Section titled “v0.0.25: July 18, 2026 ”MX records now work from the CLI. zcp dns record-create never sent a record’s priority, so
every MX create failed with an API error. It now takes a --priority flag (0-65535, required for
MX): put the mail server in --content and the preference number in --priority. The CLI sends a
0 preference correctly and rejects --priority on every other type with a clear message. See
Manage DNS with the CLI.
zcp dns record-create --domain examplecom --name @ --type MX --content mail.example.com. --priority 10v0.0.24: July 16, 2026
Section titled “v0.0.24: July 16, 2026 ”Deleting a VM now releases its auto-assigned public IP. instance delete uses the same
service-cancellation workflow as the console, so the address is no longer left allocated and
billable. loadbalancer delete also uses service cancellation, but keeps its separate, reusable
public IP by default. Add --release-ip to release the address.
instance listandinstance getnow show the public IP, andgetshows the billing cycle.ip listandloadbalancer listreturn every result instead of stopping at the first page.- The CLI and its SDK are now Apache 2.0 licensed, allowing the Terraform / OpenTofu provider to embed the SDK.
v0.0.23: July 8, 2026
Section titled “v0.0.23: July 8, 2026”--wait now reports the real instance state. The platform’s cached state sometimes lags minutes
behind reality, so instance create/start/stop --wait kept waiting on a VM already up. The CLI now
polls the live state endpoint, which reconciles with the hypervisor, and returns as soon as the VM
is running.
- Corrected
instance delete --delete-public-iphelp: the platform does not release the auto-assigned public IP on delete yet (an API-side fix is in progress). The option, prompt, and help now say so plainly. Release the address manually withzcp ip release <ip-slug>after deleting.
v0.0.22: July 7, 2026
Section titled “v0.0.22: July 7, 2026”DNS records display and delete correctly. The DNS service models records as record sets
addressed by name and type. zcp dns show and record-create now display record content
(multi-value sets included), and dns record-delete works with --name and --type. Record names
are relative: the CLI appends the zone for you.
egress createreports honestly when the platform accepts a rule but never lists it, instead of failing with a confusing lookup error.- Automated validation now covers the command reference: a script checks all 264 examples against the built CLI, and we rewrote six sections to match the real command trees.
- L2 instances work, and
instance createexamples run as pasted, contributed by first-time community contributor @cokerrd: the new--is-publicoption unblocks--network-type L2, and the required--network-planand--storage-categoryoptions are now in every example.
v0.0.21: July 2, 2026
Section titled “v0.0.21: July 2, 2026”Profile defaults now apply to create commands. With defaults configured through
zcp profile add, create and mutate commands no longer error asking for --region/--project. Set
them once. List and get commands already worked this way.
- First-run guidance: the installers print copy-paste setup for the production defaults
(
--region yul-1 --project default-9), and the docs use them throughout. - We verify every example slug against the live catalog (templates, plans, backup and load balancer plans), so examples run as pasted.
v0.0.20: June 30, 2026
Section titled “v0.0.20: June 30, 2026”zcp instance delete requests release of the VM’s auto-assigned public IP by default, so no
address stays allocated and billed after the VM is gone. Pass --delete-public-ip=false to keep the
address. Manually acquired and source-NAT addresses are unaffected. See the v0.0.23 note: the
platform-side release is not active yet.
v0.0.19: June 21, 2026
Section titled “v0.0.19: June 21, 2026”Manage IAM from the CLI: sub-users, roles, and permissions. Everything in the portal’s Profile
area is now scriptable. These commands are account-level (no --region/--project). See
Roles & Permissions and Users.
zcp permission list: browse the permission catalog (filter with--category) to find the slugs you assign to roles.zcp role:list,get <slug>(shows permissions + assigned users),create,update, anddelete.--permissionis repeatable and replaces the role’s full set; the built-inowner/service-administrator/service-viewerroles are protected from edits.zcp sub-user:list(with--role/--blockedfilters),create,update,block,unblock, anddelete. Sub-users are referenced by ID or email; new sub-users start blocked until youunblockthem.
Load balancers and instance references.
zcp loadbalancer createworks: it now sends the required first rule (--public-port/--private-port/--algorithm) and can attach back-ends with--vm.- Reference an instance by ID, name, or slug in every
instancesubcommand, with a clear error when a name is ambiguous;instance listnow shows theIDcolumn and returns all VMs (the list is paginated). rebootrefuses a non-RunningVM instead of silently no-op’ing, and-o json/-o yamlemit full objects.
v0.0.18: June 19, 2026
Section titled “v0.0.18: June 19, 2026”Region and project are now required for region- and project-scoped commands. This makes results predictable and matches how the platform scopes resources. See Configuration for how to provide them.
- Set them once:
zcp profile addnow prompts for a default region (required) and project, likeaws configure. After that, most commands need no--region/--project. You can still override per command or with theZCP_REGION/ZCP_PROJECTenvironment variables. - Lists are scoped to your region and project: every resource and catalog list now filters its
output, so
plan,template list,iso list,marketplace list, andstorage-category listno longer mix entries from other regions. Account-level commands (dns,auth,profile,region,project, and the other discovery commands) are exempt.
SSH keys.
ssh-key importfixed: it now sends the required project and region, resolving a 500 error on import, and validates the key name client-side (20 characters max).instance create --ssh-key <name>now engages SSH-key authentication correctly. Import the key first withssh-key import. Key names and public-key material must be unique.
Clearer errors.
- API validation errors now surface the field-level detail (for example,
public_key: The public key has already been taken.) instead of a generic message.
v0.0.17: June 17, 2026
Section titled “v0.0.17: June 17, 2026 ”Object storage: the full S3 feature set in the CLI. Many of these are available only through the CLI (or an S3 SDK) today, not yet in the Web UI. See the Object Storage CLI guide for the full reference and a UI-vs-CLI availability matrix.
- Object versioning workflows: list versions and delete markers, download or delete a specific
version, and
restore(undelete). - Download objects to a local file (
object download). - Bucket policies: read, set (from a JSON file), or delete a bucket’s raw S3 policy.
- Tagging on buckets and objects, default encryption (SSE-S3), lifecycle rules (expire current/old versions and incomplete uploads), and CORS rules.
- Presigned URLs: time-limited download and upload links that need no credentials, even on a private bucket.
- Server-side copy / move, object stat (full metadata), and
put --metadata. - Make buckets public/private, empty a bucket, and clean up incomplete uploads.
- Simpler create:
zcp plan object-storagelists plans, andcreate --planderives the storage category for you.
CLI usability.
- Clear argument errors: every command names what’s missing, the usage, and an example.
- Unknown subcommands now error (non-zero exit) instead of silently printing help.
- Cloud provider auto-detected: saved to your profile on
zcp auth validate, so you no longer pass--cloud-provider. -o yamlis now supported for policy, lifecycle, and CORS output.
v0.0.16: June 11, 2026
Section titled “v0.0.16: June 11, 2026”- VPC subnets (tiers): create a network as a VPC subnet with
network create --vpc, and attach a custom network ACL at creation with--acl. - Network ACL rules: full rule management:
acl rules,acl create-rule,acl update-rule(in place),acl delete-rule, plusacl deletefor ACL lists.--cidraccepts comma-separated lists. network get: show a network’s CIDR, state, VPC membership, and attached ACL.plan network: list network plans (the slugs for--network-plan).- Fixes: VPC
get/createnow show CIDR/status, plan tables include a SLUG column, andvpc deletepolls for completion instead of a false-negative warning. Clearer “already deleted” handling.
v0.0.15: June 10, 2026
Section titled “v0.0.15: June 10, 2026”- VPN: new IKE/ESP Diffie-Hellman and Perfect-Forward-Secrecy flags (
--ike-dh,--esp-dh,--esp-pfs) on customer-gateway create/update. The full VPN configuration is now returned reliably after create/update. ip allocate --project: assign an IP to a specific project at allocation time.- Fixes: VPN gateway/customer-gateway and VPC/network update commands no longer return blank
fields. Clearing a
--descriptionnow works.
v0.0.14: June 10, 2026
Section titled “v0.0.14: June 10, 2026”- Infrastructure as code: the CLI’s API packages are now importable by external Go modules, enabling the Terraform / OpenTofu provider. CLI behaviour is unchanged.
v0.0.12: June 9, 2026
Section titled “v0.0.12: June 9, 2026”kubernetes upgrade-version: upgrade a running cluster’s Kubernetes version (--version v1.x.y). The correct version for the cluster’s region is resolved automatically.
v0.0.11: June 8, 2026
Section titled “v0.0.11: June 8, 2026”instance create --user-data/--user-data-file: pass a cloud-init / startup script inline or from a file at VM creation.- Fixes: instance Private IP now displays correctly,
instance getretries the brief window right after creation, andinstance create --blockstorage-planis now optional (auto-assigned).
v0.0.10: June 7, 2026
Section titled “v0.0.10: June 7, 2026”- Object storage introduced: manage S3-compatible storage instances (list, get, create, delete,
resize), buckets (list, get, create, delete), and objects (list, get, upload, delete), plus
credentialsto view S3 access keys. - Delete commands added across instances, networks, volumes, snapshots, backups, VPCs, and VM
backups (
instance delete --forcefor immediate expunge). - Kubernetes:
scaleworker nodes (with--wait) andget-config(download kubeconfig). - Load balancer:
delete-ruleanddetach-vm.
v0.0.9: April 14, 2026
Section titled “v0.0.9: April 14, 2026”- Environment-variable overrides:
ZCP_PROJECT,ZCP_REGION,ZCP_CLOUD_PROVIDER,ZCP_OUTPUT,ZCP_DEBUGreduce repetitive flags in scripts and CI/CD. - Zero-config mode: run with only
ZCP_BEARER_TOKENandZCP_API_URL, with no config file.ZCP_PROFILEselects the active profile.
v0.0.8: April 9, 2026
Section titled “v0.0.8: April 9, 2026”- VPC tier/subnet creation confirmed end to end, with
--cloud-provider,--region, and--projectflags added to network, VPC, virtual-router, DNS, VPN, and autoscale create commands. - A published feature roadmap documenting what works, what’s coming, and what’s blocked.
v0.0.7: April 8, 2026
Section titled “v0.0.7: April 8, 2026”- New commands:
region list,profile-info(user profile management),vm-backup, and discovery commands:cloud-provider list,server list,currency list,billing-cycle list,storage-category list. - Cleanup: removed legacy commands that targeted retired endpoints.
v0.0.6: April 8, 2026
Section titled “v0.0.6: April 8, 2026”Rebuilt on the current ZSoftly Cloud Platform API with Bearer-token authentication and a consistent response format. A large set of command groups arrived:
- DNS, projects, monitoring, billing, support, autoscale, dashboard, plans, store, marketplace, product, ISO, affinity groups, and backups.
- VM operations: reboot, reset, tags, change-hostname/password/plan/OS, add-network, addons.
- Global
--auto-approve/-yto skip confirmation prompts in automation.
v0.0.5: March 31, 2026
Section titled “v0.0.5: March 31, 2026”- Reliability fixes: delete commands now verify the resource is gone, volume list deduplicates entries, and messages are clearer for snapshots on detached volumes and for empty accounts.
v0.0.4: March 27, 2026
Section titled “v0.0.4: March 27, 2026”- VPC tier networks:
vpc create-networkandvpc update-network.
v0.0.3: March 27, 2026
Section titled “v0.0.3: March 27, 2026”- Added
host list,resource quota, VPC-tier flags onnetwork create, and a full integration test suite.
v0.0.2: March 23, 2026
Section titled “v0.0.2: March 23, 2026”- Default zone per profile: set it once and stop typing
--zoneon every command. An explicit flag still overrides.
v0.0.1: March 15, 2026
Section titled “v0.0.1: March 15, 2026”- Initial release of the
zcpCLI: 28 top-level commands across compute, storage, networking, security, Kubernetes, and billing. - Named profiles with secure (
0600) credential storage, a--waitflag for async operations,instance ssh, shell completions (bash/zsh/fish/PowerShell), a--pageroption, and multi-platform binaries (Linux/macOS/Windows, amd64/arm64) with one-line installers.
Terraform / OpenTofu provider
Section titled “Terraform / OpenTofu provider ”Manage ZCP infrastructure as code with the official provider, published as zsoftly/zcp on the
OpenTofu registry and the
Terraform Registry. Source code lives at
github.com/zsoftly/terraform-provider-zcp.
v1.1.0: October 23, 2026
Section titled “v1.1.0: October 23, 2026 ”Current provider release. Use zcp_volume_snapshot_schedule to manage recurring block storage
snapshots as code. See the
provider releases on GitHub.
- Set the schedule, retention, scope, and paused state in configuration. The resource supports hourly, daily, weekly, and monthly schedules, an optional immediate snapshot, and import.
- Import schedules without an unnecessary replacement. The first apply records the configured
immediatevalue. Changingname,description, or a recordedimmediatevalue replaces the schedule. Remove retained snapshots before deleting or replacing a schedule.
v1.0.0: October 11, 2026
Section titled “v1.0.0: October 11, 2026 ”See the v1.0.0 release and the upgrade guide.
- New instances require
plan,blockstorage_plan, androot_disk_size. The provider rejects new custom CPU, memory, and disk configurations. Existing custom-plan state remains readable and destroyable. - New Kubernetes clusters use separate fixed plans for control-plane nodes, workers, and root storage. Changing to that shape replaces a cluster. The provider records requested autoscaling bounds but does not confirm immediate scale-out.
zcp_vm_backup_schedulemanages recurring policies. It supports interval, time zone, retention, paused state, import, and policy scope. The provider rejectseveryOtherDaybefore the platform can persist it and return an error.- DNS lookups paginate by slug, named volumes accept a plan and capacity, and instance name updates use hostname changes. A hostname update can restart a running instance or start a stopped instance.
v0.3.0: October 9, 2026
Section titled “v0.3.0: October 9, 2026 ”Custom VM plans, object-storage keys, and load-balancer state fixes. See the v0.3.0 release and tagged changelog for the complete change list.
- Create custom-plan instances.
zcp_instanceacceptscpu,memory_gb, anddisk_gbtogether when you omitplan. A fixed catalogue plan still usesplan. - Manage object-storage keys as resources.
zcp_object_storage_keycreates, imports, and revokes S3 access keys. Itsapi_secretis sensitive and remains in Terraform state after the API stops disclosing the plaintext secret. Revoked keys are removed from state. Protect state access accordingly. - Configure S3 bucket settings with explicit credentials. Bucket configuration resources use
ZCP_S3_ACCESS_KEYandZCP_S3_SECRET_KEYfrom the provider process. - Read all ACL rules. The provider now uses CLI SDK v0.0.31, which reads every ACL-rule page and reports a later-page failure instead of treating missing results as absent.
- Look up load balancers and refresh rule IDs.
data.zcp_load_balancerexposes rule IDs for attachments. Load-balancer resources refresh through the detail endpoint and clear an initial rule ID when the API no longer returns that rule. Destroy also accepts a load balancer or attachment that the API confirms is already absent. - Read current object-storage allocation. Object-storage reads support the API’s current storage-size response shape.
- Apply dependency security updates. The provider selects Go 1.26.9 and uses
golang.org/x/netv0.60.0.
Upgrade the provider constraint, then run terraform init -upgrade or tofu init -upgrade:
terraform { required_providers { zcp = { source = "zsoftly/zcp" version = "~> 0.3.0" } }}v0.2.0: September 7, 2026
Section titled “v0.2.0: September 7, 2026 ”Object storage configuration, richer instance networking, and volume lookups. See the v0.2.0 release and tagged changelog for the complete change list.
- Manage object storage bucket settings as code. New
zcp_object_storage_bucket_versioning,zcp_object_storage_bucket_policy,zcp_object_storage_bucket_tagging,zcp_object_storage_bucket_lifecycle, andzcp_object_storage_bucket_corsresources manage the respective S3-compatible gateway settings. The provider obtains gateway credentials internally and does not expose them as resource attributes. - Attach instances to VPCs and multiple networks.
zcp_instancenow supports theVpcnetwork type and multiple networks, matching the instance-create capabilities in CLI v0.0.27. - Look up volumes and attached disks. The new
zcp_volumedata source looks up an existing volume.data.zcp_instancenow exposesroot_volumeandvolumes. - Read volume backups again.
zcp_volume_backupnow decodes the platform backup-list shape correctly. - Destroy VM backup schedules.
zcp_vm_backupdestroys schedules through the billing cancellation workflow instead of a rejected direct delete. - Validate backup intervals before apply.
zcp_vm_backupandzcp_volume_backupaccept onlydailyAtorhourlyAtforinterval, matching the platform. - Fail fast for identifiable VPC public IPs. When
zcp_firewall_ruleidentifies a VPC public IP, it fails immediately instead of polling for a rule the platform will not apply. - Fix VPC public-IP ordering guidance.
zcp_ip_addressexplains that a VPC network tier must exist first and indicates when to adddepends_on. - Complete volume listings. The provider now uses the
zcpCLI SDK v0.0.29, which retrieves every page in a volume list.
Upgrade your provider constraint, then initialize again:
terraform { required_providers { zcp = { source = "zsoftly/zcp" version = "~> 0.2.0" } }}Run terraform init -upgrade for Terraform or tofu init -upgrade for OpenTofu. If OpenTofu
reports no matching version, wait until its registry lists v0.2.0, then retry.
v0.1.3: July 20, 2026
Section titled “v0.1.3: July 20, 2026”Port forwarding and firewall rules now record their real ID. zcp_port_forward and
zcp_firewall_rule stored an empty ID because the create endpoint returns no rule object, so
Terraform recreated them on every apply. Both now look up the rule after create, match it on
protocol and ports, and record the real ID, so plans stay stable.
- Upgraded the
zcpCLI SDK to v0.0.26, which corrects how port-forwarding rule ports decode. - Security: upgraded
golang.org/x/textto fix GO-2026-5970, an infinite loop reachable through the load balancer resource.
v0.1.2: July 18, 2026
Section titled “v0.1.2: July 18, 2026”MX records in zcp_dns_record. A new priority argument (0-65535) sets the preference
number. Put the mail server in content. The provider requires priority for MX and rejects it for
every other type during planning, so invalid configurations fail before apply. Built on the zcp
CLI SDK v0.0.25 and verified against the live DNS API.
- Dropped
SRVfrom the documentedtypevalues. The DNS API rejectsSRVandLOCrecords, so advertisingSRVwas misleading.typestays a free-form string.
v0.1.1: July 18, 2026
Section titled “v0.1.1: July 18, 2026”Destroy operations release auto-assigned public IPs. zcp_instance and zcp_load_balancer
release auto-assigned public IPs through the service-cancellation workflow, preventing billable
addresses from remaining after destroy. Set assign_public_ip = false to create an instance without
one. This release also upgrades the zcp CLI SDK to v0.0.24, which pages through every result in
public IP and load balancer listings.
v0.1.0: July 8, 2026
Section titled “v0.1.0: July 8, 2026”First public release, live on both registries. 38 resources and 12 data sources cover everything
the zcp CLI supports: instances, volumes, snapshots and backups, VPCs and networks, firewall and
egress rules, load balancers, auto-scaling, Kubernetes clusters, DNS, object storage, VPN, and
account governance. Every resource supports terraform import, and we sign every release.
terraform { required_providers { zcp = { source = "zsoftly/zcp" version = "~> 0.1" } }}Set ZCP_BEARER_TOKEN in your environment, then run terraform init or tofu init. Generate the
token in the console under Account → API Keys.