Skip to content

Runs Without Docker

Govard installs and runs on a host with no container runtime. Every command declares its requirement in the binary's manifest, and govard capabilities prints the resolved set for the machine you are on — that output is the source of truth, and this page mirrors it.

bash
govard capabilities          # command, requirement, host status
govard capabilities --json   # machine-readable (schema_version 1)

Commands that do not need Docker

CommandRequirement
govard audit cleanupnone
govard audit diffnone
govard audit rerunnone
govard audit resultnone
govard audit runnone
govard audit statusnone
govard blueprintnone
govard blueprint cachenone
govard blueprint cache clearnone
govard blueprint cache listnone
govard capabilitiesnone
govard completion bashnone
govard completion fishnone
govard completion powershellnone
govard completion zshnone
govard confignone
govard config getnone
govard config profilenone
govard config profile clearnone
govard config setnone
govard customnone
govard custom listnone
govard deployssh,rsync
govard deploy buildnone
govard deploy checkssh
govard deploy plannone
govard deploy releasesssh
govard deploy rollbackssh,rsync
govard deploy statusssh
govard deploy unlockssh
govard desktop doctornone
govard doctornone
govard doctor trustnone
govard domain listnone
govard helpnone
govard initnone
govard project listnone
govard project opennone
govard remote addssh,rsync
govard remote audit statsssh,rsync
govard remote audit tailssh,rsync
govard remote copy-idssh,rsync
govard remote execssh,rsync
govard remote testssh,rsync
govard self-updatenet
govard syncssh,rsync
govard trustnone
govard tunnelcloudflared
govard tunnel startcloudflared
govard tunnel statuscloudflared
govard tunnel stopcloudflared
govard versionnone
govard vscode setupnone

The Requirement column is the exact token govard capabilities reports:

TokenMeaning
noneNothing beyond the Govard binary itself.
ssh,rsyncA working SSH client and rsync. Still no container runtime.
cloudflaredThe cloudflared binary, for tunnels. Still no container runtime.
netOutbound network access, for self-update. Still no container runtime.

Commands whose requirement includes docker are gated instead: the stack lifecycle (env, restart, down, ps, logs, svc, db, shell, tool, test, frontend), the parts of project and domain management that touch containers (project delete, project orphans, domain add, domain remove), the vscode <tool> wrappers, deploy, bootstrap, debug, launching desktop, and the container-backed audit paths (audit toolchain, audit run --checks lint, audit run --checks profiler).

Docker-free features

  • Container-free analysis. govard audit run --checks integrity (Magento 2 / Mage-OS) reads the checkout with Go analyzers — Composer manifest/lock agreement, module/DI/sequence consistency — with no Docker, no PHP, and no toolchain image. The rest of the audit lifecycle is host-side as well: status, result, cleanup, and diff. rerun repeats the checks recorded in the session, so rerunning a lint or profiler session needs Docker.

  • Diagnostics. govard doctor runs anywhere; Docker is one optional check and its absence does not fail the command (--strict restores the hard gate for bootstrap scripts). govard trust installs the local CA into the host trust store.

  • Configuration. govard config get|set and govard config profile read and write project configuration; govard config profile clear and govard blueprint cache list|clear work on files and the local cache. Applying a profile to a running stack (config profile apply|switch), govard config auto (it configures the framework inside the container), and every govard lock command are container work: the lock file records the resolved docker/compose versions and service image digests.

  • Project scaffolding. govard init and govard custom list.

  • Registry and domains. project list and project open read the registry; domain list prints the project's domains; vscode setup derives the editor settings from the project's own files. project orphans inspects Docker resources, so it keeps the requirement.

  • Deployment. govard deploy and govard deploy rollback need SSH and rsync; govard deploy check, govard deploy releases, govard deploy status and govard deploy unlock need SSH. govard deploy plan needs nothing at all: it reads .govard.yml and prints the execution plan without connecting anywhere. Rolling back re-points a symlink or re-runs the publish tail from a release directory that is already on the server, so it never needs a local build toolchain. govard deploy build also needs nothing: it is the CI half of the artifact mode, it runs on the runner that owns the project's toolchain, and it never connects to the target. That split is what lets a deploy job run with govard, SSH and rsync alone — no PHP, no Composer, no container runtime. The one exception in the deploy group is govard deploy sandbox *, which creates a container that plays the target: that is container work by definition, and it is the only way a rehearsal can use the same code path as production.

  • Remote and sync. govard remote add|test|copy-id|exec, govard remote audit stats|tail, and govard sync need SSH and rsync, not Docker.

  • Tunnels. govard tunnel start|stop|status drive cloudflared on the host.

  • Self-update, help, completion. govard self-update needs only network access; govard version, govard help, and govard completion bash|zsh|fish|powershell need nothing at all.

When something is missing

The gate refuses before the command does any work, and names what is missing:

Exit codeMeaning
0Success.
1The command ran and failed.
2Usage error: unknown flag or invalid argument.
3CAPABILITY_MISSING — a declared requirement is unavailable.
4Configuration error.

--error-json prints the failure as a machine-readable envelope on stdout (schema_version, code, capability, command, message, hint), so a script never has to parse the text form:

bash
govard tunnel status --error-json
# {"schema_version":1,...,"error":{"code":"CAPABILITY_MISSING","capability":"cloudflared",...}}

A container-backed audit check points at the container-free alternative:

bash
govard audit run --checks lint
# Hint: run `govard audit run --checks integrity` for container-free analysis on this host
  • Installation — installing and running the CLI without Docker.
  • Audit — the integrity check and the container-backed lint path.
  • CLI Commands — the full command reference.

Released under the MIT License.