Once you’ve built a package with the flox build command, you likely want to use it somewhere.
The flox publish command gives you the ability to upload packages to your private catalog so that you can install them into your environments.
In order to share packages with other people you must create an organization.
See the organizations page for more details.
The flox publish <name> command allows you to upload a package built with the flox build command, where <name> is the name of any build listed in the build section of the manifest.
In order to make sure that the uploaded package can be built reproducibly,
Flox imposes some constraints on the build and publish process.
The Flox environment performing the build must be tracked in a git repository.
Tracked files in the git repository must be clean.
The git repository has a remote defined, and the current revision has been pushed to it.
The Flox environment must have at least one package installed to it.
All of this is there to ensure that the published package can be locked to a point in time in the Base Catalog and an upstream source revision.
As a reminder, the Base Catalog is the built-in Catalog provided by Flox.As part of the flox publish command, the CLI will clone the git repository to a temporary directory to ensure that any files referenced in the build are tracked by the repository.
A clean flox build is then run in this directory.If the build completes successfully, the package, its closure (all the software it depends on), and its metadata are uploaded to your Catalog.
The package metadata is uploaded to Flox servers so that the Flox CLI can see that it’s available via the flox search, flox show, and flox install commands.
The package itself is uploaded to a Catalog Store.A Catalog Store is effectively a cache for published packages, and Flox provides one by default.
An organization can choose to provide their own Catalog Store in the form of an S3-compatible storage provider.
In this case, it means that your organization has complete control over your packages and they will never be stored by Flox.
To pursue this option, contact Flox directly.
Once you have uploaded a package via flox publish, the package becomes available in flox search, flox show, and flox install.
To distinguish these packages from those provided by the Base Catalog, published packages are prefixed with the name of the user or organization.
For example, if your user is called myuser and you publish a package named hello, the package will appear as myuser/hello in the Flox CLI.When a user runs flox install myuser/hello, the package is downloaded directly from the Catalog Store that it was published to.
If organizations configure their own Catalog Store (rather than using the default Catalog Store provided by Flox), it is never downloaded to or cached on Flox servers.
This is a Flox for Teams featureThis is a paid feature included with Flox for Teams.
Sharing packages with multiple users is only possible with an organization.
This means that individual users will not be able to share packages they’ve published with other users.Packages can be published to an organization’s catalog with
flox publish --org <organization>.
Packages published to an organization’s catalog are visible to all other members
of the organization,
but they cannot be viewed by anyone outside the organization.
For anyone in the organization, published packages become available in
flox search, flox show, and flox install.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Flox","colors":{"primary":"#8D45FF","light":"#B080FF","dark":"#6F2BFF"},"logo":{"light":"https://mintcdn.com/flox/TGd54292LI04fuY9/logo/light.svg?fit=max\u0026auto=format\u0026n=TGd54292LI04fuY9\u0026q=85\u0026s=a68dffe97384d4c4af5850b2c4ab2d6c","dark":"https://mintcdn.com/flox/TGd54292LI04fuY9/logo/dark.svg?fit=max\u0026auto=format\u0026n=TGd54292LI04fuY9\u0026q=85\u0026s=68e026fe8b554722bc75b10ffd73d7aa"},"favicon":"https://mintcdn.com/flox/TGd54292LI04fuY9/favicon.ico?fit=max\u0026auto=format\u0026n=TGd54292LI04fuY9\u0026q=85\u0026s=07df64850f2e53778fafc31eb4a4cfbc","api":{"playground":{"proxy":false}},"appearance":{"default":"light"},"navbar":{"primary":{"type":"button","label":"Go to FloxHub","href":"https://hub.flox.dev"}},"footer":{"socials":{"github":"https://github.com/flox/flox","x":"https://twitter.com/floxdevelopment","linkedin":"https://www.linkedin.com/company/floxdev","youtube":"https://www.youtube.com/@floxdev","slack":"https://go.flox.dev/slack"}},"seo":{"metatags":{"canonical":"https://flox.dev/docs"}},"fonts":{"heading":{"family":"Geist"},"body":{"family":"Geist"}},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"flox","hasAudioNarration":false,"actualSubdomain":"flox","customDomains":["flox.dev"],"gitSource":{"type":"github","owner":"flox","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"feedback":{"edits":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aeced083e2056ea29579166","clientVersion":"0.0.4087","searchFilterCounts":[{"language":"default","tag":"Documentation","count":70},{"language":"default","tag":"CLI reference","count":37},{"language":"default","tag":"Concepts","count":27},{"language":"default","tag":"Tutorials","count":17},{"language":"default","tag":"Imageless Kubernetes","count":10},{"language":"default","tag":"Languages","count":7},{"language":"default","tag":"Build \u0026 Publish","count":7},{"language":"default","tag":"Packages","count":7},{"language":"default","tag":"Installation","count":5},{"language":"default","tag":"Environments","count":5}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"/docs","hasChatPermissions":false,"hasWebMcpPermissions":true,"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":"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":"editor-metadata","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},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[],"page":{"pagePath":"concepts/publishing","slug":"/concepts/publishing","pageMetadata":{"title":"Publishing","description":"Understanding how to publish packages with Flox","href":"/concepts/publishing"},"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: \"Understanding how to publish packages with Flox\"\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`,em:`em`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Tip}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Once you’ve built a package with the `,_jsx(_components.a,{href:`/man/flox-build`,children:_jsx(_components.code,{children:`flox build`})}),` command, you likely want to `,_jsx(_components.em,{children:`use`}),` it somewhere.\nThe `,_jsx(_components.a,{href:`/man/flox-publish`,children:_jsx(_components.code,{children:`flox publish`})}),` command gives you the ability to upload packages to your private catalog so that you can `,_jsx(_components.em,{children:`install`}),` them into your environments.\nIn order to share packages with other people you must create an organization.\nSee the `,_jsx(_components.a,{href:`/concepts/organizations`,children:`organizations`}),` page for more details.`]}),`\n`,_jsx(Heading,{level:`2`,id:`uploading-a-package`,children:`Uploading a package`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.code,{children:`flox publish \u003cname>`}),` command allows you to upload a package built with the `,_jsx(_components.code,{children:`flox build`}),` command, where `,_jsx(_components.code,{children:`\u003cname>`}),` is the name of any build listed in the `,_jsx(_components.code,{children:`build`}),` section of the manifest.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`toml`,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:`toml`,children:_jsxs(_components.code,{language:`toml`,numberOfLines:`4`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`[`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#D4D4D4`},children:`build`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#D4D4D4`},children:`mypkg`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`command`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` = `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'''`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` ...`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'''`})}),`\n`]})})}),`\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:`flox`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` publish`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` mypkg`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`publish-process`,children:`Publish process`}),`\n`,_jsx(_components.p,{children:`In order to make sure that the uploaded package can be built reproducibly,\nFlox imposes some constraints on the build and publish process.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`The Flox environment performing the build must be tracked in a git repository.`}),`\n`,_jsx(_components.li,{children:`Tracked files in the git repository must be clean.`}),`\n`,_jsx(_components.li,{children:`The git repository has a remote defined, and the current revision has been pushed to it.`}),`\n`,_jsx(_components.li,{children:`The Flox environment must have at least one package installed to it.`}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`All of this is there to ensure that the published package can be locked to a point in time in the Base Catalog and an upstream source revision.\nAs a reminder, the Base Catalog is the built-in `,_jsx(_components.a,{href:`/concepts/packages-and-catalog`,children:`Catalog`}),` provided by Flox.`]}),`\n`,_jsxs(_components.p,{children:[`As part of the `,_jsx(_components.code,{children:`flox publish`}),` command, the CLI will clone the git repository to a temporary directory to ensure that any files referenced in the build are tracked by the repository.\nA clean `,_jsx(_components.code,{children:`flox build`}),` is then run in this directory.`]}),`\n`,_jsx(_components.p,{children:`If the build completes successfully, the package, its closure (all the software it depends on), and its metadata are uploaded to your Catalog.`}),`\n`,_jsx(Heading,{level:`2`,id:`the-published-payload`,children:`The published payload`}),`\n`,_jsx(_components.p,{children:`A published package consists of two parts:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`The package metadata`}),`\n`,_jsx(_components.li,{children:`The package itself`}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`The package metadata is uploaded to Flox servers so that the Flox CLI can see that it’s available via the `,_jsx(_components.a,{href:`/man/flox-search`,children:_jsx(_components.code,{children:`flox search`})}),`, `,_jsx(_components.a,{href:`/man/flox-show`,children:_jsx(_components.code,{children:`flox show`})}),`, and `,_jsx(_components.a,{href:`/man/flox-install`,children:_jsx(_components.code,{children:`flox install`})}),` commands.\nThe package itself is uploaded to a Catalog Store.`]}),`\n`,_jsx(_components.p,{children:`A Catalog Store is effectively a cache for published packages, and Flox provides one by default.\nAn organization can choose to provide their own Catalog Store in the form of an S3-compatible storage provider.\nIn this case, it means that your organization has complete control over your packages and they will never be stored by Flox.\nTo pursue this option, contact Flox directly.`}),`\n`,_jsx(Heading,{level:`2`,id:`consuming-published-packages`,children:`Consuming published packages`}),`\n`,_jsxs(_components.p,{children:[`Once you have uploaded a package via `,_jsx(_components.code,{children:`flox publish`}),`, the package becomes available in `,_jsx(_components.code,{children:`flox search`}),`, `,_jsx(_components.code,{children:`flox show`}),`, and `,_jsx(_components.code,{children:`flox install`}),`.\nTo distinguish these packages from those provided by the Base Catalog, published packages are prefixed with the name of the user or organization.\nFor example, if your user is called `,_jsx(_components.code,{children:`myuser`}),` and you publish a package named `,_jsx(_components.code,{children:`hello`}),`, the package will appear as `,_jsx(_components.code,{children:`myuser/hello`}),` in the Flox CLI.`]}),`\n`,_jsxs(_components.p,{children:[`When a user runs `,_jsx(_components.code,{children:`flox install myuser/hello`}),`, the package is downloaded directly from the Catalog Store that it was published to.\nIf organizations configure their own Catalog Store (rather than using the default Catalog Store provided by Flox), it is never downloaded to or cached on Flox servers.`]}),`\n`,_jsx(Heading,{level:`3`,id:`sharing`,children:`Sharing`}),`\n`,_jsxs(Tip,{children:[_jsx(_components.p,{children:_jsx(_components.strong,{children:`This is a Flox for Teams feature`})}),_jsx(_components.p,{children:`This is a paid feature included with Flox for Teams.`})]}),`\n`,_jsx(_components.p,{children:`Sharing packages with multiple users is only possible with an organization.\nThis means that individual users will not be able to share packages they’ve published with other users.`}),`\n`,_jsxs(_components.p,{children:[`Packages can be published to an organization’s catalog with\n`,_jsx(_components.code,{children:`flox publish --org \u003corganization>`}),`.\nPackages published to an organization’s catalog are visible to all other members\nof the organization,\nbut they cannot be viewed by anyone outside the organization.\nFor anyone in the organization, published packages become available in\n`,_jsx(_components.code,{children:`flox search`}),`, `,_jsx(_components.code,{children:`flox show`}),`, and `,_jsx(_components.code,{children:`flox install`}),`.`]})]})}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":"Publishing","description":"Understanding how to publish packages with Flox","href":"/concepts/publishing"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Uploading a package","slug":"uploading-a-package","depth":2,"children":[]},{"title":"Publish process","slug":"publish-process","depth":2,"children":[]},{"title":"The published payload","slug":"the-published-payload","depth":2,"children":[]},{"title":"Consuming published packages","slug":"consuming-published-packages","depth":2,"children":[{"title":"Sharing","slug":"sharing","depth":3,"children":[]}]}],"codeExamples":{}},"jsLinks":["/docs/_mintlify/custom/flox/d4dc44fc16caa8e0/amplitude.js","/docs/_mintlify/custom/flox/7a15237175dc5cb4/hubspot.js","/docs/_mintlify/custom/flox/2c0cb21cf2c0757c/plausible.js"],"subdomain":"flox","siteName":"Flox","title":"Publishing - Flox","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-05-21T14:19:39.146Z","originalFileLocation":"concepts/publishing.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=\"Understanding how to publish packages with Flox\">\u003cmeta data-mint-head name=\"application-name\" content=\"Flox\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/flox/GZA6Gh0WLJjYFtuZ/_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=\"/docs/mintlify-assets/_mintlify/favicons/flox/GZA6Gh0WLJjYFtuZ/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/flox/GZA6Gh0WLJjYFtuZ/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/flox/GZA6Gh0WLJjYFtuZ/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/flox/GZA6Gh0WLJjYFtuZ/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/flox/GZA6Gh0WLJjYFtuZ/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/flox/GZA6Gh0WLJjYFtuZ/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/flox/GZA6Gh0WLJjYFtuZ/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/flox/GZA6Gh0WLJjYFtuZ/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Publishing - Flox\">\u003cmeta data-mint-head property=\"og:description\" content=\"Understanding how to publish packages with Flox\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Flox\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://flox.dev/docs/concepts/publishing\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://flox.mintlify.site/docs/_mintlify/api/og/v2?division=Concepts\u0026amp;title=Publishing\u0026amp;description=Understanding+how+to+publish+packages+with+Flox\u0026amp;theme=499e841fe95ca0b9c8be2d34\u0026amp;signature=130b4d13d6d5fce016b5b3c31c7863ffb2e7cb5b783d08c6e24908a5f04094c0\">\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=\"Publishing - Flox\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Understanding how to publish packages with Flox\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://flox.mintlify.site/docs/_mintlify/api/og/v2?division=Concepts\u0026amp;title=Publishing\u0026amp;description=Understanding+how+to+publish+packages+with+Flox\u0026amp;theme=499e841fe95ca0b9c8be2d34\u0026amp;signature=130b4d13d6d5fce016b5b3c31c7863ffb2e7cb5b783d08c6e24908a5f04094c0\">\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=\"/docs/mintlify-assets/_mintlify/favicons/flox/GZA6Gh0WLJjYFtuZ/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Flox\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#8D45FF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://flox.dev/docs/concepts/publishing\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/concepts/publishing.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://flox.dev/#organization\",\"name\":\"Flox\",\"url\":\"https://flox.dev\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/flox/TGd54292LI04fuY9/logo/light.svg?fit=max\u0026auto=format\u0026n=TGd54292LI04fuY9\u0026q=85\u0026s=a68dffe97384d4c4af5850b2c4ab2d6c\"}},{\"@type\":\"WebSite\",\"@id\":\"https://flox.dev/docs#website\",\"name\":\"Flox\",\"url\":\"https://flox.dev/docs\",\"publisher\":{\"@id\":\"https://flox.dev/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://flox.dev/docs/concepts/publishing#webpage\",\"url\":\"https://flox.dev/docs/concepts/publishing\",\"name\":\"Publishing\",\"description\":\"Understanding how to publish packages with Flox\",\"dateModified\":\"2026-05-21T14:19:39.146Z\",\"isPartOf\":{\"@id\":\"https://flox.dev/docs#website\"},\"breadcrumb\":{\"@id\":\"https://flox.dev/docs/concepts/publishing#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://flox.dev/docs/concepts/publishing#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Concepts\",\"item\":\"https://flox.dev/docs/concepts/environments\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Publishing\",\"item\":\"https://flox.dev/docs/concepts/publishing\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://flox.dev/docs/concepts/publishing#article\",\"headline\":\"Publishing\",\"name\":\"Publishing\",\"description\":\"Understanding how to publish packages with Flox\",\"url\":\"https://flox.dev/docs/concepts/publishing\",\"mainEntityOfPage\":{\"@id\":\"https://flox.dev/docs/concepts/publishing#webpage\"},\"dateModified\":\"2026-05-21T14:19:39.146Z\",\"publisher\":{\"@id\":\"https://flox.dev/#organization\"},\"isPartOf\":{\"@id\":\"https://flox.dev/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Flox\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Flox","nav":{"global":null,"tabs":[{"tab":"Documentation","groups":[{"group":"Introduction","pages":[{"title":"Introduction","href":""}]},{"group":"Install Flox","pages":[{"title":"Install Flox","href":"/install-flox/install"},{"title":"Uninstall Flox","href":"/install-flox/uninstall"},{"title":"Troubleshooting installation","href":"/install-flox/troubleshooting"},{"title":"Extensions","href":"/install-flox/ide-extensions"}]},{"group":"Quickstart","pages":[{"title":"Flox in 5 minutes","href":"/flox-5-minutes"}]},{"group":"Tutorials","pages":[{"title":"Creating environments","href":"/tutorials/creating-environments"},{"title":"The default environment","href":"/tutorials/default-environment"},{"title":"Example default environments","href":"/tutorials/default-environment-examples"},{"title":"Sharing your environments","href":"/tutorials/sharing-environments"},{"title":"Layering multiple environments","href":"/tutorials/layering-multiple-environments"},{"title":"Customizing the shell environment","href":"/tutorials/customizing-environments"},{"title":"Designing cross-platform environments","href":"/tutorials/multi-arch-environments"},{"title":"Build and publish packages","href":"/tutorials/build-and-publish"},{"title":"Using a newer version of a package","href":"/tutorials/overriding-packages"},{"title":"Running Flox in CI/CD","href":"/tutorials/ci-cd"},{"title":"Reusing and combining developer environments","href":"/tutorials/composition"},{"title":"Selecting package outputs","href":"/tutorials/package-outputs"},{"title":"Flox + CUDA tutorial","href":"/tutorials/cuda"},{"title":"Flox and systemd","href":"/tutorials/flox-and-systemd"},{"title":"Installing Flox from its repository on Debian and Red Hat","href":"/tutorials/installing-from-repo"},{"group":"Migration guides","pages":[{"title":"Homebrew","href":"/tutorials/migrations/homebrew"},{"title":"Node Version Manager (nvm)","href":"/tutorials/migrations/nvm"}]}]},{"group":"Imageless Kubernetes","pages":[{"title":"Imageless Kubernetes Introduction","href":"/imageless-kubernetes/intro"},{"title":"Tech","href":"/imageless-kubernetes/tech"},{"group":"Installation","pages":[{"title":"Amazon EKS","href":"/imageless-kubernetes/install/eks"},{"title":"Self-managed Kubernetes","href":"/imageless-kubernetes/install/self-managed"},{"title":"Troubleshooting","href":"/imageless-kubernetes/install/troubleshooting"},{"title":"Upgrading","href":"/imageless-kubernetes/install/upgrading"},{"title":"Uninstall","href":"/imageless-kubernetes/install/uninstall"}]},{"group":"Examples","pages":[{"title":"GitLab CI","href":"/imageless-kubernetes/examples/gitlab-ci"},{"title":"Web server with Redis on kind","href":"/imageless-kubernetes/examples/kind-demo"}]},{"title":"Configuration","href":"/imageless-kubernetes/config"}]},{"group":"Concepts","pages":[{"title":"What is a Flox environment?","href":"/concepts/environments"},{"title":"Activating environments","href":"/concepts/activation"},{"title":"Auto-activation","href":"/concepts/auto-activation"},{"title":"Compatibility policy","href":"/concepts/compatibility"},{"title":"What is FloxHub?","href":"/concepts/floxhub"},{"title":"FloxHub environments","href":"/concepts/floxhub-environments"},{"title":"What is a generation?","href":"/concepts/generations"},{"title":"What is the Flox Catalog?","href":"/concepts/packages-and-catalog"},{"title":"Package Groups","href":"/concepts/package-groups"},{"title":"What is the Base Catalog?","href":"/concepts/base-catalog"},{"title":"CUDA packages in the Flox Catalog and binary cache","href":"/concepts/cuda-catalog-and-cache"},{"title":"Services","href":"/concepts/services"},{"title":"Composing environments","href":"/concepts/composition"},{"title":"Authentication","href":"/concepts/authentication"},{"title":"What Flox collects","href":"/concepts/data-collection"},{"title":"Understanding Organizations in FloxHub","href":"/concepts/organizations"},{"title":"Enterprise SSO","href":"/concepts/enterprise-sso"},{"title":"Service accounts","href":"/concepts/service-accounts"},{"title":"Personal access tokens","href":"/concepts/personal-access-tokens"},{"title":"Builds","href":"/concepts/builds"},{"title":"Manifest Builds","href":"/concepts/manifest-builds"},{"title":"Nix expression builds","href":"/concepts/nix-expression-builds"},{"title":"Catalog imports","description":"Import packages from external catalogs for Nix expression builds","href":"/concepts/catalog-imports"},{"title":"Publishing","href":"/concepts/publishing"},{"title":"Secrets management","description":"Managing secrets in Flox environments using just-in-time retrieval","href":"/concepts/secrets-management"},{"title":"Plugins","href":"/concepts/plugins"},{"title":"Flox vs. container workflows","href":"/concepts/flox-vs-containers"}]},{"group":"Languages","pages":[{"title":"C/C++","href":"/languages/c"},{"title":"Go","href":"/languages/go"},{"title":"JVM","href":"/languages/jvm"},{"title":"Node.js","href":"/languages/nodejs"},{"title":"Python","href":"/languages/python"},{"title":"Ruby","href":"/languages/ruby"},{"title":"Rust","href":"/languages/rust"}]},{"group":"Customer","pages":[{"title":"Catalog Store","href":"/customer/catalog-store"},{"title":"Known issues","href":"/customer/known-issues"},{"title":"Signing keys","href":"/customer/signing-keys"}]}]},{"tab":"CLI reference","pages":[{"title":"CLI reference","href":"/man/flox"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog"}]}]},"basePath":"","title":"Publishing - Flox","buildId":"dpl_BSPUBxEoKhhK7HzXVDPxdPvWx4xc","deploymentId":"dpl_BSPUBxEoKhhK7HzXVDPxdPvWx4xc","dynamics":[],"chunks":[]}