Changelog
v0.7.0 - 2026-03-25
Added
- Supporting services (beta) — Deploy supporting services alongside databases. This release includes the pgEdge Postgres MCP Server, with automatic database credential provisioning, high-availability connection routing, and declarative configuration.
- Added
patroni_portto the database and instance APIs. - Added ability to configure per-component log levels.
- Added a default value for the
host_idconfiguration setting. It will now default to the short hostname (hostname -s) of the host machine. - Added guided walkthrough with GitHub Codespaces support.
- Added support for Postgres 16.13, 17.9, and 18.3. Default version is now 18.3.
- Added stop/start instance operations to the client library.
- Etcd mode reconfiguration — Hosts can now switch between etcd server and client modes at runtime, with support for host identity changes via peer URL updates.
- Scoped tasks and new task endpoints — Tasks are now scoped to databases and hosts, with new list/get endpoints for better observability. The
remove-hostAPI now returns a task for tracking removal progress. - Stable random port assignments — Randomly assigned ports now persist across instance restarts and database updates.
Changed
- Improved disaster recovery — Better quorum loss handling, host removal resilience, and crash recovery.
- Breaking: Replaced
hostnameandipv4_addressfields in the API withpeer_addressesandclient_addressesfor host endpoints andaddressesfor instance and service instance endpoints. - Breaking: Replaced
server_url(string) withserver_urls(string array) in the cluster join token, allowing multiple server URLs when joining a cluster.
Fixed
- Fixed a bug that prevented database deletion when we failed to create the Swarm service.
- Replaced fixed 100-second sync wait when adding a node with configurable health-based polling.
- Fixed sync event refresh blocking updates when Spock node is not configured.
- Fixed panics during task and workflow cancellation.
- Fixed add-node failing silently when Spock sync event is not confirmed.
- Fixed incomplete server shutdown that could leave the workflow engine running without required services.
- Fixed stale resource state blocking updates.
- Fixed IPAM subnet exhaustion after repeated database create/delete cycles by releasing subnets on network deletion.
v0.6.2 - 2025-12-22
Removed
- Removed unused "tenant_id" field from GetCluster endpoint.
Fixed
- Fixed in-place restores where the recovery target is not the latest point in the repository.
v0.6.1 - 2025-12-19
Fixed
- Fixed incorrect pgbackrest command format for database restore endpoint.
- Fixed task logs API to return a
last_entry_ideven ifafter_entry_idis the last entry.
v0.6.0 - 2025-12-17
Added
- "remove-host" now has a "force" attribute that allows users to recover from the loss of one or more hosts.
- Added support for new extensions in standard pgEdge Enterprise Postgres image, including pgedge_vectorizer, pg_tokenizer, vchord_bm25, pg_vectorize, pgmq, pg_cron, and pg_stat_monitor.
Fixed
- Added validation to the "get-join-options" endpoint to ensure incoming host IDs are unique within the cluster.
v0.5.1 - 2025-11-24
Added
- Added support for Postgres 16.11, 17.7, and 18.1.
Changed
- Default Postgres version to 18.1.
Removed
- Removed unsupported Postgres 17.5.
Fixed
- Fixed a bug where database instance state would not be properly set to unknown when status updates were missed for two consecutive monitor intervals.
- Fixed a bug where port validation would prevent databases from updating.
v0.5.0 - 2025-11-04
Added
- Added support for Postgres 18.0.
- Added a new "client-only" Etcd mode to enable larger clusters and clusters with an even number of hosts.
- Added access logging.
- Added ability to run the Control Plane on Docker Swarm worker nodes.
Changed
- Moved the cluster ID configuration setting to be an optional parameter on the init-cluster endpoint.
- Changed the default behavior when adding a node. Instead of initializing to an empty state, new nodes will always be populated from an existing node unless the new node has a
restore_config. - Changed the shape of the return type for
list-hosts,restart-instance,stop-instance, andstart-instance. - Renamed Etcd server and client configuration options.
Removed
- Removed cohort ID from host API endpoints.
Fixed
- Fixed unknown host status and missing component status in host API endpoints.
- Fixed a bug that prevented users from using Service Accounts for pgBackRest credentials in GCS.
- Fixed missing replication sets after restoring from backup.
- Fixed incorrect response in
update-databasewhen a non-existent host ID is specified. - Fixed a bug with scheduled instance restarts.
v0.4.0 - 2025-10-06
Added
- Introduced stop-instance and start-instance APIs to allow users to manually trigger a stop/start of a specific Postgres instance.
- Added support for adding new database nodes with zero downtime.
- Added stopped state for instances
- Added switchover support via the control plane API
- Added a "cancel database task" API endpoint
- Added validation to update-database to reject requests that update the database name.
- Added support for mTLS to the Control Plane API via user-managed certificates.
- Implemented the "get host" and "get cluster" endpoints.
- Added Failover support via the control plane API
Changed
- Switched to the new images from github.com/pgEdge/postgres-images.
- Added the postgres minor version to the
postgres_versionfields in the database and host APIs. - Changed the database creation behavior so that the first host in
host_idsgets the primary instance for a node. - Database update process so that nodes are processed one at a time. Within a node, replicas are always updated before the primary.
- Added automated switchovers before and after an instance is restarted as part of an update.
- Added validation to the update database API to reject requests that update the Postgres major version.
- Changed MQTT interface in client library to take an endpoint. This removes the need to generate unique client IDs per server. Callers are responsible for calling
Connect()andDisconnect()on the endpoint. - Enable fast basebackup for new nodes. This noticeably speeds up the creation process for a node with replicas.
- Changed patroni configuration to use pg_rewind for faster recovery after a switchover.
Fixed
- Fixed join cluster timeouts when requests were submitted to a member other than the raft leader.
- Ensure that join and init cluster calls only return once the server is ready to take requests. Any errors during the initialization process will now be returned to callers.
v0.3.0 - 2025-08-19
Added
- Added ability to override 'database modifiable state' check via
forceparameters on several endpoints. - Added a
clientpackage that wraps the generated client code in a friendlier interface.
Changed
- Merged separate Go modules into single top-level
github.com/pgEdge/control-planemodule.
Fixed
- Fixed high CPU usage from Etcd after recovering from some network partition scenarios.
- Fixed error in restore database workflow when the request is submitted to a host that is not running the target instance.
- Fixed client-side validation errors from missing enum values in our generated client code.
- Fixed timing issue where a new database operation could not be started immediately after the task was marked as completed.
- Fixed a bug in the restore database workflow where, sometimes, the restore would start before Postgres had finished shutting down.
v0.2.0 - 2025-07-22
Added
- Tasks and task logs for every database operation.
parent_id,node_name,host_id, andinstance_idfields to task API entities.- Support for performing database backups to a mounted file system using the posix repository type via pgBackRest.
- Enabled volume validation during database creation and update to verify that specified extra_volumes paths exist and are accessible.
- APIError type for simpler, more consistent API errors.
- Summaries and groups to API endpoints in OpenAPI spec.
- Introduced restart-instance API to allow users to manually trigger a restart of a specific Postgres instance.
- Added support for attaching database containers to additional Docker networks to enable routing via Traefik and other custom setups.
- Added ability to apply arbitrary labels to the database service/container.
- Add support to disable direct database port exposure on the host in Swarm deployments.
remove-hostendpoint.- Added scheduling functionality in the Control Plane.
Changed
- Create, update, delete, and restore API responses to include task information.
initiate-database-backupoperation name tobackup-database-node- Task logs entries from log lines to structured log entries.
- Renamed
inspectendpoints toget:get-cluster,get-host,get-database-task. - Introduced restore_options as a structured map, and renamed extra_options to backup_options for consistency.
- Moved existing API endpoints under a
/v1prefix. - Allow human-readable IDs in all user-specified ID fields, including
cluster_id,host_id,database_idand backup repository IDs. - Censor sensitive fields, such as user passwords or cloud credentials, in all API responses. Likewise, these fields can be omitted from update requests if they're not being modified.
- Updated
pgedgeimages to 5.0.0-1 - Moved pgEdge and Control Plane images to ghcr.io
control-planebase image fromscratchtogcr.io/distroless/static-debian12for CA certificates
Removed
- Unused fields from API specification.
Fixed
- Delay when resuming workflows after a restart.
- Database operation errors when instance IPs change after restarting.
- Method to determine default IPv4 address to always return IPv4.
v0.1.0 - 2025-05-28
Added
- Release process to publish Docker images for the Control Plane server.