gastownhall/beads · error

--server and --proxied-server are mutually exclusive

Error message

--server and --proxied-server are mutually exclusive

What it means

`bd init` refuses to run when both --server and --proxied-server are supplied, because they select two mutually exclusive server modes. This is an upfront flag-conflict validation in the init command's RunE.

Source

Thrown at cmd/bd/init.go:436

		externalTLSCACertPath, _ := cmd.Flags().GetString("proxied-server-external-tls-ca-cert-path")
		externalTLSCertPath, _ := cmd.Flags().GetString("proxied-server-external-tls-cert-path")
		externalTLSKeyPath, _ := cmd.Flags().GetString("proxied-server-external-tls-key-path")
		externalTLSServerName, _ := cmd.Flags().GetString("proxied-server-external-tls-server-name")
		externalTLSSkipVerify, _ := cmd.Flags().GetBool("proxied-server-external-tls-skip-verify")
		externalKeepAlive, _ := cmd.Flags().GetDuration("proxied-server-external-keep-alive")
		if os.Getenv("BEADS_DOLT_PROXIED_SERVER") == "1" {
			initProxiedServer = true
		}

		initEvt := metrics.NewCommandEvent("init-" + resolveInitDoltMode(initProxiedServer, sharedServer, initServerMode))
		defer func() {
			if c := metrics.Global(); c != nil {
				c.CloseEventAndAdd(initEvt)
			}
		}()

		if initProxiedServer && initServerMode {
			return fmt.Errorf("--server and --proxied-server are mutually exclusive")
		}
		if initProxiedServer {
			if sharedServer || externalServer ||
				serverHost != "" || serverPort != 0 || serverSocket != "" || serverUser != "" || cmd.Flags().Changed("server-tls") {
				return fmt.Errorf("--proxied-server cannot be combined with --shared-server, --external, or any --server-* flag")
			}
		}
		if initTeamServer && !initProxiedServer {
			return fmt.Errorf("--team-server requires --proxied-server")
		}
		if serverConfigPath != "" {
			if !initProxiedServer {
				return fmt.Errorf("--proxied-server-config-path requires --proxied-server")
			}
			if !filepath.IsAbs(serverConfigPath) {
				return fmt.Errorf("--proxied-server-config-path must be an absolute path, got %q", serverConfigPath)
			}
			if err := validateProxiedServerConfig(serverConfigPath); err != nil {

View on GitHub (pinned to 71377f2769)

Solutions

  1. Remove --server if you intend to run behind a proxied server
  2. Remove --proxied-server if you intend a direct embedded/direct server
  3. Pick exactly one server mode per init invocation

Example fix

// before
bd init --server --proxied-server
// after
bd init --proxied-server
Defensive patterns

Strategy: validation

Validate before calling

# shell pre-check
set -- $FLAGS
for f in --server --proxied-server; do :; done
case "$FLAGS" in *--server*--proxied-server*|*--proxied-server*--server*) echo 'conflict'; exit 1;; esac

Prevention

When it happens

Trigger: Invoking `bd init --server --proxied-server` (initServerMode && initProxiedServer both true).

Common situations: Copy-pasting a server-mode init command and appending --proxied-server from another guide; scripted init templates that enable both modes accidentally.

Related errors


AI-assisted analysis of gastownhall/beads@71377f2769 (2026-08-30). Data as JSON: /api/errors/0373870041858603. Report an issue: GitHub.