# Console Compatibility Notes

> Differences between SILO Console and the upstream MinIO Console

---

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

---

SILO Console is Silo's build of the MinIO Console. This page records where the two are interchangeable and where they differ.

[`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. Fork releases to date: [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/), and [v2.2.1].

## Principles {#principles}

The fork follows the same rule as the rest of Silo: **the shipped artifact and its channels are renamed; the interfaces other software depends on are not.**

- **Renamed** — the artifact on disk (`silo-console`), the product identity in the interface and in `--version`, the distribution channels, and the signing keys.
- **Unchanged** — the Go module path `github.com/minio/console`, every `CONSOLE_*` environment variable (including `CONSOLE_MINIO_SERVER` and `CONSOLE_MINIO_REGION`), the REST API shapes the web application calls, and the packaging identifiers `minio-console.service`, `console-user`, and `/etc/default/console`, so an in-place package upgrade keeps working.
- **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/main/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. Bilingual interface {#i18n}

The interface, help content, and documentation links are available in English and Chinese behind a per-page toggle, with no added runtime dependencies.

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

The Go module path stays `github.com/minio/console` as a compatibility
interface, but maintained Console source directly imports and requires
`github.com/pgsty/silo-pkg/v3` v3.13.2. The package is not selected through an
upstream-path replacement. `minio-go` is the explicit exception and resolves to
the verified upstream version.

The maintained graph has one replacement, selecting the released `pgsty/mc`
source while retaining its historical module path:

```go
replace (
	github.com/minio/mc => github.com/pgsty/mc ...
)
```

Go does not inherit replacements from dependency modules, so a SILO server that
embeds Console must copy that one `mc` selection. The release-gating graph is the
coordinated PGSTY stack: SILO, SILO Console, `pgsty/mc`, and `silo-pkg`.

The project also probes builds with upstream MinIO and upstream `mc` on a
best-effort basis. Those jobs are compatibility signals, not dependency floors
or release gates: an upstream-only failure is investigated and documented, but
does not require downgrading `silo-pkg` or duplicating its APIs. A small
`github.com/minio/pkg/v3` residue may still appear transitively through legacy
dependencies such as `minio/colorjson`; maintained Console behavior comes from
`silo-pkg`.

> [!NOTE]
> Since Console [v2.3.0] (2026-09-01) the module requires `github.com/pgsty/silo-pkg/v3` directly, because `silo-pkg` v3.13.0 moved to that module path. A server that still selects `silo-pkg` through `replace github.com/minio/pkg/v3 => …` must migrate its imports before adopting this Console line. The Silo server embeds Console commit `43f8447fd`: the last commit of the v2.3.0 line before the module-path migration, which carries the v2.3.0 security fixes.

## Migration {#migration}

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.

## 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
