# Component Versions

> Released SILO component identities, standalone mcli 20261109, silo-pkg 3.16.0, and upgrade boundaries.

---

LLMS index: [llms.txt](/llms.txt)

---

SILO 20261026 is the current Server release, with embedded Console 2.5.1, mcli 20261026 and silo-pkg 3.15.2. The latest standalone client is **mcli 20261109**. KES 20261026 is a separate, optional external key service. The maintained PGSTY stack is supported; upstream MinIO/MC compatibility is best effort.

## Standalone Console {#console}

<span id="console-2-6-0"></span>

The latest published standalone Console is [2.6.0](/blog/release/console-2.6.0/),
from source `f8ab146695fd1df74e4b84128a286d552921bf00`. It adds usage scans,
retained-version totals and bucket-administration fixes, using Go 1.27.3,
silo-pkg 3.15.2 and mcli 20261026.
[Console 2.7.0](/blog/release/console-2.7.0/) adds ten UI languages, Arabic
RTL, container CA/temporary-directory fixes, and usage-worker, plain-HTTP and
upload fixes, using silo-pkg v3.16.0 and the official mcli 20261109 release
(`v0.0.0-20261109021353-e1d4cc5abfe0`).
Server 20261026 continues to embed Console 2.5.1 until a
separate Server release adopts newer source.

## mcli 20261109 {#mcli-20261109}

