From 9e484c77a941ef80cb00f3418a0243f5da45ae89 Mon Sep 17 00:00:00 2001 From: David McKay Date: Thu, 12 Nov 2026 17:45:43 -0800 Subject: [PATCH] Publish the key that signs OpenBot's images docs/cosign.pub is the public half of the key OpenBot's container images are signed with, and docs/deployment.md says how to check an image against it with cosign before deploying. --- docs/cosign.pub | 4 ++++ docs/deployment.md | 14 ++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 docs/cosign.pub diff --git a/docs/cosign.pub b/docs/cosign.pub new file mode 100644 index 0000000000..b1e58eb7d5 --- /dev/null +++ b/docs/cosign.pub @@ -0,0 +1,4 @@ +-----BEGIN PUBLIC KEY----- +MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEwjpB/sBbBjFs3HEPgNsyUtri06uu +fB1nrsjGTSFHYAAfPDPQD2q+zUWF58tzpwhvvwZRhjpcqoBrIUbQzOSk5g== +-----END PUBLIC KEY----- diff --git a/docs/deployment.md b/docs/deployment.md index e61908cd52..e688644c59 100644 --- a/docs/deployment.md +++ b/docs/deployment.md @@ -20,6 +20,20 @@ docker run -p 3001:3001 --env-file .env \ their own. What a release publishes is digest-pinned in its `container-images.json`, and deploying those digests rather than a moving tag is what [releasing.md](releasing.md) recommends. +## Checking an image's signature + +OpenBot's images are signed with OpenBot's own key. The public half is [cosign.pub](cosign.pub), and +[cosign](https://docs.sigstore.dev/cosign/) checks an image against it before you deploy: + +```sh +cosign verify --key docs/cosign.pub --insecure-ignore-tlog=true ghcr.io/copilotkit/openbot-server:main +``` + +The same command checks `ghcr.io/copilotkit/openbot`, `openbot-agent-computer` and +`openbot-supervisor`, at any tag published from now on; images from v1.0.2 and earlier carry no +signature. The signatures are not recorded in a public transparency log, which is what +`--insecure-ignore-tlog=true` tells cosign to expect. The key is what proves the image is OpenBot's. + ## What is in the image, and what is not **In it:** the built app, the API, and Chromium. One port, 3001. The browser listens on 4100 inside