Customizing Your Deployment
Pinchy’s docker-compose.yml is owned by the Pinchy project and gets replaced whenever you upgrade. If you customize it directly, your changes disappear on the next curl -o docker-compose.yml ....
The supported customization surface is docker-compose.override.yml — a file you create in the same directory as docker-compose.yml. Docker Compose automatically merges it on top of the base file, every time you run docker compose up. Upgrades never touch it.
Recipe 1: Extra environment variables
Section titled “Recipe 1: Extra environment variables”Add debug flags or optional Pinchy variables that aren’t in .env.example:
services: pinchy: environment: - DEBUG=pinchy:* - SOME_OPTIONAL_FLAG=trueCompose merges this with the base environment: block — existing variables are kept, new ones are added. For duplicate keys, the override wins. See the Docker Compose merge docs for edge cases.
Recipe 2: Expose the database for an external tool
Section titled “Recipe 2: Expose the database for an external tool”If you want to connect psql or DBeaver from the same host for debugging:
services: db: ports: - "127.0.0.1:5432:5432"Remove the override when you’re done debugging.
Recipe 3: Mount additional OpenClaw extensions
Section titled “Recipe 3: Mount additional OpenClaw extensions”If you’ve written a custom OpenClaw plugin and want it loaded alongside the bundled Pinchy plugins:
services: openclaw: volumes: - /opt/my-extensions:/root/.openclaw/extensions/custom:roMount read-only (:ro) when possible — OpenClaw reads extensions at startup; it doesn’t need write access.
What’s not supported
Section titled “What’s not supported”The override file is for additions, not replacements. The following are outside the supported surface and may break on any release:
- Replacing the
image:on eitherpinchyorpinchy-openclawwith a different image - Renaming volumes, services, or networks
- Rewiring inter-service dependencies or health checks
- Changing the Postgres image to a non-17 version
If you find yourself needing any of these, open an issue — your use case might belong in core Pinchy rather than in an override.
Testing overrides
Section titled “Testing overrides”Before running docker compose up -d, check the merged config:
docker compose configThis prints the effective configuration (base + override merged) without starting anything. Use it to verify your override does what you expect.
Overrides and upgrades
Section titled “Overrides and upgrades”Your docker-compose.override.yml survives upgrades unchanged. However, if a new Pinchy release changes a base-file field you’re overriding (for example, renames a volume), the merge may produce an unexpected result. Re-check docker compose config after every major release.