Summary
Found 2 minor discrepancies between documentation and implementation during nightly reconciliation check.
Minor Issues 🔵
1. payloadSizeThreshold Configuration Alternatives missing TOML config option
Location: README.md, Gateway Configuration Fields — "Configuration Alternatives" section (~line 220)
Problem: The note explains how to set payloadSizeThreshold but lists only the CLI flag and environment variable. The TOML config file's payload_size_threshold field is not listed as an option.
Current documentation:
- **`payloadSizeThreshold`** is not supported in JSON stdin format. Use:
- CLI flag: `--payload-size-threshold (bytes)` (default: 10240)
- Environment variable: `MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD=(bytes)`
Actual behavior: The TOML config file also supports this via payload_size_threshold in the [gateway] section — as shown in config.example-payload-threshold.toml (which lists "Config file: payload_size_threshold = 2048" as option #3) and confirmed in internal/config/config_core.go line 84:
PayloadSizeThreshold int `toml:"payload_size_threshold" json:"payload_size_threshold,omitempty"`
Impact: Users reading README.md may not realize TOML config supports this setting, missing an available configuration method.
Suggested Fix:
- **`payloadSizeThreshold`** is not supported in JSON stdin format. Use:
- CLI flag: `--payload-size-threshold (bytes)` (default: 10240)
- Environment variable: `MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD=(bytes)`
- TOML config file: `payload_size_threshold = (bytes)` in `[gateway]` section
Code Reference: internal/config/config_core.go:84, config.example-payload-threshold.toml:7
2. DOCKER_API_VERSION description inaccurate in environment variables table
Location: README.md, Docker Configuration table (~line 353)
Problem: The "Default" column for DOCKER_API_VERSION says "Set by run.sh based on architecture" but the actual primary approach queries the Docker daemon's current API version first; architecture-based selection is only a fallback label (and both branches currently set 1.44).
Current documentation:
| `DOCKER_API_VERSION` | Docker API version (set by helper scripts, Docker client auto-negotiates) | Set by run.sh based on architecture |
```
**Actual behavior** (from `run.sh` lines 93–110):
1. First queries Docker daemon: `docker version --format '\{\{.Server.APIVersion}}'`
2. If successful, uses the daemon's current API version
3. If detection fails, falls back to `1.44` for all architectures
`CONTRIBUTING.md` already describes this correctly:
> "set automatically by `run_containerized.sh` using the Docker daemon's current API version (falls back to `1.44` for all architectures if detection fails)"
**Impact:** Users may expect the version to vary by CPU architecture (arm64 vs amd64), but it is actually daemon-version-driven. Minor confusion potential.
**Suggested Fix:**
```
| `DOCKER_API_VERSION` | Docker API version (set by helper scripts, Docker client auto-negotiates) | Set by querying Docker daemon's current API version; falls back to `1.44` if detection fails |
Code Reference: run.sh:93-110, run_containerized.sh:228-245
Accurate Sections ✅
All the following were verified against implementation and found accurate:
- Features list — All claimed features confirmed in code (
internal/cmd/, internal/config/, internal/server/, internal/launcher/, internal/tty/)
- TOML configuration format — Fields
command, args, type, url verified against ServerConfig struct
- JSON stdin configuration format — All fields in the example (
type, container, entrypoint, entrypointArgs, mounts, env, args) verified against StdinServerConfig struct
- Gateway configuration fields —
port, apiKey, domain, startupTimeout, toolTimeout, payloadDir all verified in StdinGatewayConfig
- Validation rules — Container required for stdio, URL required for HTTP,
command not supported in JSON stdin — all confirmed in validation.go
- Variable expansion —
\$\{VAR_NAME} syntax confirmed in validation.go
"local" type normalization — Confirmed in normalizeLocalType() in config_stdin.go
- Auth format (plain API key, NOT Bearer) — Confirmed in
internal/auth/ package
- Default values — Port
3000, startupTimeout 60, toolTimeout 120, payloadSizeThreshold 10240 all match code
make targets — All documented targets (build, test, test-unit, test-integration, test-all, lint, coverage, install, test-ci) verified present in Makefile
- Binary name —
awmg confirmed in Makefile:BINARY_NAME=awmg
- Go version —
1.25.0 matches go.mod
- All dependencies — Listed in CONTRIBUTING.md match
go.mod
- Project structure — All documented
internal/ packages verified to exist
- Config example files —
config.example.toml and config.example-payload-threshold.toml match documented TOML format
Tested Commands
- ✅
make --dry-run build — runs go build -o awmg .
- ✅
make --dry-run test — alias for test-unit
- ✅
make --dry-run test-unit — runs go test -v ./internal/...
- ✅
make --dry-run test-integration — builds binary then runs go test -v ./test/integration/...
- ✅
make --dry-run test-all — runs go test -v ./...
- ✅
make --dry-run lint — runs go vet, gofmt, golangci-lint
- ✅
make --dry-run coverage — runs with -coverprofile
- ✅
make --dry-run install — verifies Go + golangci-lint, downloads deps
Code References
- Configuration structs:
internal/config/config_core.go, internal/config/config_stdin.go
- Validation logic:
internal/config/validation.go
- CLI flags:
internal/cmd/flags_core.go, internal/cmd/flags_logging.go, internal/cmd/flags_launch.go
- Run scripts:
run.sh, run_containerized.sh
Generated by Nightly Documentation Reconciler
Summary
Found 2 minor discrepancies between documentation and implementation during nightly reconciliation check.
Minor Issues 🔵
1.
payloadSizeThresholdConfiguration Alternatives missing TOML config optionLocation:
README.md, Gateway Configuration Fields — "Configuration Alternatives" section (~line 220)Problem: The note explains how to set
payloadSizeThresholdbut lists only the CLI flag and environment variable. The TOML config file'spayload_size_thresholdfield is not listed as an option.Current documentation:
Actual behavior: The TOML config file also supports this via
payload_size_thresholdin the[gateway]section — as shown inconfig.example-payload-threshold.toml(which lists "Config file:payload_size_threshold = 2048" as option #3) and confirmed ininternal/config/config_core.goline 84:Impact: Users reading README.md may not realize TOML config supports this setting, missing an available configuration method.
Suggested Fix:
Code Reference:
internal/config/config_core.go:84,config.example-payload-threshold.toml:72.
DOCKER_API_VERSIONdescription inaccurate in environment variables tableLocation:
README.md, Docker Configuration table (~line 353)Problem: The "Default" column for
DOCKER_API_VERSIONsays "Set by run.sh based on architecture" but the actual primary approach queries the Docker daemon's current API version first; architecture-based selection is only a fallback label (and both branches currently set1.44).Current documentation:
Code Reference:
run.sh:93-110,run_containerized.sh:228-245Accurate Sections ✅
All the following were verified against implementation and found accurate:
internal/cmd/,internal/config/,internal/server/,internal/launcher/,internal/tty/)command,args,type,urlverified againstServerConfigstructtype,container,entrypoint,entrypointArgs,mounts,env,args) verified againstStdinServerConfigstructport,apiKey,domain,startupTimeout,toolTimeout,payloadDirall verified inStdinGatewayConfigcommandnot supported in JSON stdin — all confirmed invalidation.go\$\{VAR_NAME}syntax confirmed invalidation.go"local"type normalization — Confirmed innormalizeLocalType()inconfig_stdin.gointernal/auth/package3000, startupTimeout60, toolTimeout120, payloadSizeThreshold10240all match codemaketargets — All documented targets (build,test,test-unit,test-integration,test-all,lint,coverage,install,test-ci) verified present inMakefileawmgconfirmed inMakefile:BINARY_NAME=awmg1.25.0matchesgo.modgo.modinternal/packages verified to existconfig.example.tomlandconfig.example-payload-threshold.tomlmatch documented TOML formatTested Commands
make --dry-run build— runsgo build -o awmg .make --dry-run test— alias fortest-unitmake --dry-run test-unit— runsgo test -v ./internal/...make --dry-run test-integration— builds binary then runsgo test -v ./test/integration/...make --dry-run test-all— runsgo test -v ./...make --dry-run lint— runsgo vet,gofmt,golangci-lintmake --dry-run coverage— runs with-coverprofilemake --dry-run install— verifies Go + golangci-lint, downloads depsCode References
internal/config/config_core.go,internal/config/config_stdin.gointernal/config/validation.gointernal/cmd/flags_core.go,internal/cmd/flags_logging.go,internal/cmd/flags_launch.gorun.sh,run_containerized.sh