Confirm that a 2501 container image is authentic and unmodified, using a public key you hold and no 2501 service
Every container image 2501 publishes is signed with a single ECDSA P-256 key held in AWS KMS. The private half is non-exportable and never leaves KMS. We publish the public half so you can verify any image against a key you hold, with no call to a 2501 service, using cosign.
We announce any key rotation in the release notes, so treat an unannounced change as a verification failure. A superseded key stays published under a dated name, so images signed with it remain verifiable.
--insecure-ignore-tlog=true is required. We sign without publishing to the public Rekor transparency log, so verification rests on the key alone. The flag disables the transparency-log lookup, not the signature check.
--key also accepts a local file, so the check needs no route to us once the key is on the host. Fetch the key on a connected machine, confirm its fingerprint, then carry it across:
cosign stores the signature and the SBOM attestation in the registry beside the image, under tags derived from its digest. A mirrored or air-gapped registry has to carry those across too, or there is nothing left to verify against. cosign save writes the image and both to disk for transfer and cosign load pushes them into the destination registry; oras copy -r does the same registry to registry.
On Kubernetes you can reject unsigned images at admission rather than verifying them by hand. Any policy engine with cosign key verification works, Kyverno and the Sigstore Policy Controller among them: point it at the same key, and disable the transparency-log check as above. This is how 2501 operates its own clusters.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"2501.ai","colors":{"primary":"#121212","light":"#FAFAFA","dark":"#121212"},"logo":{"light":"https://mintcdn.com/2501/gMl_w8qww9Zl47hO/logo/light.png?fit=max\u0026auto=format\u0026n=gMl_w8qww9Zl47hO\u0026q=85\u0026s=eeeb37b3ca386a00dde53b3e6235adce","dark":"https://mintcdn.com/2501/gMl_w8qww9Zl47hO/logo/dark.png?fit=max\u0026auto=format\u0026n=gMl_w8qww9Zl47hO\u0026q=85\u0026s=4d0ac2514d479eb43fe361193d12c495","href":"/0.7/getting-started/welcome"},"favicon":"https://mintcdn.com/2501/gMl_w8qww9Zl47hO/favicon.png?fit=max\u0026auto=format\u0026n=gMl_w8qww9Zl47hO\u0026q=85\u0026s=884be98d09b5672f470de49ac6430f22","appearance":{"default":"light"},"background":{"color":{"light":"#FAFAFA","dark":"#121212"}},"navbar":{"links":[{"href":"mailto:hello@2501.ai","label":"Contact"},{"href":"https://github.com/2501-ai","label":"Github"},{"href":"https://2501.ai/","label":"Website"}]},"footer":{"socials":{"website":"https://www.2501.ai/","github":"https://github.com/2501-ai","linkedin":"https://www.linkedin.com/company/99099126"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"2501","hasAudioNarration":false,"actualSubdomain":"2501","customDomains":["docs.2501.ai"],"gitSource":{"type":"github","owner":"2501-ai","repo":"2501","deployBranch":"main","contentDirectory":"apps/public-docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae88211eb73d12669c24e86","collectionId":"bf899a76-8fcc-43c2-86bb-43d288756ca1","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae88211eb73d12669c24e86"},"entitlements":{},"buildId":"6ae8a651a2a5e46fe178bab3","clientVersion":"0.0.4044","searchFilterCounts":[{"language":"default","tag":"Reference","count":966},{"language":"default","tag":"API","count":498},{"language":"default","tag":"Configure","count":303},{"language":"default","tag":"Guides","count":195},{"language":"default","tag":"Docs","count":189},{"language":"default","tag":"Benchmark","count":175},{"language":"default","tag":"Deploy","count":125},{"language":"default","tag":"Agents","count":121},{"language":"default","tag":"Integration","count":119},{"language":"default","tag":"Concepts","count":111}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"0.15/deployment/verify-downloads","slug":"/0.15/deployment/verify-downloads","pageMetadata":{"title":"Verify Image Signatures","description":"Confirm that a 2501 container image is authentic and unmodified, using a public key you hold and no 2501 service","href":"/0.15/deployment/verify-downloads"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Confirm that a 2501 container image is authentic and unmodified, using a public key you hold and no 2501 service\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,pre:`pre`,span:`span`,..._provideComponents(),...props.components},{CodeBlock,Heading,Note}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Every container image 2501 publishes is signed with a single ECDSA P-256 key held in AWS KMS. The private half is non-exportable and never leaves KMS. We publish the public half so you can verify any image against a key you hold, with no call to a 2501 service, using `,_jsx(_components.a,{href:`https://github.com/sigstore/cosign`,children:`cosign`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`signing-key`,children:`Signing key`}),`\n`,_jsx(CodeBlock,{numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`https://keys.2501.ai/cosign.pub`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(_components.p,{children:`Download the key once and keep your own copy. Its SHA-256 fingerprint is:`}),`\n`,_jsx(CodeBlock,{numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`9bd13e17f78c78dfd21a4b1c8c19804df24f501620a27d5a25fa24c56eaa2d55`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(_components.p,{children:`Check what you downloaded against it, and pin that fingerprint in your own procedures:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -fsSL`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://keys.2501.ai/cosign.pub`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` |`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` sha256sum`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`We announce any key rotation in the release notes, so treat an unannounced change as a verification failure. A superseded key stays published under a dated name, so images signed with it remain verifiable.`}),`\n`,_jsx(Heading,{level:`2`,id:`verify-an-image`,children:`Verify an image`}),`\n`,_jsx(_components.p,{children:`Verify against the image digest, not the tag: a tag can be reassigned, a digest cannot.`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`4`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`cosign`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` verify`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --key`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://keys.2501.ai/cosign.pub`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --insecure-ignore-tlog=true`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`registr`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`y`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`/2501.ai/engine@sha256:`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`diges`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`t`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`If verification fails, do not deploy the image. Keep the digest and the cosign output, and contact 2501 support.`}),`\n`,_jsx(Heading,{level:`2`,id:`verify-the-sbom`,children:`Verify the SBOM`}),`\n`,_jsx(_components.p,{children:`Every image carries a software bill of materials (SBOM), the full list of packages it contains, in SPDX format. It is signed with the same key:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`5`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`cosign`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` verify-attestation`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --key`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://keys.2501.ai/cosign.pub`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --insecure-ignore-tlog=true`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --type`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` spdxjson`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`registr`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`y`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`/2501.ai/engine@sha256:`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`diges`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`t`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`})]}),`\n`]})})}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`--insecure-ignore-tlog=true`}),` is required. We sign without publishing to the public Rekor transparency log, so verification rests on the key alone. The flag disables the transparency-log lookup, not the signature check.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`verify-without-network-access`,children:`Verify without network access`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`--key`}),` also accepts a local file, so the check needs no route to us once the key is on the host. Fetch the key on a connected machine, confirm its fingerprint, then carry it across:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`4`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`cosign`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` verify`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --key`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` cosign.pub`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --insecure-ignore-tlog=true`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`registr`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`y`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`/2501.ai/engine@sha256:`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`diges`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`t`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`cosign stores the signature and the SBOM attestation in the registry beside the image, under tags derived from its digest. A mirrored or air-gapped registry has to carry those across too, or there is nothing left to verify against. `,_jsx(_components.code,{children:`cosign save`}),` writes the image and both to disk for transfer and `,_jsx(_components.code,{children:`cosign load`}),` pushes them into the destination registry; `,_jsx(_components.code,{children:`oras copy -r`}),` does the same registry to registry.`]}),`\n`,_jsx(Heading,{level:`2`,id:`enforce-verification-at-admission`,children:`Enforce verification at admission`}),`\n`,_jsx(_components.p,{children:`On Kubernetes you can reject unsigned images at admission rather than verifying them by hand. Any policy engine with cosign key verification works, Kyverno and the Sigstore Policy Controller among them: point it at the same key, and disable the transparency-log check as above. This is how 2501 operates its own clusters.`})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Verify Image Signatures","description":"Confirm that a 2501 container image is authentic and unmodified, using a public key you hold and no 2501 service","href":"/0.15/deployment/verify-downloads"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Signing key","slug":"signing-key","depth":2,"children":[]},{"title":"Verify an image","slug":"verify-an-image","depth":2,"children":[]},{"title":"Verify the SBOM","slug":"verify-the-sbom","depth":2,"children":[]},{"title":"Verify without network access","slug":"verify-without-network-access","depth":2,"children":[]},{"title":"Enforce verification at admission","slug":"enforce-verification-at-admission","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"2501","siteName":"2501.ai","title":"Verify Image Signatures - 2501.ai","navMaps":{"firstHrefInVersion":{"0.19":{"href":"/0.19/deployment/verify-downloads","matchLevel":1},"0.18":{"href":"/0.18/deployment/verify-downloads","matchLevel":1},"0.17":{"href":"/0.17/deployment/verify-downloads","matchLevel":1},"0.16":{"href":"/0.16/deployment/verify-downloads","matchLevel":1},"0.15":{"href":"/0.15/deployment/verify-downloads","matchLevel":0},"0.14":{"href":"/0.14/deployment/overview","matchLevel":2},"0.13":{"href":"/0.13/deployment/overview","matchLevel":2},"0.12":{"href":"/0.12/deployment/overview","matchLevel":2},"0.11":{"href":"/0.11/deployment/overview","matchLevel":2},"0.10":{"href":"/0.10/deployment/overview","matchLevel":2},"0.9":{"href":"/0.9/deployment/overview","matchLevel":2},"0.8":{"href":"/0.8/deployment/overview","matchLevel":2},"0.7":{"href":"/0.7/deployment/overview","matchLevel":2},"0.4":{"href":"/0.4/command-center","matchLevel":4},"0.3.0":{"href":"/0.3.0/command-center","matchLevel":4},"0.2.6":{"href":"/0.2.6/command-center","matchLevel":4}},"firstHrefInLanguage":{}},"lastModified":"2026-09-23T13:20:17.599Z","originalFileLocation":"0.15/deployment/verify-downloads.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"light\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Confirm that a 2501 container image is authentic and unmodified, using a public key you hold and no 2501 service\">\u003cmeta data-mint-head name=\"application-name\" content=\"2501.ai\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/2501/ur2ley-wQyHAsGwc/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/2501/ur2ley-wQyHAsGwc/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/2501/ur2ley-wQyHAsGwc/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/2501/ur2ley-wQyHAsGwc/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/2501/ur2ley-wQyHAsGwc/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/2501/ur2ley-wQyHAsGwc/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/2501/ur2ley-wQyHAsGwc/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/2501/ur2ley-wQyHAsGwc/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/2501/ur2ley-wQyHAsGwc/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Verify Image Signatures - 2501.ai\">\u003cmeta data-mint-head property=\"og:description\" content=\"Confirm that a 2501 container image is authentic and unmodified, using a public key you hold and no 2501 service\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"2501.ai\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.2501.ai/0.15/deployment/verify-downloads\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://2501.mintlify.app/_mintlify/api/og/v2?division=Deploy\u0026amp;title=Verify+Image+Signatures\u0026amp;description=Confirm+that+a+2501+container+image+is+authentic+and+unmodified%2C+using+a+public+key+you+hold+and+no+2501+service\u0026amp;theme=f33d4ade6ddd98c4a45fdcd4\u0026amp;signature=3c52a6ac369cc41fba291e92e70e1d0397838a034a7c704d659e12a412778d31\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Verify Image Signatures - 2501.ai\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Confirm that a 2501 container image is authentic and unmodified, using a public key you hold and no 2501 service\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://2501.mintlify.app/_mintlify/api/og/v2?division=Deploy\u0026amp;title=Verify+Image+Signatures\u0026amp;description=Confirm+that+a+2501+container+image+is+authentic+and+unmodified%2C+using+a+public+key+you+hold+and+no+2501+service\u0026amp;theme=f33d4ade6ddd98c4a45fdcd4\u0026amp;signature=3c52a6ac369cc41fba291e92e70e1d0397838a034a7c704d659e12a412778d31\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/2501/ur2ley-wQyHAsGwc/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"2501.ai\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#121212\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.2501.ai/0.15/deployment/verify-downloads\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/0.15/deployment/verify-downloads.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.2501.ai/#organization\",\"name\":\"2501.ai\",\"url\":\"https://docs.2501.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/2501/gMl_w8qww9Zl47hO/logo/light.png?fit=max\u0026auto=format\u0026n=gMl_w8qww9Zl47hO\u0026q=85\u0026s=eeeb37b3ca386a00dde53b3e6235adce\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.2501.ai#website\",\"name\":\"2501.ai\",\"url\":\"https://docs.2501.ai\",\"publisher\":{\"@id\":\"https://docs.2501.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.2501.ai/0.15/deployment/verify-downloads#webpage\",\"url\":\"https://docs.2501.ai/0.15/deployment/verify-downloads\",\"name\":\"Verify Image Signatures\",\"description\":\"Confirm that a 2501 container image is authentic and unmodified, using a public key you hold and no 2501 service\",\"dateModified\":\"2026-09-23T13:20:17.599Z\",\"isPartOf\":{\"@id\":\"https://docs.2501.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.2501.ai/0.15/deployment/verify-downloads#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.2501.ai/0.15/deployment/verify-downloads#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Deploy\",\"item\":\"https://docs.2501.ai/0.15/deployment/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Verify Image Signatures\",\"item\":\"https://docs.2501.ai/0.15/deployment/verify-downloads\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.2501.ai/0.15/deployment/verify-downloads#article\",\"headline\":\"Verify Image Signatures\",\"name\":\"Verify Image Signatures\",\"description\":\"Confirm that a 2501 container image is authentic and unmodified, using a public key you hold and no 2501 service\",\"url\":\"https://docs.2501.ai/0.15/deployment/verify-downloads\",\"mainEntityOfPage\":{\"@id\":\"https://docs.2501.ai/0.15/deployment/verify-downloads#webpage\"},\"dateModified\":\"2026-09-23T13:20:17.599Z\",\"publisher\":{\"@id\":\"https://docs.2501.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.2501.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"2501.ai\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"2501.ai","nav":{"global":null,"versions":[{"version":"0.19","pages":[{"title":"0.19","href":"/0.19/deployment/verify-downloads"}]},{"version":"0.18","pages":[{"title":"0.18","href":"/0.18/deployment/verify-downloads"}]},{"version":"0.17","pages":[{"title":"0.17","href":"/0.17/deployment/verify-downloads"}]},{"version":"0.16","pages":[{"title":"0.16","href":"/0.16/deployment/verify-downloads"}]},{"version":"0.15","tabs":[{"tab":"Docs","pages":[{"title":"Docs","href":"/0.15/getting-started/welcome"}]},{"tab":"Reference","groups":[{"group":"API","pages":[{"title":"API Overview","href":"/0.15/api/overview"},{"group":"Specialties","pages":[{"title":"List specialties","deprecated":null,"version":null,"openapi":"/0.15/openapi.json get /api/v1/specialties","href":"/0.15/api-reference/specialties/list-specialties"},{"title":"Create a specialty","deprecated":null,"version":null,"openapi":"/0.15/openapi.json post /api/v1/specialties","href":"/0.15/api-reference/specialties/create-a-specialty"},{"title":"Search specialties","deprecated":null,"version":null,"openapi":"/0.15/openapi.json get /api/v1/specialties/search","href":"/0.15/api-reference/specialties/search-specialties"},{"title":"Get a specialty","deprecated":null,"version":null,"openapi":"/0.15/openapi.json get /api/v1/specialties/{id}","href":"/0.15/api-reference/specialties/get-a-specialty"},{"title":"Update a specialty","deprecated":null,"version":null,"openapi":"/0.15/openapi.json post /api/v1/specialties/{id}","href":"/0.15/api-reference/specialties/update-a-specialty"},{"title":"Delete a specialty","deprecated":null,"version":null,"openapi":"/0.15/openapi.json delete /api/v1/specialties/{id}","href":"/0.15/api-reference/specialties/delete-a-specialty"},{"title":"Count what references a specialty","deprecated":null,"version":null,"openapi":"/0.15/openapi.json get /api/v1/specialties/{id}/references","href":"/0.15/api-reference/specialties/count-what-references-a-specialty"}]},{"group":"Blacklists","pages":[{"title":"List blacklisted commands","deprecated":null,"version":null,"openapi":"/0.15/openapi.json get /api/v1/blacklists","href":"/0.15/api-reference/blacklists/list-blacklisted-commands"},{"title":"Create a blacklisted command","deprecated":null,"version":null,"openapi":"/0.15/openapi.json post /api/v1/blacklists","href":"/0.15/api-reference/blacklists/create-a-blacklisted-command"},{"title":"Search blacklisted commands","deprecated":null,"version":null,"openapi":"/0.15/openapi.json get /api/v1/blacklists/search","href":"/0.15/api-reference/blacklists/search-blacklisted-commands"},{"title":"Get a blacklisted command","deprecated":null,"version":null,"openapi":"/0.15/openapi.json get /api/v1/blacklists/{id}","href":"/0.15/api-reference/blacklists/get-a-blacklisted-command"},{"title":"Update a blacklisted command","deprecated":null,"version":null,"openapi":"/0.15/openapi.json post /api/v1/blacklists/{id}","href":"/0.15/api-reference/blacklists/update-a-blacklisted-command"},{"title":"Delete a blacklisted command","deprecated":null,"version":null,"openapi":"/0.15/openapi.json delete /api/v1/blacklists/{id}","href":"/0.15/api-reference/blacklists/delete-a-blacklisted-command"}]},{"group":"Gateways","pages":[{"title":"List gateways","deprecated":null,"version":null,"openapi":"/0.15/openapi.json get /api/v1/gateways","href":"/0.15/api-reference/gateways/list-gateways"},{"title":"Create a gateway","deprecated":null,"version":null,"openapi":"/0.15/openapi.json post /api/v1/gateways","href":"/0.15/api-reference/gateways/create-a-gateway"},{"title":"Search gateways","deprecated":null,"version":null,"openapi":"/0.15/openapi.json get /api/v1/gateways/search","href":"/0.15/api-reference/gateways/search-gateways"},{"title":"Get a gateway","deprecated":null,"version":null,"openapi":"/0.15/openapi.json get /api/v1/gateways/{id}","href":"/0.15/api-reference/gateways/get-a-gateway"},{"title":"Update a gateway","deprecated":null,"version":null,"openapi":"/0.15/openapi.json post /api/v1/gateways/{id}","href":"/0.15/api-reference/gateways/update-a-gateway"},{"title":"Delete a gateway","deprecated":null,"version":null,"openapi":"/0.15/openapi.json delete /api/v1/gateways/{id}","href":"/0.15/api-reference/gateways/delete-a-gateway"},{"title":"Count what references a gateway","deprecated":null,"version":null,"openapi":"/0.15/openapi.json get /api/v1/gateways/{id}/references","href":"/0.15/api-reference/gateways/count-what-references-a-gateway"}]},{"group":"Hosts","pages":[{"title":"List hosts","deprecated":null,"version":null,"openapi":"/0.15/openapi.json get /api/v1/hosts","href":"/0.15/api-reference/hosts/list-hosts"},{"title":"Create a host","deprecated":null,"version":null,"openapi":"/0.15/openapi.json post /api/v1/hosts","href":"/0.15/api-reference/hosts/create-a-host"},{"title":"Search hosts","deprecated":null,"version":null,"openapi":"/0.15/openapi.json get /api/v1/hosts/search","href":"/0.15/api-reference/hosts/search-hosts"},{"title":"Bulk import hosts","deprecated":null,"version":null,"openapi":"/0.15/openapi.json post /api/v1/hosts/batch","href":"/0.15/api-reference/hosts/bulk-import-hosts"},{"title":"Bulk export hosts","deprecated":null,"version":null,"openapi":"/0.15/openapi.json get /api/v1/hosts/export","href":"/0.15/api-reference/hosts/bulk-export-hosts"},{"title":"Get a host","deprecated":null,"version":null,"openapi":"/0.15/openapi.json get /api/v1/hosts/{id}","href":"/0.15/api-reference/hosts/get-a-host"},{"title":"Update a host","deprecated":null,"version":null,"openapi":"/0.15/openapi.json post /api/v1/hosts/{id}","href":"/0.15/api-reference/hosts/update-a-host"},{"title":"Delete a host","deprecated":null,"version":null,"openapi":"/0.15/openapi.json delete /api/v1/hosts/{id}","href":"/0.15/api-reference/hosts/delete-a-host"},{"title":"List a host agents","deprecated":null,"version":null,"openapi":"/0.15/openapi.json get /api/v1/hosts/{id}/agents","href":"/0.15/api-reference/hosts/list-a-host-agents"}]},{"group":"Agents","pages":[{"title":"List agents","deprecated":null,"version":null,"openapi":"/0.15/openapi.json get /api/v1/agents","href":"/0.15/api-reference/agents/list-agents"},{"title":"Create an agent","deprecated":null,"version":null,"openapi":"/0.15/openapi.json post /api/v1/agents","href":"/0.15/api-reference/agents/create-an-agent"},{"title":"Search agents","deprecated":null,"version":null,"openapi":"/0.15/openapi.json get /api/v1/agents/search","href":"/0.15/api-reference/agents/search-agents"},{"title":"Bulk import agents","deprecated":null,"version":null,"openapi":"/0.15/openapi.json post /api/v1/agents/batch","href":"/0.15/api-reference/agents/bulk-import-agents"},{"title":"Bulk export agents","deprecated":null,"version":null,"openapi":"/0.15/openapi.json get /api/v1/agents/export","href":"/0.15/api-reference/agents/bulk-export-agents"},{"title":"Get an agent","deprecated":null,"version":null,"openapi":"/0.15/openapi.json get /api/v1/agents/{id}","href":"/0.15/api-reference/agents/get-an-agent"},{"title":"Update an agent","deprecated":null,"version":null,"openapi":"/0.15/openapi.json post /api/v1/agents/{id}","href":"/0.15/api-reference/agents/update-an-agent"},{"title":"Archive an agent","deprecated":null,"version":null,"openapi":"/0.15/openapi.json post /api/v1/agents/{id}/archive","href":"/0.15/api-reference/agents/archive-an-agent"},{"title":"Archive idle tasks","deprecated":null,"version":null,"openapi":"/0.15/openapi.json post /api/v1/agents/{id}/archive-tasks","href":"/0.15/api-reference/agents/archive-idle-tasks"},{"title":"List an agent tasks","deprecated":null,"version":null,"openapi":"/0.15/openapi.json get /api/v1/agents/{id}/tasks","href":"/0.15/api-reference/agents/list-an-agent-tasks"},{"title":"Test the connection","deprecated":null,"version":null,"openapi":"/0.15/openapi.json post /api/v1/agents/{id}/test-connection","href":"/0.15/api-reference/agents/test-the-connection"},{"title":"List an agent plugins","deprecated":null,"version":null,"openapi":"/0.15/openapi.json get /api/v1/agents/{id}/plugins","href":"/0.15/api-reference/agents/list-an-agent-plugins"},{"title":"Attach a plugin","deprecated":null,"version":null,"openapi":"/0.15/openapi.json post /api/v1/agents/{id}/plugins","href":"/0.15/api-reference/agents/attach-a-plugin"},{"title":"Detach a plugin","deprecated":null,"version":null,"openapi":"/0.15/openapi.json delete /api/v1/agents/{id}/plugins/{pluginId}","href":"/0.15/api-reference/agents/detach-a-plugin"}]},{"group":"Credentials","pages":[{"title":"List credentials","deprecated":null,"version":null,"openapi":"/0.15/openapi.json get /api/v1/credentials","href":"/0.15/api-reference/credentials/list-credentials"},{"title":"Create a credential","deprecated":null,"version":null,"openapi":"/0.15/openapi.json post /api/v1/credentials","href":"/0.15/api-reference/credentials/create-a-credential"},{"title":"Search credentials","deprecated":null,"version":null,"openapi":"/0.15/openapi.json get /api/v1/credentials/search","href":"/0.15/api-reference/credentials/search-credentials"},{"title":"Get a credential","deprecated":null,"version":null,"openapi":"/0.15/openapi.json get /api/v1/credentials/{id}","href":"/0.15/api-reference/credentials/get-a-credential"},{"title":"Update a credential","deprecated":null,"version":null,"openapi":"/0.15/openapi.json post /api/v1/credentials/{id}","href":"/0.15/api-reference/credentials/update-a-credential"},{"title":"Delete a credential","deprecated":null,"version":null,"openapi":"/0.15/openapi.json delete /api/v1/credentials/{id}","href":"/0.15/api-reference/credentials/delete-a-credential"},{"title":"Get credential usage","deprecated":null,"version":null,"openapi":"/0.15/openapi.json get /api/v1/credentials/{id}/references","href":"/0.15/api-reference/credentials/get-credential-usage"}]},{"group":"Operational Rules","pages":[{"title":"List operational rules","deprecated":null,"version":null,"openapi":"/0.15/openapi.json get /api/v1/operational-rules","href":"/0.15/api-reference/operational-rules/list-operational-rules"},{"title":"Create an operational rule","deprecated":null,"version":null,"openapi":"/0.15/openapi.json post /api/v1/operational-rules","href":"/0.15/api-reference/operational-rules/create-an-operational-rule"},{"title":"Search operational rules","deprecated":null,"version":null,"openapi":"/0.15/openapi.json get /api/v1/operational-rules/search","href":"/0.15/api-reference/operational-rules/search-operational-rules"},{"title":"Get an operational rule","deprecated":null,"version":null,"openapi":"/0.15/openapi.json get /api/v1/operational-rules/{id}","href":"/0.15/api-reference/operational-rules/get-an-operational-rule"},{"title":"Update an operational rule","deprecated":null,"version":null,"openapi":"/0.15/openapi.json post /api/v1/operational-rules/{id}","href":"/0.15/api-reference/operational-rules/update-an-operational-rule"},{"title":"Delete an operational rule","deprecated":null,"version":null,"openapi":"/0.15/openapi.json delete /api/v1/operational-rules/{id}","href":"/0.15/api-reference/operational-rules/delete-an-operational-rule"}]}]},{"group":"CLI","pages":[{"title":"2501 CLI","href":"/0.15/cli/overview"},{"title":"login \u0026 status","href":"/0.15/cli/login-status"},{"title":"resources","href":"/0.15/cli/resources"},{"title":"infra","href":"/0.15/cli/infra"},{"title":"runner","href":"/0.15/cli/runner"},{"title":"chat","href":"/0.15/cli/chat"}]},{"group":"Deploy","pages":[{"title":"Overview","href":"/0.15/deployment/overview"},{"title":"Init Command","href":"/0.15/deployment/init-command"},{"title":"Configuration","href":"/0.15/deployment/configuration"},{"title":"Docker Swarm","href":"/0.15/deployment/docker-swarm"},{"title":"Kubernetes","href":"/0.15/deployment/kubernetes"},{"title":"LLM Providers","href":"/0.15/deployment/llm-providers"},{"title":"Users \u0026 Organizations","href":"/0.15/deployment/users-organizations"},{"title":"Troubleshooting","href":"/0.15/deployment/troubleshooting"},{"title":"Feature Toggles","description":"Toggle experimental and optional behaviors on or off","href":"/0.15/deployment/feature-toggles"},{"title":"Verify Image Signatures","href":"/0.15/deployment/verify-downloads"}]},{"group":"Configure","pages":[{"group":"Agent Behavior","pages":[{"title":"Specialties","description":"Configure your agent for specific task domains","href":"/0.15/configure/specialties"},{"title":"Operational Rules","href":"/0.15/configure/operational-rules"},{"title":"Blacklist","href":"/0.15/configure/blacklist"}]},{"title":"Clusters","href":"/0.15/configure/clusters"},{"title":"Knowledge Base","href":"/0.15/configure/knowledge"},{"title":"Import and Export","href":"/0.15/configure/import-export"},{"group":"Access \u0026 Secrets","pages":[{"title":"Credentials","href":"/0.15/configure/credentials"},{"title":"API Keys","href":"/0.15/configure/api-keys"},{"title":"Plugins","href":"/0.15/configure/plugins"}]},{"group":"Integration","pages":[{"title":"Webhooks","href":"/0.15/configure/webhooks"},{"title":"Configuration as Code","href":"/0.15/configure/configuration-as-code"},{"group":"Resource Reference","pages":[{"title":"Agent","href":"/0.15/configure/resources/agents"},{"title":"Host","href":"/0.15/configure/resources/hosts"},{"title":"Specialty","href":"/0.15/configure/resources/specialties"},{"title":"Operational Rule","href":"/0.15/configure/resources/operational-rules"},{"title":"Credential","href":"/0.15/configure/resources/credentials"},{"title":"Gateway","href":"/0.15/configure/resources/gateways"},{"title":"Blacklist","href":"/0.15/configure/resources/blacklist"}]},{"title":"Network Discovery","href":"/0.15/configure/discovery"}]},{"group":"LLM","pages":[{"title":"Providers","href":"/0.15/configure/providers"},{"title":"Models","href":"/0.15/configure/models"}]},{"title":"Users","href":"/0.15/configure/users"},{"title":"Licensing \u0026 Usage","href":"/0.15/configure/licensing"}]}]},{"tab":"Benchmark","pages":[{"title":"Benchmark","href":"/0.15/benchmark/overview"}]},{"tab":"Guides","pages":[{"title":"Guides","href":"/0.15/configure/prompting"}]}]},{"version":"0.14","pages":[{"title":"0.14","href":"/0.14/deployment/overview"}]},{"version":"0.13","pages":[{"title":"0.13","href":"/0.13/deployment/overview"}]},{"version":"0.12","pages":[{"title":"0.12","href":"/0.12/deployment/overview"}]},{"version":"0.11","pages":[{"title":"0.11","href":"/0.11/deployment/overview"}]},{"version":"0.10","pages":[{"title":"0.10","href":"/0.10/deployment/overview"}]},{"version":"0.9","pages":[{"title":"0.9","href":"/0.9/deployment/overview"}]},{"version":"0.8","pages":[{"title":"0.8","href":"/0.8/deployment/overview"}]},{"version":"0.7","pages":[{"title":"0.7","href":"/0.7/deployment/overview"}]},{"version":"0.4","pages":[{"title":"0.4","href":"/0.4/command-center"}]},{"version":"0.3.0","pages":[{"title":"0.3.0","href":"/0.3.0/command-center"}]},{"version":"0.2.6","pages":[{"title":"0.2.6","href":"/0.2.6/command-center"}]}]},"basePath":"","title":"Verify Image Signatures - 2501.ai","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":[],"chunks":[]}