YubiKeys provide hardware-backed security for FOKS device keys. The private key is generated on the YubiKey and never leaves the hardware. FOKS uses PIV slots on the YubiKey via the PCSC interface.
Testing against a real YubiKey will make destructive changes to its PIV slots. Use a throwaway YubiKey for development and testing.
Use an existing YubiKey on a new device. Useful when you have already registered the YubiKey with your FOKS account and want to provision a new machine using the YubiKey as the device key.
YubiKey device keys are ECDSA P-256 (as exposed by the PIV applet), rather than Ed25519 used by software keys
The YubiKey’s private key never leaves the hardware; FOKS only sends data to be signed
If a YubiKey is lost, revoke it via the web admin panel (foks admin web); this triggers key rotation for all affected teams
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"foks","colors":{"primary":"#16A34A","light":"#07C983","dark":"#15803D"},"logo":{"light":"https://mintcdn.com/ne43inc/aybqQiAnWDo38yVm/logo/light.svg?fit=max\u0026auto=format\u0026n=aybqQiAnWDo38yVm\u0026q=85\u0026s=01622f2fc8259ee722847c05ebad8192","dark":"https://mintcdn.com/ne43inc/aybqQiAnWDo38yVm/logo/dark.svg?fit=max\u0026auto=format\u0026n=aybqQiAnWDo38yVm\u0026q=85\u0026s=0fdc9489ab7422f7282f100b322188e8"},"favicon":"https://mintcdn.com/ne43inc/aybqQiAnWDo38yVm/favicon.svg?fit=max\u0026auto=format\u0026n=aybqQiAnWDo38yVm\u0026q=85\u0026s=5d8b9f9378aff0c5edcd6ab65b5fc2c1","navbar":{"links":[{"href":"https://foks.pub","label":"foks.pub"}],"primary":{"type":"button","label":"Sign Up","href":"https://w.foks.app"}},"footer":{"socials":{"github":"https://github.com/foks-proj/go-foks"}},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"GitHub","icon":"github","href":"https://github.com/foks-proj/go-foks"},{"anchor":"foks.app","icon":"cloud","href":"https://w.foks.app"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"ne43inc","hasAudioNarration":false,"actualSubdomain":"ne43inc","customDomains":["docs.foks.pub"],"gitSource":{"type":"github","owner":"foks-proj","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6a21eba07fd5f14b8ebb1e51","collectionId":"0dec3cd4-7170-442b-93d0-abac3a231c39","schemaVersion":"v2"},"entitlements":{},"buildId":"6ae94853d1e90e32157e2917:success","clientVersion":"0.0.4071","searchFilterCounts":[{"language":"default","tag":"Guides","count":19},{"language":"default","tag":"CLI Reference","count":9},{"language":"default","tag":"Self-Hosting","count":4},{"language":"default","tag":"Core Concepts","count":3},{"language":"default","tag":"Getting Started","count":3}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"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":"rbac-expansion","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":"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":"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},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"cli/yubikey","slug":"/cli/yubikey","pageMetadata":{"title":"foks yubikey","description":"Use a YubiKey as a hardware device key.","href":"/cli/yubikey","hidden":false},"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: \"Use a YubiKey as a hardware device key.\"\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`,li:`li`,p:`p`,pre:`pre`,span:`span`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`overview`,children:`Overview`}),`\n`,_jsx(_components.p,{children:`YubiKeys provide hardware-backed security for FOKS device keys. The private key is generated on the YubiKey and never leaves the hardware. FOKS uses PIV slots on the YubiKey via the PCSC interface.`}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`Testing against a real YubiKey will make destructive changes to its PIV slots. Use a throwaway YubiKey for development and testing.`})}),`\n`,_jsx(Heading,{level:`2`,id:`prerequisites`,children:`Prerequisites`}),`\n`,_jsx(Heading,{level:`3`,id:`linux`,children:`Linux`}),`\n`,_jsx(_components.p,{children:`Install the PCSC daemon and make sure your user can access it:`}),`\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:`sudo`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` apt-get`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` install`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` pcscd`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`If you get permission errors, see the `,_jsx(_components.a,{href:`/installation#linux`,children:`installation guide`}),` for polkit configuration.`]}),`\n`,_jsx(Heading,{level:`3`,id:`macos-/-windows`,children:`macOS / Windows`}),`\n`,_jsx(_components.p,{children:`PCSC support is built in. No additional setup needed.`}),`\n`,_jsx(Heading,{level:`2`,id:`commands`,children:`Commands`}),`\n`,_jsx(Heading,{level:`3`,id:`new`,children:`new`}),`\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:`foks yubikey new`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(_components.p,{children:`Add a new YubiKey to a previously provisioned FOKS account. Generates a new key pair on the YubiKey and registers it with the server.`}),`\n`,_jsx(Heading,{level:`3`,id:`use`,children:`use`}),`\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:`foks yubikey use`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(_components.p,{children:`Use an existing YubiKey on a new device. Useful when you have already registered the YubiKey with your FOKS account and want to provision a new machine using the YubiKey as the device key.`}),`\n`,_jsx(Heading,{level:`3`,id:`unlock`,children:`unlock`}),`\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:`foks yubikey unlock`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(_components.p,{children:`Unlock credentials using the YubiKey. Called automatically when credentials are needed, but can be run manually to pre-unlock.`}),`\n`,_jsx(Heading,{level:`3`,id:`set-pin-and-puk`,children:`set-pin-and-puk`}),`\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:`foks yubikey set-pin-and-puk`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(_components.p,{children:`Set the PIN and PUK for the YubiKey. The PIN is required for signing operations; the PUK is used to unblock a PIN-locked YubiKey.`}),`\n`,_jsx(Heading,{level:`3`,id:`recover`,children:`recover`}),`\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:`foks yubikey recover`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(_components.p,{children:`Recover a YubiKey that has been PIN-blocked (after too many incorrect PIN attempts). Requires the PUK.`}),`\n`,_jsx(Heading,{level:`3`,id:`explore`,children:`explore`}),`\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:`foks yubikey explore`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(_components.p,{children:`Inspect the current state of YubiKey slots and certificates. Useful for debugging.`}),`\n`,_jsx(Heading,{level:`2`,id:`security-notes`,children:`Security Notes`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`YubiKey device keys are ECDSA P-256 (as exposed by the PIV applet), rather than Ed25519 used by software keys`}),`\n`,_jsx(_components.li,{children:`The YubiKey’s private key never leaves the hardware; FOKS only sends data to be signed`}),`\n`,_jsxs(_components.li,{children:[`If a YubiKey is lost, revoke it via the web admin panel (`,_jsx(_components.code,{children:`foks admin web`}),`); this triggers key rotation for all affected teams`]}),`\n`]})]})}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":"foks yubikey","description":"Use a YubiKey as a hardware device key.","href":"/cli/yubikey","hidden":false}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Overview","slug":"overview","depth":2,"children":[]},{"title":"Prerequisites","slug":"prerequisites","depth":2,"children":[{"title":"Linux","slug":"linux","depth":3,"children":[]},{"title":"macOS / Windows","slug":"macos-/-windows","depth":3,"children":[]}]},{"title":"Commands","slug":"commands","depth":2,"children":[{"title":"new","slug":"new","depth":3,"children":[]},{"title":"use","slug":"use","depth":3,"children":[]},{"title":"unlock","slug":"unlock","depth":3,"children":[]},{"title":"set-pin-and-puk","slug":"set-pin-and-puk","depth":3,"children":[]},{"title":"recover","slug":"recover","depth":3,"children":[]},{"title":"explore","slug":"explore","depth":3,"children":[]}]},{"title":"Security Notes","slug":"security-notes","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"ne43inc","siteName":"foks","title":"foks yubikey - foks","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-02-23T13:32:12.635Z","originalFileLocation":"cli/yubikey.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=\"system\"}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=\"Use a YubiKey as a hardware device key.\">\u003cmeta data-mint-head name=\"application-name\" content=\"foks\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/ne43inc/4p2es6eiIybNfhUX/_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/ne43inc/4p2es6eiIybNfhUX/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/ne43inc/4p2es6eiIybNfhUX/_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/ne43inc/4p2es6eiIybNfhUX/_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/ne43inc/4p2es6eiIybNfhUX/_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/ne43inc/4p2es6eiIybNfhUX/_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/ne43inc/4p2es6eiIybNfhUX/_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/ne43inc/4p2es6eiIybNfhUX/_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/ne43inc/4p2es6eiIybNfhUX/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"foks yubikey - foks\">\u003cmeta data-mint-head property=\"og:description\" content=\"Use a YubiKey as a hardware device key.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"foks\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.foks.pub/cli/yubikey\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://ne43inc.mintlify.app/_mintlify/api/og/v2?division=CLI+Reference\u0026amp;title=foks+yubikey\u0026amp;description=Use+a+YubiKey+as+a+hardware+device+key.\u0026amp;theme=ae3ad721f20320d91101ef42\u0026amp;signature=434259aea93677a7e3e558e7e443137a071d171a3fe37966435d7a8563092f20\">\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=\"foks yubikey - foks\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Use a YubiKey as a hardware device key.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://ne43inc.mintlify.app/_mintlify/api/og/v2?division=CLI+Reference\u0026amp;title=foks+yubikey\u0026amp;description=Use+a+YubiKey+as+a+hardware+device+key.\u0026amp;theme=ae3ad721f20320d91101ef42\u0026amp;signature=434259aea93677a7e3e558e7e443137a071d171a3fe37966435d7a8563092f20\">\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/ne43inc/4p2es6eiIybNfhUX/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"foks\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#16A34A\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.foks.pub/cli/yubikey\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/cli/yubikey.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.foks.pub/#organization\",\"name\":\"foks\",\"url\":\"https://docs.foks.pub\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/ne43inc/aybqQiAnWDo38yVm/logo/light.svg?fit=max\u0026auto=format\u0026n=aybqQiAnWDo38yVm\u0026q=85\u0026s=01622f2fc8259ee722847c05ebad8192\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.foks.pub#website\",\"name\":\"foks\",\"url\":\"https://docs.foks.pub\",\"publisher\":{\"@id\":\"https://docs.foks.pub/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.foks.pub/cli/yubikey#webpage\",\"url\":\"https://docs.foks.pub/cli/yubikey\",\"name\":\"foks yubikey\",\"description\":\"Use a YubiKey as a hardware device key.\",\"dateModified\":\"2026-02-23T13:32:12.635Z\",\"isPartOf\":{\"@id\":\"https://docs.foks.pub#website\"},\"breadcrumb\":{\"@id\":\"https://docs.foks.pub/cli/yubikey#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.foks.pub/cli/yubikey#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"CLI Reference\",\"item\":\"https://docs.foks.pub/cli/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"foks yubikey\",\"item\":\"https://docs.foks.pub/cli/yubikey\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.foks.pub/cli/yubikey#article\",\"headline\":\"foks yubikey\",\"name\":\"foks yubikey\",\"description\":\"Use a YubiKey as a hardware device key.\",\"url\":\"https://docs.foks.pub/cli/yubikey\",\"mainEntityOfPage\":{\"@id\":\"https://docs.foks.pub/cli/yubikey#webpage\"},\"dateModified\":\"2026-02-23T13:32:12.635Z\",\"publisher\":{\"@id\":\"https://docs.foks.pub/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.foks.pub#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"foks\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"foks","nav":{"global":{"anchors":[{"anchor":"GitHub","icon":"github","href":"https://github.com/foks-proj/go-foks"},{"anchor":"foks.app","icon":"cloud","href":"https://w.foks.app"}]},"tabs":[{"tab":"Guides","groups":[{"group":"Getting Started","pages":[{"title":"Introduction","href":""},{"title":"Installation","href":"/installation"},{"title":"Quickstart","href":"/quickstart"}]},{"group":"Core Concepts","pages":[{"title":"Architecture","href":"/concepts/architecture"},{"title":"Security Model","href":"/concepts/security"},{"title":"Federation","href":"/concepts/federation"}]},{"group":"CLI Reference","pages":[{"title":"CLI Overview","href":"/cli/overview"},{"title":"foks git","href":"/cli/git"},{"title":"foks kv","href":"/cli/kv"},{"title":"foks team","href":"/cli/team"},{"title":"foks device","description":"Provision and manage devices.","href":"/cli/device"},{"title":"foks yubikey","href":"/cli/yubikey"},{"title":"foks mcp","description":"Model Context Protocol (MCP) servers for LLM tool integration.","href":"/cli/mcp"},{"title":"foks agent \u0026 ctl","href":"/cli/agent"},{"title":"foks bot","href":"/cli/bot"}]},{"group":"Self-Hosting","pages":[{"title":"Self-Hosting Overview","href":"/server/overview"},{"title":"Server Setup","href":"/server/quickstart"},{"title":"Configuration Reference","href":"/server/configuration"},{"title":"Virtual Hosts","href":"/server/virtual-hosts"}]}]}]},"basePath":"","title":"foks yubikey - foks","buildId":"dpl_GZsjphRpnhWkstV12jxWNcMHFyox","deploymentId":"dpl_GZsjphRpnhWkstV12jxWNcMHFyox","dynamics":[],"chunks":[]}