The [standalone client release](/blog/release/mcli-20261109/) uses tag
`RELEASE.2026-11-09T00-00-00Z`, package `20261109000000.0.0`, and source
[`e1d4cc5abfe00b674eb36347399e7398990be467`](https://github.com/pgsty/mc/commit/e1d4cc5abfe00b674eb36347399e7398990be467).
It is built with Go 1.27.3, silo-pkg v3.16.0 and upstream minio-go
`v7.4.2-0.20261025165926-320af050c445`. Existing Server and Console artifacts
retain their embedded client versions; adopting the new client requires a rebuild.

## Shared package v3.16.0 {#pkg-3-16-0}

[silo-pkg v3.16.0](/blog/release/pkg-3.16.0/) is a separate source-only release
requiring Go 1.27.3. It updates JOSE, networking, CPU detection and YAML
dependencies while preserving public APIs and policy semantics. Applications
must select `github.com/pgsty/silo-pkg/v3 v3.16.0` and rebuild to adopt it.
The historical application artifacts below still contain their original
dependency versions; publishing this library does not update those artifacts.

## Released 20261026 components {#server-20261026}

<span id="server-20261025"></span><span id="published"></span>

| Component | Released version | Fixed source / module |
| --- | --- | --- |
| Server | `RELEASE.2026-10-26T00-00-00Z` | `c3ad836aed0d8a7d23c2e44a5eaa3009d08525e3` |
| Embedded and standalone Console | `v2.5.1` | `v0.0.0-20261026153924-fff1618d9abb` |
| mcli / MC module | `RELEASE.2026-10-26T00-00-00Z` | `v0.0.0-20261026120214-0ceb298cdcd0` |
| Shared package | `github.com/pgsty/silo-pkg/v3 v3.15.2` | `0416eb1f450536ca2cc3592c2c2a06a3df88d4e0` |
| Upstream S3 SDK | `github.com/minio/minio-go/v7` | `v7.4.2-0.20261025165926-320af050c445` |
| Optional KES | `RELEASE.2026-10-26T00-00-00Z` | `e9b4f1acebc11d61b42f876da8df48f548750cc9` |
| Go / platform archives | **Go 1.27.3** | Windows ZIP; Linux/macOS tar.gz |
{.wide .expand}

The 20261026 Server, mcli and KES artifacts use package version `20261026000000.0.0`. Upgrading a standalone Console deployment does not replace an older Server's embedded UI or server-side behavior; built-in policy Reset, live bucket inventory reads, and the lifecycle and replication fixes require Server 20261026.

[Combined release notes](/blog/release/silo-20261026/) · [Console 2.5](/blog/release/console-2.5.1/) · [pkg 3.15](/blog/release/pkg-3.15.2/) · [Upgrade checks](/compatibility/server/#maintenance-20261026) · [Downloads](/download/)

Official container images are published on Docker Hub under `pgsty/silo`, `pgsty/mc`, `pgsty/silo-console`, and `pgsty/kes` (package-repository mirrors may update slightly after GitHub Releases). The historical dependency graphs below are retained for upgrade and rollback checks.

## Server 20261018 release {#october-release}

The target is `RELEASE.2026-10-18T00-00-00Z`, package version `20261018000000.0.0`, selected source [`0cd388c66`](https://github.com/pgsty/silo/commit/0cd388c666f8211f552604ae73448a066e9c25ce). The GitHub release is **public**, with anonymous downloads and Docker Hub images verified on 2026-10-19. See the [20261018 release notes](/blog/release/silo-20261018/) for features, security changes, compatibility and remaining limits.

[20261015](/blog/release/silo-20261015/) remains a historical Draft superseded by the [20261018 release](/blog/release/silo-20261018/#delivery), which delivers the October Object Lock, IAM, and LIST repairs (absent from Server 20260916).

## October component graph {#october-components}

| Component | Selected by Server 20261018 |
| --- | --- |
| Embedded Console | v2.4.2, `v0.0.0-20261017112417-ef2dd2c41d21` |
| MC module / image-bundled mcli | 20261018, `v0.0.0-20261017101407-fa3b8bf72458` |
| Server shared package | `github.com/pgsty/silo-pkg/v3 v3.14.3` |
| Upstream S3 SDK | `github.com/minio/minio-go/v7 v7.4.1` |
| Build toolchain | Go 1.27.2; Console frontend uses Node 24.22.0 LTS |
{.wide .expand}

The historical Console v2.4.2 and mcli 20261018 releases declare pkg v3.14.2; Server's module graph selects v3.14.3. The [v3.14.2 dependency baseline](/blog/release/pkg-3.14.2/) and v3.14.3 [admin-action classification optimization](/blog/release/pkg-3.14.3/) preserve APIs, policy formats and authorization behavior. Server must select Console and MC replacements explicitly; Go does not inherit dependency replacements. The supported integration target is the PGSTY stack, with best-effort upstream MinIO/MC compatibility.

## September 16 dependency graph {#source}

[Console v2.4.1](/blog/release/console-2.4.1/) selects the released pkg and MC
sources below. These identities are verified through the public Go proxy and
checksum database.

- **Console:** `v0.0.0-20260916075814-1360e26d976d` →
  [`1360e26d976d`](https://github.com/pgsty/silo-console/commit/1360e26d976d82eda395b0b2e449df8c9d49f39c), tag `v2.4.1`.
- **pkg:** `v3.14.1` → `fa657ef431ae22e720df37e5144cf00f67102945`.
- **MC:** `v0.0.0-20260916070421-e952aa78f10a` →
  [`e952aa78f10a`](https://github.com/pgsty/mc/commit/e952aa78f10a2b77dd525a2b7e3143bcda0cd377), tag `RELEASE.2026-09-16T00-00-00Z`.
- **Upstream minio-go:** `v7.3.1-0.20260915093545-32e1f32cb176`.
- **JWX / strfmt / React Router:** v3.3.0 / v0.27.2 / v7.18.4.

Console's embedded frontend is rebuilt from this graph. Its Go dependency uses
the canonical pseudo-version because the historical module path has no `/v2`
suffix. Server embedders must copy both Console and MC replacements; see the
[Console integration notes](/compatibility/console/#source).

Review the [password-permission migration](/compatibility/password-permissions/)
before upgrading: `admin:ChangeMyPassword` and `admin:CreateUser` now express
separate operations. The [Server changelog](https://github.com/pgsty/silo/blob/main/CHANGELOG.md)
and source links below describe the storage, IAM and HTTP changes needed for
coordinated Server upgrades.

### Storage, IAM and HTTP repairs {#september-reliability}

The following changes shipped in Server 20260916 and are absent from Server
20260903. Use the linked PRs and source records to check each repair's scope.

| <span style="display:inline-block;min-width:10rem">Area</span> | <span style="white-space:nowrap">Merged PRs</span> | Operator-visible behavior |
| --- | --- | --- |
| Multi-pool storage | [#188](https://github.com/pgsty/silo/pull/188)<br>[#189](https://github.com/pgsty/silo/pull/189) | Ordinary single-object version DELETE reconciles copies across pools; reconciliation preserves tag state. The opt-in GET-frequency pool-tiering feature was removed. |
| Conditional multipart completion | [#190](https://github.com/pgsty/silo/pull/190) | Preconditions use the logical current object across all pools, preventing an older pool copy from accepting a stale ETag or rejecting the current one. |
| Multipart discovery and cancellation | [#198](https://github.com/pgsty/silo/pull/198)<br>[#213](https://github.com/pgsty/silo/pull/213) | Server 20260916 defaults to legacy listing and cancellation. Explicit strict mode discovers persistent uploads across pools and sets, continues after native marker uploads disappear, and requires majority cancellation confirmations. Strict mode requires a coordinated writer upgrade and legacy drain; see the [upgrade contract](/blog/design/list-multipart-uploads/#implementation-20260916). |
| Ordinary conditional PUT | [#207](https://github.com/pgsty/silo/pull/207) | Public write conditions use the logical current object across all pools, including draining pools. Readability and destination-version changes are detailed [below](#conditional-put). |
| IAM revocations | [#191](https://github.com/pgsty/silo/pull/191)<br>[#192](https://github.com/pgsty/silo/pull/192) | Peer deletion notifications reload committed state. Durable deletion versions and retained revocation boundaries prevent stale site replay from restoring revoked identities or their older grants. |
| Replicated tags and delete markers | [#193](https://github.com/pgsty/silo/pull/193)<br>[#196](https://github.com/pgsty/silo/pull/196) | SSE-KMS copies preserve tag revision times; tag deletion advances its revision and resists delayed events. Delete-marker purges retain their identity and retry state through MRF recovery. |
| Delete-marker purges | [`eb4f5e5b3`](https://github.com/pgsty/silo/commit/eb4f5e5b3)<br>[`254b19ac0`](https://github.com/pgsty/silo/commit/254b19ac0)<br>[`358ab38fb`](https://github.com/pgsty/silo/commit/358ab38fb) | An exact-version purge never creates the marker on drives that lack it, a retried purge of a missing version needs a write-quorum majority of absent drives, healed markers keep their replication and purge metadata, and a queued marker creation is re-checked against the source under the replication lock before it is sent. Remaining gaps are listed [below](#pending) and in [#217](https://github.com/pgsty/silo/issues/217); see the [third round of the replication record](/blog/design/replication-reliability/#third-round). |
| Listing under drive disagreement | [`8d06424b1`](https://github.com/pgsty/silo/commit/8d06424b1) | A null object version that has listing quorum is kept when a newer minority of drives would otherwise hide it. Rolling restarts with concurrent overwrites can still omit readable keys from a successful LIST; see [below](#pending), [#218](https://github.com/pgsty/silo/issues/218) and the [design record](/blog/design/list-null-version-quorum/). |
| Pool migration tags | [`fced86303`](https://github.com/pgsty/silo/commit/fced86303) | Rebalance and decommission carry object tags and their revision fields to the destination pool for ordinary and multipart writes. Tags lost by earlier migrations are not recovered; see [multi-pool object consistency](/blog/design/multi-pool-object-consistency/#migration-tags). |
| Replica metadata | [#194](https://github.com/pgsty/silo/pull/194) | Restoring replication metadata no longer reintroduces the transport-only `aws-chunked` encoding into stored object metadata. |
| Request-header timeout | [#196](https://github.com/pgsty/silo/pull/196) | `--read-header-timeout` / `MINIO_READ_HEADER_TIMEOUT` reaches the HTTP server and imposes an absolute HTTP/1 header-reading deadline, even while bytes keep arriving. HTTP/1 bodies retain the existing rolling idle timeout. |
{.wide .expand}

**Upgrade and compatibility requirements:**

- **IAM requires a coordinated upgrade of all participating servers.** Mixed
  old/new nodes sharing an IAM backend and rolling downgrade are unsupported.
  Back up complete IAM storage and required encryption material; a live admin
  export omits deletion history. Older credentials for a recreated parent may
  need reissuance. Pre-upgrade deletions whose history is already lost cannot be
  reconstructed automatically. Follow the [IAM upgrade and rollback guide](/operations/replication/iam-upgrade/).
- **Unavailable pools can now fail writes and deletes more consistently.**
  Conditional multipart completion fails if any pool's metadata is unreadable,
  even when GET/HEAD can use another pool. Ordinary version DELETE also fails
  on unreadable pools or cleanup errors; insufficient read quorum returns
  `503 SlowDownRead`. Retry after recovery. Successful deletion does not promise
  immediate removal from every drive while outbound delete replication is pending.
- **Access-frequency pool tiering was never in Server 20260903.** Only builds
  containing the experimental feature need its
  [configuration/XML migration](/compatibility/access-tiering-removal/).
  Ordinary lifecycle expiration, remote-tier transitions, rebalance and
  decommission remain available.
- Purge audit status is normalized from `COMPLETE` to `COMPLETED`. Malformed
  historical tag revisions can fail and retry; this repair does not reconstruct
  their history. A shorter header timeout also constrains TLS handshake reads;
  this is not a new total-duration limit for HTTP/1 uploads or downloads.
- Objects with recorded tag revisions take **one extra metadata COPY per
  object** during explicit resync or heal; when the destination is KMS-encrypted
  by bucket default, that copy rewrites the object data. Replication rules with
  tag filters still evaluate target eligibility against the post-deletion
  (empty) tagging state, and arbitrary site clock skew remains outside the
  repaired ordering guarantees. Both endpoints of a replication pair must run
  the repaired build for tombstones to be honored; an old peer still drops
  empty-value revisions. See [Replicated Tag Ordering](/blog/design/replicated-tag-ordering/).

The [R4–R8 integration record](https://github.com/pgsty/silo/blob/40220bd836cbd066ca424fa4dc5dbb90057fb55a/docs/investigations/r4-r8-integration/README.md)
contains source hashes, local tests and remaining acceptance limits. PR #196's
11 checks passed before merge.

### Console shared downloads {#console-sharing}

[Console #56](https://github.com/pgsty/silo-console/pull/56) and
[Server #209](https://github.com/pgsty/silo/pull/209) resolve the anonymous proxy
boundary reported in [Console #52](https://github.com/pgsty/silo-console/issues/52).
The proxy only accepts object-content GETs at the configured S3 origin and
rejects redirects, system paths and query-selected non-download operations.
No sharing-disable environment variable was added. Normal public, presigned and
versioned downloads remain supported; see the [behavior and design tradeoffs](/reference/minio-server/settings/console/#object-sharing).

The fix is released in [Console v2.4.1](/blog/release/console-2.4.1/).
The exact release source passed the complete CI matrix, vulnerability checks
and release workflow. Real API and browser sharing tests passed in standalone
and embedded deployments; the downloaded standalone binary also passed the
sharing regression against a SILO fixture.

### Ordinary conditional PUT {#conditional-put}

The separate cross-pool conditional PUT defect in
[#199](https://github.com/pgsty/silo/issues/199) was reproduced on published
Server 20260903. [PR #207](https://github.com/pgsty/silo/pull/207) was merged as
[`9b4ae82a29cc`](https://github.com/pgsty/silo/commit/9b4ae82a29cc2290fb5be7b551ec3d8cf7acdd99)
after its head `4620be394b52` passed all eight CI checks on 2026-09-16.
**The repair shipped in Server 20260916.** Its behavior is:

- Ordinary multi-pool `If-Match` / `If-None-Match` conditions use the logical
  current object across all pools. Unreadable metadata can prevent acceptance
  even when GET still works from another pool; read-quorum failures return 503.
  Restore readability or heal before retrying.
- When a destination `versionId` is supplied, the public condition still
  compares the current object. The requested destination version is preserved;
  internal replication keeps its addressed-version checks. Unconditional PUT
  and single-pool conditions retain their existing behavior.
- A successful conditional overwrite does not retire stale copies in other
  pools, and upgrading cannot recover historical accepted overwrites. Existing
  modification-time/pool ordering remains in use; this adds no global clock
  ordering guarantee.

The multipart-completion fix in #190 neither introduced nor repaired this PUT
defect. Final packaged-candidate and rollout acceptance remain tracked in
[#203](https://github.com/pgsty/silo/issues/203).

### Work still pending {#pending}

- **Upgrade and historical-state readiness:** [#200](https://github.com/pgsty/silo/issues/200)
  tracks the [IAM upgrade/restore rehearsal](/operations/replication/iam-upgrade/);
  [#201](https://github.com/pgsty/silo/issues/201) tracks [historical replica inventory and repair validation](/operations/replication/replica-metadata-audit/).
- **Release delivery:** [#202](https://github.com/pgsty/silo/issues/202)
  collects release notes and component identities; [#203](https://github.com/pgsty/silo/issues/203)
  tracks final artifact and multi-process validation.
- **Multi-site delete-marker convergence:** the source-side re-check in
  `254b19ac0` does not cover creations already in flight or replayed from
  another site, and minority marker copies left by a crash after a
  majority-acknowledged purge have no proven persistent cleanup owner.
  [#217](https://github.com/pgsty/silo/issues/217) tracks the receiver-side
  design; see the
  [design record](/blog/design/replication-reliability/#third-round-limits).
- **Listing during rolling restarts:** [#239](https://github.com/pgsty/silo/pull/239)
  (shipped in [Server 20261018](/blog/release/silo-20261018/)) carries the follow-up to [#218](https://github.com/pgsty/silo/issues/218): confirm
  eligible unresolved latest-object entries, distinguish deletion from read
  failure and preserve terminal errors through pagination. It adds no disk
  format, client parameter or migration switch. See the [current design and
  acceptance limits](/blog/design/listing-recovery-lock-cost/).
- **Pool migration and historical tags:** the final 20261018 artifacts passed
  four local 2/3-pool rebalance/decommission cases, including tags, versions,
  markers and interruption/recovery. See the [October migration repair](/blog/design/multi-pool-object-consistency/#migration-20261018).
  Tags lost before the repair need a separate audit.
- **Multipart listing:** [#79](https://github.com/pgsty/silo/issues/79) remains
  open. Server 20261018 withdraws the default persistent scan and retires the
  optional strict mode. Public listing again uses a node-local cache or an
  exact-key lookup; complete discovery, prefix/pagination semantics and delayed
  creation writes remain unresolved. See the [current contract and capacity evidence](/blog/design/list-multipart-uploads/#implementation).

## Dependency and release order {#order}

1. Verify the upstream SDK commit and required fixes. Keep the upstream
   `github.com/minio/minio-go/v7` path; the retired `silo-go` fork is not part of
   the maintained graph.
2. Validate and publish pkg under `github.com/pgsty/silo-pkg/v3`, including its
   migration notes. Resolve the tag through the Go proxy and checksum database.
3. Update MC to that pkg and SDK, validate it, then publish the calendar-tagged
   mcli release. Go consumers select its canonical pseudo-version.
4. Update Console's direct pkg requirement and explicit MC replacement, validate
   its embedded frontend and integration, and publish Console when a release is
   intended. An accepted immutable source commit can also be selected explicitly.
5. Update Server's direct pkg/SDK requirements and both PGSTY replacements,
   client archive hashes, image and Helm client pins. Validate the complete graph
   before a separate Server release, image publication and cluster rollout.
{.steps}

Go does not inherit a dependency module's `replace` directives. Server must
explicitly select both maintained Console and MC even when Console already
selects MC. Console and MC retain their historical MinIO module paths; pkg uses
its own path directly. Legacy transitive `minio/pkg/v3` from `colorjson`/`dperf`
is separate from the maintained policy implementation.

Console v2.4.2, mcli 20261018 and the Server 20261018 release use Go **1.27.2**; the September stack used Go **1.27.1**.
The pkg v3.14.x line retains a Go **1.26** library floor and was race-tested with Go **1.26.8**.
Server 20261026, standalone Console v2.5.1 and v2.6.0, mcli 20261026 and 20261109, and pkg v3.15.2 and v3.16.0 require Go **1.27.3**. The Go x/* dependencies were refreshed.
The effective go-systemd version stays **v22.6.0** because v22.7.0 fails to compile
on NetBSD; Console's tablewriter **v0.0.5** replacement preserves its MC API.

Other dependencies are updated for concrete CVE and bug fixes. The September 13 Go scans found no reachable or imported vulnerable
package, while retaining module-only **GO-2026-5932** in unused OpenPGP code.

The supported integration target is the coordinated PGSTY stack. Compatibility
with unmodified upstream MinIO/MC and other S3 implementations is best effort.

## September 16 Server source review {#source-review}

Server 20260916 source [`2a4d51406b7e`](https://github.com/pgsty/silo/commit/2a4d51406b7ed87af5fe6fe0f801f3290f96eb3c) selects pkg v3.14.1, upstream minio-go `32e1f32cb176`, Console v2.4.1 source `1360e26d976d`, and MC `e952aa78f10a` (mcli 20260916). The published Server tag is `RELEASE.2026-09-16T00-00-00Z`, package version `20260916000000.0.0`.

- #213 retains **legacy as the multipart default**. Strict requires `MINIO_API_MULTIPART_LISTING` in the process environment and restart, with no shared dynamic key. Majority cancellation confirmation is strict-only. See [settings](/reference/minio-server/settings/core/#multipart-listing) and the [upgrade contract](/blog/design/list-multipart-uploads/#implementation-20260916).
- [Multi-pool consistency](/blog/design/multi-pool-object-consistency/), [conditional DELETE](/blog/design/conditional-delete/) and [Object Lock replication ordering](/blog/design/object-lock-replication-ordering/) distinguish logical current objects, addressed versions and persistence locks.
- [Federated CopyObject](/blog/design/federated-copy-object/) and [SSE-C replica integrity](/blog/design/ssec-replica-integrity/) describe logical-byte checksums, encryption and historical-object limits.
- [Durable IAM revocation](/blog/design/iam-revocations/) and [bucket configuration convergence](/blog/design/bucket-metadata-convergence/) document coordinated upgrades, deletion history and the default-off `MINIO_SITE_REPLICATION_METADATA_TOMBSTONES` switch.
- [Request-header timeouts](/blog/design/request-header-timeouts/) and [Go 1.27 TLS/OIDC](/blog/design/go127-tls-oidc-discovery/) explain their separate scopes.
- The [September security chronicle](/blog/security/20260916-release-hardening/) records SN-2026-012/013/014 and their distinct component delivery boundaries.

These later Server repairs are not in 20260903; original Object Lock fixes and other released prerequisites retain their explicitly identified earlier release boundaries.

Final storage repairs also include migration tag preservation in [`fced86303`](https://github.com/pgsty/silo/commit/fced8630365fd57d6116c595b65252bcd12e13be), null-version quorum in [`8d06424b1`](https://github.com/pgsty/silo/commit/8d06424b126b4ac640cd076a4585b66f2ec753a6), and exact-version purge, marker metadata and queued-creation fixes in `eb4f5e5b3` / `254b19ac0` / `358ab38fb`. Late creation/crash residue in [#217](https://github.com/pgsty/silo/issues/217) and restart-time listing omissions in [#218](https://github.com/pgsty/silo/issues/218) remain known limitations.

## October 15 source acceptance {#october-source}

**Included in the Server 20261015 draft; not shipped in the public Server 20260916.**
[PR #233](https://github.com/pgsty/silo/pull/233), merged as
[`d94b3b3c9251`](https://github.com/pgsty/silo/commit/d94b3b3c9251af5a9dbdb2d178e892c4de75204a),
clears absent fields when reusing legacy `xl.meta` headers and keeps scanner
updates separate from final caches. Storage formats, RPC fields and dependency
versions are unchanged. The [problem and repair record](/blog/design/stale-metadata-reuse/)
documents deterministic regression coverage, a two-process scanner check,
post-merge CI, and operator verification. The source repair entered the
[Server 20261015](/blog/release/silo-20261015/) draft and shipped publicly in [Server 20261018](/blog/release/silo-20261018/).

## Repairs after 20261015 included in 20261018 {#post-20261015}

20261018 adds commit-metadata error classification (#232), upload-time parsing (#236), checksum and Console errors (#229/#238), IAM Admin authorization and bulk self-listing (#242, `995439260`), LIST recovery and directory preservation (#239, `3dd53eb81`, `2080b3d03`), empty upload-parent cleanup (`0f9199e0c`) and withdrawal of public persistent scanning (`4733e1423`). The shared package is now v3.14.3. The final candidate also includes migration overwrite/delete-marker repairs (`60c7179dd`, `1748f62c7`) and durable STS enumeration, revocation propagation and missed-notification recovery (`0cd388c66`).

The [20261018 release notes](/blog/release/silo-20261018/) cover behavior, upgrade steps and remaining work. Former strict users lose durable listing and strict cancellation; #79 and #217 remain unresolved.
