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.
Every file of a Release on github.com/2501-ai/install comes with its signature, <file>.bundle, made with the same key. Verify each file before you apply it:
If verification fails, do not use the file: download it again, and contact 2501 support if it still fails.The chart and compose.yaml carry the digest of every image they run, so a verified file installs only the images it was built with. Verify those images too when you copy them into your registry.
The chart of each build is also at oci://ghcr.io/2501-ai/charts/2501, with the build as its version, signed with the same key. Verify it before Helm or ArgoCD pulls it:
--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":"6ae8a0dbdffaaabdc1be497f","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.19/deployment/verify-downloads","slug":"/0.19/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.19/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:`/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-installation-files`,children:`Verify the installation files`}),`\n`,_jsxs(_components.p,{children:[`Every file of a Release on `,_jsx(_components.a,{href:`https://github.com/2501-ai/install`,children:`github.com/2501-ai/install`}),` comes with its signature, `,_jsx(_components.code,{children:`\u003cfile>.bundle`}),`, made with the same key. Verify each file before you apply it:`]}),`\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-blob`}),_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:` --bundle`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 2501-`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`buil`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`d`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`.tgz.bundle`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 2501-`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`buil`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`d`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`.tgz`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`If verification fails, do not use the file: download it again, and contact 2501 support if it still fails.`}),`\n`,_jsxs(_components.p,{children:[`The chart and `,_jsx(_components.code,{children:`compose.yaml`}),` carry the digest of every image they run, so a verified file installs only the images it was built with. Verify those images too when you copy them into your registry.`]}),`\n`,_jsx(Heading,{level:`2`,id:`verify-the-chart-in-the-registry`,children:`Verify the chart in the registry`}),`\n`,_jsxs(_components.p,{children:[`The chart of each build is also at `,_jsx(_components.code,{children:`oci://ghcr.io/2501-ai/charts/2501`}),`, with the build as its version, signed with the same key. Verify it before Helm or ArgoCD pulls it:`]}),`\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:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` ghcr.io/2501-ai/charts/2501:`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`buil`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`d`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`})]}),`\n`]})})}),`\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:`/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:`/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.19/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 installation files","slug":"verify-the-installation-files","depth":2,"children":[]},{"title":"Verify the chart in the registry","slug":"verify-the-chart-in-the-registry","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":0},"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":1},"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-11-02T12:29:39.747Z","originalFileLocation":"0.19/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.19/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.19/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.19/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.19/deployment/verify-downloads#webpage\",\"url\":\"https://docs.2501.ai/0.19/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-11-02T12:29:39.747Z\",\"isPartOf\":{\"@id\":\"https://docs.2501.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.2501.ai/0.19/deployment/verify-downloads#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.2501.ai/0.19/deployment/verify-downloads#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Deploy\",\"item\":\"https://docs.2501.ai/0.19/deployment/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Verify Image Signatures\",\"item\":\"https://docs.2501.ai/0.19/deployment/verify-downloads\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.2501.ai/0.19/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.19/deployment/verify-downloads\",\"mainEntityOfPage\":{\"@id\":\"https://docs.2501.ai/0.19/deployment/verify-downloads#webpage\"},\"dateModified\":\"2026-11-02T12:29:39.747Z\",\"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","tabs":[{"tab":"Docs","pages":[{"title":"Docs","href":"/0.19/getting-started/welcome"}]},{"tab":"Reference","groups":[{"group":"API","pages":[{"title":"API Overview","href":"/0.19/api/overview"},{"group":"Plugins","pages":[{"title":"List plugins","deprecated":null,"version":null,"openapi":"/0.19/openapi.json get /api/v1/plugins","href":"/0.19/api-reference/plugins/list-plugins"},{"title":"Create a plugin","deprecated":null,"version":null,"openapi":"/0.19/openapi.json post /api/v1/plugins","href":"/0.19/api-reference/plugins/create-a-plugin"},{"title":"Search plugins","deprecated":null,"version":null,"openapi":"/0.19/openapi.json get /api/v1/plugins/search","href":"/0.19/api-reference/plugins/search-plugins"},{"title":"Get a plugin","deprecated":null,"version":null,"openapi":"/0.19/openapi.json get /api/v1/plugins/{id}","href":"/0.19/api-reference/plugins/get-a-plugin"},{"title":"Update a plugin","deprecated":null,"version":null,"openapi":"/0.19/openapi.json post /api/v1/plugins/{id}","href":"/0.19/api-reference/plugins/update-a-plugin"},{"title":"Delete a plugin","deprecated":null,"version":null,"openapi":"/0.19/openapi.json delete /api/v1/plugins/{id}","href":"/0.19/api-reference/plugins/delete-a-plugin"},{"title":"List HTTP API documentation files","deprecated":null,"version":null,"openapi":"/0.19/openapi.json get /api/v1/plugins/{id}/documents","href":"/0.19/api-reference/plugins/list-http-api-documentation-files"},{"title":"Upload or replace HTTP API documentation","deprecated":null,"version":null,"openapi":"/0.19/openapi.json post /api/v1/plugins/{id}/documents","href":"/0.19/api-reference/plugins/upload-or-replace-http-api-documentation"},{"title":"Remove an HTTP API documentation file","deprecated":null,"version":null,"openapi":"/0.19/openapi.json delete /api/v1/plugins/{id}/documents/{documentId}","href":"/0.19/api-reference/plugins/remove-an-http-api-documentation-file"},{"title":"Read the OAuth account status of a plugin for an organization","deprecated":null,"version":null,"openapi":"/0.19/openapi.json get /api/v1/plugins/{id}/oauth","href":"/0.19/api-reference/plugins/read-the-oauth-account-status-of-a-plugin-for-an-organization"},{"title":"Forget the authorization server a plugin trusts","deprecated":null,"version":null,"openapi":"/0.19/openapi.json delete /api/v1/plugins/{id}/oauth/trusted-issuer","href":"/0.19/api-reference/plugins/forget-the-authorization-server-a-plugin-trusts"}]},{"group":"Specialties","pages":[{"title":"List specialties","deprecated":null,"version":null,"openapi":"/0.19/openapi.json get /api/v1/specialties","href":"/0.19/api-reference/specialties/list-specialties"},{"title":"Create a specialty","deprecated":null,"version":null,"openapi":"/0.19/openapi.json post /api/v1/specialties","href":"/0.19/api-reference/specialties/create-a-specialty"},{"title":"Search specialties","deprecated":null,"version":null,"openapi":"/0.19/openapi.json get /api/v1/specialties/search","href":"/0.19/api-reference/specialties/search-specialties"},{"title":"Get a specialty","deprecated":null,"version":null,"openapi":"/0.19/openapi.json get /api/v1/specialties/{id}","href":"/0.19/api-reference/specialties/get-a-specialty"},{"title":"Update a specialty","deprecated":null,"version":null,"openapi":"/0.19/openapi.json post /api/v1/specialties/{id}","href":"/0.19/api-reference/specialties/update-a-specialty"},{"title":"Delete a specialty","deprecated":null,"version":null,"openapi":"/0.19/openapi.json delete /api/v1/specialties/{id}","href":"/0.19/api-reference/specialties/delete-a-specialty"},{"title":"Count what references a specialty","deprecated":null,"version":null,"openapi":"/0.19/openapi.json get /api/v1/specialties/{id}/references","href":"/0.19/api-reference/specialties/count-what-references-a-specialty"}]},{"group":"Blacklists","pages":[{"title":"List blacklisted commands","deprecated":null,"version":null,"openapi":"/0.19/openapi.json get /api/v1/blacklists","href":"/0.19/api-reference/blacklists/list-blacklisted-commands"},{"title":"Create a blacklisted command","deprecated":null,"version":null,"openapi":"/0.19/openapi.json post /api/v1/blacklists","href":"/0.19/api-reference/blacklists/create-a-blacklisted-command"},{"title":"Search blacklisted commands","deprecated":null,"version":null,"openapi":"/0.19/openapi.json get /api/v1/blacklists/search","href":"/0.19/api-reference/blacklists/search-blacklisted-commands"},{"title":"Get a blacklisted command","deprecated":null,"version":null,"openapi":"/0.19/openapi.json get /api/v1/blacklists/{id}","href":"/0.19/api-reference/blacklists/get-a-blacklisted-command"},{"title":"Update a blacklisted command","deprecated":null,"version":null,"openapi":"/0.19/openapi.json post /api/v1/blacklists/{id}","href":"/0.19/api-reference/blacklists/update-a-blacklisted-command"},{"title":"Delete a blacklisted command","deprecated":null,"version":null,"openapi":"/0.19/openapi.json delete /api/v1/blacklists/{id}","href":"/0.19/api-reference/blacklists/delete-a-blacklisted-command"}]},{"group":"Organizations","pages":[{"title":"List organizations","deprecated":null,"version":null,"openapi":"/0.19/openapi.json get /api/v1/organizations","href":"/0.19/api-reference/organizations/list-organizations"},{"title":"Create an organization","deprecated":null,"version":null,"openapi":"/0.19/openapi.json post /api/v1/organizations","href":"/0.19/api-reference/organizations/create-an-organization"},{"title":"Get an organization","deprecated":null,"version":null,"openapi":"/0.19/openapi.json get /api/v1/organizations/{id}","href":"/0.19/api-reference/organizations/get-an-organization"},{"title":"Archive an organization","deprecated":null,"version":null,"openapi":"/0.19/openapi.json post /api/v1/organizations/{id}/archive","href":"/0.19/api-reference/organizations/archive-an-organization"}]},{"group":"Webhooks","pages":[{"title":"List webhooks","deprecated":null,"version":null,"openapi":"/0.19/openapi.json get /api/v1/webhooks","href":"/0.19/api-reference/webhooks/list-webhooks"},{"title":"Create a webhook","deprecated":null,"version":null,"openapi":"/0.19/openapi.json post /api/v1/webhooks","href":"/0.19/api-reference/webhooks/create-a-webhook"},{"title":"Delete a webhook","deprecated":null,"version":null,"openapi":"/0.19/openapi.json delete /api/v1/webhooks/{id}","href":"/0.19/api-reference/webhooks/delete-a-webhook"}]},{"group":"Gateways","pages":[{"title":"List gateways","deprecated":null,"version":null,"openapi":"/0.19/openapi.json get /api/v1/gateways","href":"/0.19/api-reference/gateways/list-gateways"},{"title":"Create a gateway","deprecated":null,"version":null,"openapi":"/0.19/openapi.json post /api/v1/gateways","href":"/0.19/api-reference/gateways/create-a-gateway"},{"title":"Search gateways","deprecated":null,"version":null,"openapi":"/0.19/openapi.json get /api/v1/gateways/search","href":"/0.19/api-reference/gateways/search-gateways"},{"title":"Get a gateway","deprecated":null,"version":null,"openapi":"/0.19/openapi.json get /api/v1/gateways/{id}","href":"/0.19/api-reference/gateways/get-a-gateway"},{"title":"Update a gateway","deprecated":null,"version":null,"openapi":"/0.19/openapi.json post /api/v1/gateways/{id}","href":"/0.19/api-reference/gateways/update-a-gateway"},{"title":"Delete a gateway","deprecated":null,"version":null,"openapi":"/0.19/openapi.json delete /api/v1/gateways/{id}","href":"/0.19/api-reference/gateways/delete-a-gateway"},{"title":"Count what references a gateway","deprecated":null,"version":null,"openapi":"/0.19/openapi.json get /api/v1/gateways/{id}/references","href":"/0.19/api-reference/gateways/count-what-references-a-gateway"}]},{"group":"Hosts","pages":[{"title":"List hosts","deprecated":null,"version":null,"openapi":"/0.19/openapi.json get /api/v1/hosts","href":"/0.19/api-reference/hosts/list-hosts"},{"title":"Create a host","deprecated":null,"version":null,"openapi":"/0.19/openapi.json post /api/v1/hosts","href":"/0.19/api-reference/hosts/create-a-host"},{"title":"Search hosts","deprecated":null,"version":null,"openapi":"/0.19/openapi.json get /api/v1/hosts/search","href":"/0.19/api-reference/hosts/search-hosts"},{"title":"Bulk import hosts","deprecated":null,"version":null,"openapi":"/0.19/openapi.json post /api/v1/hosts/batch","href":"/0.19/api-reference/hosts/bulk-import-hosts"},{"title":"Bulk export hosts","deprecated":null,"version":null,"openapi":"/0.19/openapi.json get /api/v1/hosts/export","href":"/0.19/api-reference/hosts/bulk-export-hosts"},{"title":"Get a host","deprecated":null,"version":null,"openapi":"/0.19/openapi.json get /api/v1/hosts/{id}","href":"/0.19/api-reference/hosts/get-a-host"},{"title":"Update a host","deprecated":null,"version":null,"openapi":"/0.19/openapi.json post /api/v1/hosts/{id}","href":"/0.19/api-reference/hosts/update-a-host"},{"title":"Delete a host","deprecated":null,"version":null,"openapi":"/0.19/openapi.json delete /api/v1/hosts/{id}","href":"/0.19/api-reference/hosts/delete-a-host"},{"title":"List a host agents","deprecated":null,"version":null,"openapi":"/0.19/openapi.json get /api/v1/hosts/{id}/agents","href":"/0.19/api-reference/hosts/list-a-host-agents"}]},{"group":"Agents","pages":[{"title":"List agents","deprecated":null,"version":null,"openapi":"/0.19/openapi.json get /api/v1/agents","href":"/0.19/api-reference/agents/list-agents"},{"title":"Create an agent","deprecated":null,"version":null,"openapi":"/0.19/openapi.json post /api/v1/agents","href":"/0.19/api-reference/agents/create-an-agent"},{"title":"Search agents","deprecated":null,"version":null,"openapi":"/0.19/openapi.json get /api/v1/agents/search","href":"/0.19/api-reference/agents/search-agents"},{"title":"Bulk import agents","deprecated":null,"version":null,"openapi":"/0.19/openapi.json post /api/v1/agents/batch","href":"/0.19/api-reference/agents/bulk-import-agents"},{"title":"Bulk export agents","deprecated":null,"version":null,"openapi":"/0.19/openapi.json get /api/v1/agents/export","href":"/0.19/api-reference/agents/bulk-export-agents"},{"title":"Get an agent","deprecated":null,"version":null,"openapi":"/0.19/openapi.json get /api/v1/agents/{id}","href":"/0.19/api-reference/agents/get-an-agent"},{"title":"Update an agent","deprecated":null,"version":null,"openapi":"/0.19/openapi.json post /api/v1/agents/{id}","href":"/0.19/api-reference/agents/update-an-agent"},{"title":"Archive an agent","deprecated":null,"version":null,"openapi":"/0.19/openapi.json post /api/v1/agents/{id}/archive","href":"/0.19/api-reference/agents/archive-an-agent"},{"title":"Archive idle tasks","deprecated":null,"version":null,"openapi":"/0.19/openapi.json post /api/v1/agents/{id}/archive-tasks","href":"/0.19/api-reference/agents/archive-idle-tasks"},{"title":"List an agent tasks","deprecated":null,"version":null,"openapi":"/0.19/openapi.json get /api/v1/agents/{id}/tasks","href":"/0.19/api-reference/agents/list-an-agent-tasks"},{"title":"Test the connection","deprecated":null,"version":null,"openapi":"/0.19/openapi.json post /api/v1/agents/{id}/test-connection","href":"/0.19/api-reference/agents/test-the-connection"},{"title":"List an agent plugins","deprecated":null,"version":null,"openapi":"/0.19/openapi.json get /api/v1/agents/{id}/plugins","href":"/0.19/api-reference/agents/list-an-agent-plugins"},{"title":"Save a plugin assignment","deprecated":null,"version":null,"openapi":"/0.19/openapi.json post /api/v1/agents/{id}/plugins","href":"/0.19/api-reference/agents/save-a-plugin-assignment"},{"title":"Replace an agent's plugin assignments","deprecated":null,"version":null,"openapi":"/0.19/openapi.json post /api/v1/agents/{id}/replace-plugins","href":"/0.19/api-reference/agents/replace-an-agents-plugin-assignments"},{"title":"Read one plugin assignment","deprecated":null,"version":null,"openapi":"/0.19/openapi.json get /api/v1/agents/{id}/plugins/{pluginId}","href":"/0.19/api-reference/agents/read-one-plugin-assignment"},{"title":"Detach a plugin","deprecated":null,"version":null,"openapi":"/0.19/openapi.json delete /api/v1/agents/{id}/plugins/{pluginId}","href":"/0.19/api-reference/agents/detach-a-plugin"},{"title":"Check an assigned plugin connection","deprecated":null,"version":null,"openapi":"/0.19/openapi.json post /api/v1/agents/{id}/plugins/{pluginId}/check","href":"/0.19/api-reference/agents/check-an-assigned-plugin-connection"}]},{"group":"Credentials","pages":[{"title":"List credentials","deprecated":null,"version":null,"openapi":"/0.19/openapi.json get /api/v1/credentials","href":"/0.19/api-reference/credentials/list-credentials"},{"title":"Create a credential","deprecated":null,"version":null,"openapi":"/0.19/openapi.json post /api/v1/credentials","href":"/0.19/api-reference/credentials/create-a-credential"},{"title":"Search credentials","deprecated":null,"version":null,"openapi":"/0.19/openapi.json get /api/v1/credentials/search","href":"/0.19/api-reference/credentials/search-credentials"},{"title":"Get a credential","deprecated":null,"version":null,"openapi":"/0.19/openapi.json get /api/v1/credentials/{id}","href":"/0.19/api-reference/credentials/get-a-credential"},{"title":"Update a credential","deprecated":null,"version":null,"openapi":"/0.19/openapi.json post /api/v1/credentials/{id}","href":"/0.19/api-reference/credentials/update-a-credential"},{"title":"Delete a credential","deprecated":null,"version":null,"openapi":"/0.19/openapi.json delete /api/v1/credentials/{id}","href":"/0.19/api-reference/credentials/delete-a-credential"},{"title":"Get credential usage","deprecated":null,"version":null,"openapi":"/0.19/openapi.json get /api/v1/credentials/{id}/references","href":"/0.19/api-reference/credentials/get-credential-usage"}]},{"group":"Operational Rules","pages":[{"title":"List operational rules","deprecated":null,"version":null,"openapi":"/0.19/openapi.json get /api/v1/operational-rules","href":"/0.19/api-reference/operational-rules/list-operational-rules"},{"title":"Create an operational rule","deprecated":null,"version":null,"openapi":"/0.19/openapi.json post /api/v1/operational-rules","href":"/0.19/api-reference/operational-rules/create-an-operational-rule"},{"title":"Search operational rules","deprecated":null,"version":null,"openapi":"/0.19/openapi.json get /api/v1/operational-rules/search","href":"/0.19/api-reference/operational-rules/search-operational-rules"},{"title":"Get an operational rule","deprecated":null,"version":null,"openapi":"/0.19/openapi.json get /api/v1/operational-rules/{id}","href":"/0.19/api-reference/operational-rules/get-an-operational-rule"},{"title":"Update an operational rule","deprecated":null,"version":null,"openapi":"/0.19/openapi.json post /api/v1/operational-rules/{id}","href":"/0.19/api-reference/operational-rules/update-an-operational-rule"},{"title":"Delete an operational rule","deprecated":null,"version":null,"openapi":"/0.19/openapi.json delete /api/v1/operational-rules/{id}","href":"/0.19/api-reference/operational-rules/delete-an-operational-rule"}]},{"group":"Scenarios","pages":[{"title":"List scenarios","deprecated":null,"version":null,"openapi":"/0.19/openapi.json get /api/v1/scenarios","href":"/0.19/api-reference/scenarios/list-scenarios"},{"title":"Create a scenario","deprecated":null,"version":null,"openapi":"/0.19/openapi.json post /api/v1/scenarios","href":"/0.19/api-reference/scenarios/create-a-scenario"},{"title":"Get a scenario","deprecated":null,"version":null,"openapi":"/0.19/openapi.json get /api/v1/scenarios/{id}","href":"/0.19/api-reference/scenarios/get-a-scenario"},{"title":"Update a scenario","deprecated":null,"version":null,"openapi":"/0.19/openapi.json post /api/v1/scenarios/{id}","href":"/0.19/api-reference/scenarios/update-a-scenario"},{"title":"Delete a scenario","deprecated":null,"version":null,"openapi":"/0.19/openapi.json delete /api/v1/scenarios/{id}","href":"/0.19/api-reference/scenarios/delete-a-scenario"},{"title":"Run a scenario","deprecated":null,"version":null,"openapi":"/0.19/openapi.json post /api/v1/scenarios/{id}/run","href":"/0.19/api-reference/scenarios/run-a-scenario"},{"title":"List runs of a scenario","deprecated":null,"version":null,"openapi":"/0.19/openapi.json get /api/v1/scenarios/{id}/runs","href":"/0.19/api-reference/scenarios/list-runs-of-a-scenario"},{"title":"Get a run","deprecated":null,"version":null,"openapi":"/0.19/openapi.json get /api/v1/scenarios/{id}/runs/{reportId}","href":"/0.19/api-reference/scenarios/get-a-run"},{"title":"Stop a run","deprecated":null,"version":null,"openapi":"/0.19/openapi.json post /api/v1/scenarios/{id}/runs/{reportId}/stop","href":"/0.19/api-reference/scenarios/stop-a-run"}]},{"group":"Benchmarks","pages":[{"title":"List benchmarks","deprecated":null,"version":null,"openapi":"/0.19/openapi.json get /api/v1/benchmarks","href":"/0.19/api-reference/benchmarks/list-benchmarks"},{"title":"Run a benchmark","deprecated":null,"version":null,"openapi":"/0.19/openapi.json post /api/v1/benchmarks","href":"/0.19/api-reference/benchmarks/run-a-benchmark"},{"title":"Get a benchmark","deprecated":null,"version":null,"openapi":"/0.19/openapi.json get /api/v1/benchmarks/{id}","href":"/0.19/api-reference/benchmarks/get-a-benchmark"},{"title":"Delete a benchmark","deprecated":null,"version":null,"openapi":"/0.19/openapi.json delete /api/v1/benchmarks/{id}","href":"/0.19/api-reference/benchmarks/delete-a-benchmark"},{"title":"Cancel a benchmark","deprecated":null,"version":null,"openapi":"/0.19/openapi.json post /api/v1/benchmarks/{id}/cancel","href":"/0.19/api-reference/benchmarks/cancel-a-benchmark"}]},{"group":"Signals","pages":[{"title":"Receive a Splunk alert","deprecated":null,"version":null,"openapi":"/0.19/openapi.json post /api/v1/signals","href":"/0.19/api-reference/signals/receive-a-splunk-alert"}]}]},{"group":"Deploy","pages":[{"title":"Overview","href":"/0.19/deployment/overview"},{"title":"values.yaml","href":"/0.19/deployment/configuration"},{"title":"Docker Swarm","href":"/0.19/deployment/docker-swarm"},{"title":"Kubernetes and OpenShift","href":"/0.19/deployment/kubernetes"},{"title":"Pull the images from 2501's registry","href":"/0.19/deployment/pull-from-2501"},{"title":"LLM Providers","href":"/0.19/deployment/llm-providers"},{"title":"Users \u0026 Organizations","href":"/0.19/deployment/users-organizations"},{"title":"Move from the CLI","href":"/0.19/deployment/migrate-from-cli"},{"title":"Upgrade","href":"/0.19/deployment/upgrade"},{"title":"Troubleshooting","href":"/0.19/deployment/troubleshooting"},{"title":"Operations","href":"/0.19/deployment/operations"},{"title":"Feature Toggles","description":"Toggle experimental and optional behaviors on or off","href":"/0.19/deployment/feature-toggles"},{"title":"Verify Image Signatures","href":"/0.19/deployment/verify-downloads"}]},{"group":"Configure","pages":[{"group":"Agent Behavior","pages":[{"title":"Specialties","description":"Configure your agent for specific task domains","href":"/0.19/configure/specialties"},{"title":"Operational Rules","href":"/0.19/configure/operational-rules"},{"title":"Blacklist","href":"/0.19/configure/blacklist"}]},{"title":"Clusters","href":"/0.19/configure/clusters"},{"title":"Plugins","href":"/0.19/configure/plugins"},{"title":"Central configurations","href":"/0.19/configure/centrals"},{"title":"Knowledge Base","href":"/0.19/configure/knowledge"},{"title":"Import and Export","href":"/0.19/configure/import-export"},{"group":"Access \u0026 Secrets","pages":[{"title":"Credentials","href":"/0.19/configure/credentials"},{"title":"API Keys","href":"/0.19/configure/api-keys"},{"title":"Privileged access","href":"/0.19/configure/privileged-access"}]},{"group":"Integration","pages":[{"title":"Webhooks","href":"/0.19/configure/webhooks"},{"title":"Network Discovery","href":"/0.19/configure/discovery"}]},{"group":"LLM","pages":[{"title":"Providers","href":"/0.19/configure/providers"},{"title":"Models","href":"/0.19/configure/models"}]},{"title":"Users","href":"/0.19/configure/users"},{"title":"Licensing \u0026 Usage","href":"/0.19/configure/licensing"}]}]},{"tab":"Benchmark","pages":[{"title":"Benchmark","href":"/0.19/benchmark/overview"}]},{"tab":"Guides","pages":[{"title":"Guides","href":"/0.19/configure/prompting"}]}]},{"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","pages":[{"title":"0.15","href":"/0.15/deployment/verify-downloads"}]},{"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":[]}