Thanks for contributing to Mullgate.
- Node.js 22
pnpm10.18.3- Docker when you need the Linux-first runtime verifiers
You can use either:
.node-versionwith your version managercorepack enableto make sure the repo uses the pinnedpnpmversion
pnpm install
pnpm build
pnpm typecheck
pnpm test -- --runThe Makefile exposes the same common entrypoints:
make install
make release-checksrc/cli.tswires the top-level command tree.src/commands/owns operator-facing CLI flows such as setup, proxy runtime control, status, doctor, relay inspection, and advanced config editing.src/app/setup-runner.tscontains the guided/non-interactive setup orchestration that provisions Mullvad credentials, resolves route selections, writes relay cache state, and persists the canonical config.src/config/defines the schema, canonical storage normalization, redaction rules, and exposure contract that every command reads from.src/runtime/renders and validates the shared Docker runtime bundle: wireproxy config, route-proxy config, docker-compose manifest, and typed compose status checks.src/mullvad/is the upstream integration layer for relay catalog fetches, WireGuard provisioning, and exact-exit probing.src/domain/holds location alias and region-group logic that stays independent from CLI concerns.test/cli/covers the operator contract.test/runtime/,test/config/,test/domain/, andtest/mullvad-*cover the lower-level behavior that command flows compose.
mullgate setupcollects input, talks to Mullvad, resolves route aliases, and writes a canonicalconfig.jsonplus relay cache and derived runtime artifacts.mullgate proxy startreloads that saved config, rerenders the runtime bundle, validates it, and then launches Docker Compose.mullgate proxy statusandmullgate proxy doctorcombine saved config state, rendered artifacts, validation reports, and live Docker Compose state into operator-facing diagnostics.- Config mutations such as
mullgate config setormullgate proxy accessupdate the canonical config first, then ask the operator to refresh derived runtime artifacts when required.
Use these docs when you are changing the docs site, cutting a release, or publishing mullgate:
Run the smallest meaningful verification for your change. For most changes that means:
pnpm lint
pnpm typecheck
pnpm test -- --runIf you change packaging, install flow, or release behavior, also run:
pnpm verify:install-smoke
pnpm verify:m003-install-path -- --check-only- Keep changes scoped and reviewable.
- Use descriptive Conventional Commit messages.
- Update
README.md,docs/, orCHANGELOG.mdwhen behavior or release surface changes. - Do not commit secrets, Mullvad account numbers, or real proxy credentials.
- Use GitHub Issues for bugs and feature requests.
- Use
SUPPORT.mdfor general support guidance. - Use
SECURITY.mdfor vulnerability reporting.