# Console Compatibility Notes

> Differences between SILO Console and the upstream MinIO Console

---

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

---

> [!NOTE]
> **Latest published release:** [Console v2.7.0](/blog/release/console-2.7.0/) (2026-11-09, UTC+8) adds ten UI languages, Arabic RTL, container CA/temporary-directory fixes, usage-worker TLS and scheduling fixes, folder sizes over plain HTTP, `silo-pkg v3.16.0`, official `mcli 20261109`, and updated Swagger documentation. [Console v2.6.0](/blog/release/console-2.6.0/) added usage scans, retained-version totals, and bucket-administration fixes. Upgrading standalone Console does not replace Server's embedded Console; built-in policy Reset and live bucket inventory reads require the Server 20261026 release (absent from published Server 20261018). See the [component matrix](/compatibility/versions/).

SILO Console is Silo's build of the MinIO Console. This page records where the two are interchangeable and where they differ. Start with the [three-level overview](/compatibility/), then use the details below to check UI and automation behavior.

[`pgsty/silo-console`](https://github.com/pgsty/silo-console) continues the upstream `minio/console` history from its final commit, [`feff71e4`](https://github.com/pgsty/silo-console/commit/feff71e48e39547834399a84a9460edb4fb50563) (2026-04-16); the rebrand begins at `50797deb` (2026-08-04). The upstream repository is no longer published — `github.com/minio/console` now returns 404, where `minio/mc` was merely archived — so the source lineage survives only in this fork. The Go module path still resolves, because the module proxy continues to serve the versions it already cached. Earlier release records: [v2.0.0](/blog/release/console-2.0.0/), [v2.1.0](/blog/release/console-2.1.0/), [v2.1.1], [v2.2.0](/blog/release/console-2.2.0/), [v2.2.1], [v2.3.0](https://github.com/pgsty/silo-console/releases/tag/v2.3.0), [v2.4.0](/blog/release/console-2.4.0/), [v2.4.1](/blog/release/console-2.4.1/), [v2.4.2](/blog/release/console-2.4.2/), and [v2.5.1](/blog/release/console-2.5.1/).

## 2.6.0 usage scans and bucket administration {#release-260}

[Console 2.6.0](/blog/release/console-2.6.0/) adds cancellable folder and bucket usage scans with separate current and retained-version totals, an optional PostgreSQL-backed durable usage worker, strict integer range validation for retention, quota, and replication bandwidth inputs, Object Lock versioning-exclusion guards during bucket creation, inert object-detail/version controls during route transitions ([#81](https://github.com/pgsty/silo-console/pull/81)), and a three-minute keep-alive default for embedded Console servers.

## 2.5.1 administration repairs {#release-251}

Status-only group updates now preserve existing members, while explicit member arrays still replace the member list. OIDC string-array group claims preserve mapped permissions, and secure session cookies are set only when HTTPS or a trusted proxy is configured. Credential exports produce valid UTF-8 JSON, and streaming ZIP downloads preserve the underlying S3 error status if they fail before writing the first byte. Keyboard focus, accessible names, and tab scrolling are also fixed. See the [complete 2.5 release notes](/blog/release/console-2.5.1/).

## Principles {#principles}

The fork prioritizes existing integration contracts and explicitly documents authorization, response and interface changes.

- **Renamed** — the artifact on disk (`silo-console`), the product identity in the interface and in `--version`, the distribution channels, and the signing keys.
- **Retained core contracts** — the Go module path `github.com/minio/console`, existing `CONSOLE_*` environment variables (including `CONSOLE_MINIO_SERVER` and `CONSOLE_MINIO_REGION`), and packaging identifiers `minio-console.service`, `console-user` and `/etc/default/console`. REST APIs retain the existing architecture; see [response and operation changes](#api-output) below.
- **Severed** — automatic self-update, telemetry, analytics, beacons, external scripts and fonts, and call-home. A release catalog is contacted only when one is explicitly configured, through `SILO_RELEASE_SERVICE_HOST` with `RELEASE_SERVICE_HOST` retained as a fallback.
- **Preserved** — upstream copyright and the AGPL-3.0 license. Runtime output credits both MinIO, Inc. and PGSTY.

> [!NOTE]
> SILO Console is not a generic S3 browser. Its administrative features need the MinIO-compatible administration APIs that Silo implements in addition to the S3 API.

## What changed {#changed}

### 1. The full administration console is retained {#scope}

This is the largest functional difference, and it runs opposite to the usual direction of a fork. Upstream reduced its community console to an object browser. SILO Console keeps the complete administrative interface: dashboards, health, logs, diagnostics, and speed tests; bucket, object, lifecycle, replication, notification, and tier management; users, groups, service accounts, policies, identity providers, and KMS setup; and server configuration.

### 2. The dashboard targets Metrics V3 {#metrics}

Dashboard widgets query the **MinIO Metrics V3** catalog, the metric set current deployments actually scrape, with guards for its zero-value and per-node export semantics so a panel distinguishes a real zero from missing data. The mapping is recorded in [`docs/metrics-v3.md`](https://github.com/pgsty/silo-console/blob/v2.5.1/docs/metrics-v3.md).

### 3. A smaller, quieter payload {#payload}

The embedded frontend went from roughly 10 MB to under 3 MB, rebuilt reproducibly byte for byte and enforced by a release gate. There is no telemetry of any kind, and no external network dependency in the page itself.

### 4. Interface languages {#i18n}

Released Console 2.6.0 offers English and Chinese. The 2.7.0 source line adds
French, German, Russian, Spanish, Brazilian Portuguese, Japanese, Arabic and
Turkish through a shared menu, with bundled dictionaries and Arabic RTL.
English remains the default and fallback. Documentation stays bilingual;
server messages and log contents remain intact. See the
[language design](/blog/design/console-languages/) for scope and maintenance tiers.

### 5. Object listings operate one page at a time {#pagination}

See [B02](/compatibility/#b02). Console v2.4.0 introduced cursor pagination, retained in v2.5.1. Pages default to 100 entries, with 50, 100, 250, 500 and 1,000 available. Navigation offers first, previous and next; there is no load-all mode or arbitrary page jump.

**Sorting, name filtering and select-all apply to the current page.** They cover the whole directory only when the first page already contains it. Paging retains filter text and clears selection; changing page size returns to the first page, and changing directories clears the filter. A failed page leaves the previous page available for retry.

Rewind and deleted-object listings have no cursor. They return at most 1,000 versions within a time budget and disclose incomplete results when either limit is reached. See the [object-browser contract](https://github.com/pgsty/silo-console/blob/v2.5.1/docs/ObjectBrowser.md#paging).

### 6. API responses and automation {#api-output}

See [B04](/compatibility/#b04) and [O05](/compatibility/#o05). Session responses add `accountAccessKey`, and object listings explicitly return `size: 0` for empty objects. Session capabilities also reflect effective permissions. Custom parsers should tolerate added fields, and Console automation should handle pagination, expired sessions and WebSocket errors.

User enable/disable gains a separate `PUT /api/v1/user/{name}/status`; the old `PUT /api/v1/user/{name}` remains but is deprecated. Multi-object downloads retain the existing endpoint and also accept a bounded form request for native streaming ZIP downloads. See [password-permission migration](/compatibility/password-permissions/) and the [v2.4.1 sharing changes](/blog/release/console-2.4.1/); use the current [API definition](https://github.com/pgsty/silo-console/blob/v2.5.1/swagger.yml) for custom integrations.

Console v2.4.2 preserves wrapped S3 errors from bucket-versioning operations and returns `InvalidBucketState` explicitly when Object Lock prevents suspension. This makes the existing Server restriction visible to the caller.

### 7. For developers: the module graph {#source}

Console v2.5.1 requires Go 1.27.3, directly selects `github.com/pgsty/silo-pkg/v3` v3.15.2 and
upstream SDK `v7.4.2-0.20261025165926-320af050c445`, and retains the historical
`github.com/minio/console` module path. Embedders explicitly select these released sources:

```go
replace github.com/minio/console => github.com/pgsty/silo-console v0.0.0-20261026153924-fff1618d9abb
replace github.com/minio/mc => github.com/pgsty/mc v0.0.0-20261026120214-0ceb298cdcd0
```

Go does not inherit dependency replacements. Server must select both PGSTY
Console and MC. go-systemd v22.6.0 preserves NetBSD compatibility and tablewriter
v0.0.5 preserves the MC API. Legacy transitive minio/pkg from colorjson remains
separate from the maintained silo-pkg policy implementation. The old
`minio/pkg => silo-pkg` and `minio-go => silo-go` replacements are unsupported.
See the [component matrix](/compatibility/versions/) and
[embedding guide](https://github.com/pgsty/silo-console/blob/v2.5.1/docs/Embedding.md).

The release-gating target is the coordinated SILO, Console, mcli and pkg stack.
Upstream MinIO/MC probes remain non-blocking compatibility signals and do not
require pkg downgrades or duplicate APIs.

## Migration {#migration}

The official image is [`docker.io/pgsty/silo-console`](https://hub.docker.com/r/pgsty/silo-console). **Linux amd64/arm64 images are provided.** See release details in the [maintenance announcement](/blog/release/console-2.5.1/#delivery). Published [GitHub binaries and packages](https://github.com/pgsty/silo-console/releases/tag/v2.5.1) are also available.

The image runs as UID 1000 with no home directory, so its default certificate directory is `/.console/certs`: mount private CA certificates into `/.console/certs/CAs/`, or choose another path with `--certs-dir`. Images up to v2.6.0 also ship without the system CA bundle; to reach HTTPS endpoints with public certificates (SILO, OIDC providers) from them, mount the host bundle read-only at `/etc/ssl/certs/ca-certificates.crt`.

An existing MinIO Console deployment upgrades in place. The service unit, service account, and configuration file keep their names, and every `CONSOLE_*` variable is read unchanged, so the usual path is to install the `silo-console` package over the old one and restart.

Two behaviors change on first start and are worth expecting:

- `silo-console` will not update itself. Roll out new versions through packages, images, or your orchestrator.
- Any workflow that relied on the console reaching MinIO-operated services — the update feed, licensing, or telemetry — no longer has anything to reach.

When upgrading from a version earlier than v2.4.1, review the [password-policy migration](/compatibility/password-permissions/).
Linux packages use `/etc/silo-console/certs`; migrate existing certificates or
retain their old path in `CONSOLE_OPTS` in `/etc/default/console` before restarting.
The service and configuration names are retained. Shared downloads require no new
setting. See the [v2.4.1 release notes](/blog/release/console-2.4.1/).

## See also {#see-also}

- [Silo server compatibility](/compatibility/server/) — the server this console administers
- [MCLI client compatibility](/compatibility/mcli/) — the command-line client
- [Console release notes](/tags/console/) and [`CHANGELOG.md`](https://github.com/pgsty/silo-console/blob/main/CHANGELOG.md)

[v2.1.1]: https://github.com/pgsty/silo-console/releases/tag/v2.1.1
[v2.2.1]: https://github.com/pgsty/silo-console/releases/tag/v2.2.1
[v2.3.0]: https://github.com/pgsty/silo-console/releases/tag/v2.3.0
