# tools/pack Follow the root `AGENTS.md` and `tools/AGENTS.md` first. This tool owns the repo-external packaged build/start/stop/logs command surface. ## Owns - Local packaging orchestration for packaged Open Design artifacts. - mac build/install/start/stop/logs/uninstall/cleanup smoke commands. - Windows NSIS build/install/start/stop/logs/uninstall/cleanup/list/reset smoke commands. - Windows registry observation/cleanup must go through `reg.exe` and stay scoped to entries matching the namespace install/uninstaller paths. - Windows lifecycle logs must expose NSIS automation logs/markers/timings in addition to app runtime logs. - Linux AppImage build/install/start/stop/logs/uninstall/cleanup smoke commands. - Linux containerized builds via `electronuserland/builder` Docker image for distro-agnostic glibc compat. - Consuming sidecar/process/path primitives from `@open-design/sidecar-proto`, `@open-design/sidecar`, and `@open-design/platform`. ## Does not own - Product business logic. - Sidecar protocol definitions. - A second process identity model. - Product/business update runtime integration. ## Rules - Do not hand-build `--od-stamp-*` args; use `createProcessStampArgs` with `OPEN_DESIGN_SIDECAR_CONTRACT`. - Do not use port numbers in data/log/runtime/cache path decisions. Namespace decides paths; ports are only transient transports. - Release artifacts keep canonical app identity (`Open Design.app` on mac, `Open Design.exe` inside the Windows installer); local tools-pack installs may use namespace-scoped install paths only as a developer multi-instance validation convention. - Do not let namespace-named `.app` installs change data/log/runtime/cache path conventions. - Use `--portable` for public/release artifacts so packaged config does not bake local tools-pack runtime roots from the build machine. - Pack resource files used by electron-builder belong under `tools/pack/resources/`; do not point pack logic at Downloads, web public assets, docs assets, or other app-owned resource paths.