- name: govard
- description: Govard is a local development environment orchestrator for PHP applications (Magento, Laravel, Symfony, WordPress). A developer runs it inside a project checkout to bring up, switch between and tear down that project’s containerized stack (web server, PHP-FPM, database, cache, search), open shells in it, run framework CLIs, and sync code and databases with the project’s remote environments.
- snapcraft: The snap is built by GoReleaser; its snap definition lives in govard/.goreleaser.yml at master · ddtcorex/govard · GitHub (
snapcraftssection). - upstream: https://github.com/ddtcorex/govard (MIT)
- upstream-relation: I am the author and maintainer of the upstream project.
- supported-category: tools for local, non-root user driven configuration of/switching to development workspaces/environments
- reasoning:
- Govard fits the supported category “tools for local, non-root user driven configuration of/switching to development workspaces/environments”: a developer runs it inside a project checkout to bring up, switch between and tear down that project’s containerized stack, as a non-root user.
- I built and installed a strict test snap (base core24) with
docker,home,network,network-bind,ssh-keysandremovable-mediaall connected, and ran Govard’s read-only commands. Results:- The
dockerinterface grants the socket (the daemon is reachable), but Govard drives environments through the Docker CLI and thedocker composeplugin:exec: "docker": executable file not found in $PATH.govard capabilitiesreports every stack command (env up,ps,status,db,shell,logs, …) as missing, versus ok for the same binary unconfined. $HOMEis remapped to~/snap/<name>/<rev>, so Govard’s real state (~/.govard, including the project registry) is invisible:project listreturns an empty registry on a machine with registered projects.- Remote/sync workflows lose the user’s SSH agent (agent not reachable; AppArmor denies exec of
/usr/bin/ssh-add), andrsyncis missing, sosync,deployandremote *are unavailable.
- The
- Bundling a Docker CLI/compose/rsync would still leave Govard unable to use the developer’s own state, SSH agent and project checkouts outside
$HOME(e.g./var/www,/srv), which is the core of switching between development environments. - Govard never runs as root; optional steps that touch system state (trusting its local CA) are explicit, user-initiated commands.
I understand that strict confinement is generally preferred over classic.
I’ve tried the existing interfaces to make the snap to work under strict confinement.