Development

August 21, 2026 ยท View on GitHub

Directory structure

AGENTS.md                # guidelines for agents working on this repo
Containerfile            # image build (Debian slim + node/pnpm + rust/uv + podman/caddy/gh + dsh + entrypoint)
container/
  entrypoint.sh          # container entrypoint: optional auto-update + Caddy proxy + start dsh-web
  dsh-update.sh          # dsh update script (idempotent, runnable standalone)
  dsh-web.sh             # dsh web supervisor: auto-restart dsh web, installed as /usr/local/bin/dsh-web
  dsh-restart.sh         # restart dsh web inside the container, installed as /usr/local/bin/dsh-restart
  dsh-client-patch.sh    # idempotent frontend compatibility patch, installed as /usr/local/bin/dsh-client-patch
examples/
  compose.yaml           # Docker Compose example (pulls the image)
  dsh.container          # systemd Quadlet example (pulls the image)
docs/
  deployment.md          # deployment & maintenance guide
  security.md            # security notes
  build.md               # build configuration & version pinning
  releasing.md           # image tags & publishing
  design.md              # design references
  development.md         # this file
.github/workflows/
  image.yml              # build + validate image; publish + GitHub Release on v* tags

Local development

just build       # build ghcr.io/niyueee/dsh-container:local locally (podman or docker)
just debug       # run in the foreground (bridge networking, port 3081 published)
just update-dsh  # update the npm package in the running "dsh" container
just restart-dsh # restart dsh web inside the running "dsh" container without restarting it