Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions docs/cosign.pub
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEwjpB/sBbBjFs3HEPgNsyUtri06uu
fB1nrsjGTSFHYAAfPDPQD2q+zUWF58tzpwhvvwZRhjpcqoBrIUbQzOSk5g==
-----END PUBLIC KEY-----
14 changes: 14 additions & 0 deletions docs/deployment.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Loading