Contributions to opencode-docker are welcome from anyone.
- Fork the repository and create a branch off
mainfor your change. - Make your change. Keep the container's security posture intact — the privilege-drop, capability set, and credential opt-in model are load-bearing (see Threat model).
- Non-trivial behaviour changes are tracked with OpenSpec change proposals
under
openspec/changes/; follow the existing ones as a template. - Open a PR against
main; a maintainer will review before it is merged.
By submitting a contribution, you agree that it is licensed under the Apache License 2.0, the same license as the project.
CI runs these on every PR; running them locally first is faster:
# Lint shell scripts and the Dockerfile
shellcheck run.sh entrypoint.sh smoke/*.sh
hadolint --config .hadolint.yaml Dockerfile
# Unit tests for the pin tooling
python3 -m unittest discover -s tests -p 'test_*.py' -v
# Build the image and run a smoke cell against it
docker build -t opencode:local .
IMAGE=opencode:local bash smoke/smoke.sh --uid="$(id -u)" --optins=aws,glab,tfeSee README.md for the full architecture, threat model, and the
version-pin refresh workflow (update_pins.py).