Skip to content

sovereignfs/sovereignfs.github.io

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

<!DOCTYPE html>
<html lang="en-US" dir="ltr">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <title>Contributor documentation | Sovereign</title>
    <meta name="description" content="Set up, change, verify, and propose improvements to Sovereign.">
    <meta name="generator" content="VitePress v1.6.4">
    <link rel="preload stylesheet" href="/assets/style.BIlqBDqP.css" as="style">
    <link rel="preload stylesheet" href="/vp-icons.css" as="style">
    
    <script type="module" src="/assets/app.DShO4D1G.js"></script>
    <link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
    <link rel="modulepreload" href="/assets/chunks/theme.BmVQF18v.js">
    <link rel="modulepreload" href="/assets/chunks/framework.CHeM0PsO.js">
    <link rel="modulepreload" href="/assets/docs_contributing.md.B42xq8z5.lean.js">
    <link rel="icon" type="image/svg+xml" href="/favicon.svg">
    <link rel="apple-touch-icon" href="/apple-touch-icon.png">
    <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
    <script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
    <link rel="canonical" href="https://sovereignfs.github.io/docs/contributing">
    <meta property="og:type" content="website">
    <meta property="og:site_name" content="Sovereign">
    <meta property="og:title" content="Contributor documentation | Sovereign">
    <meta property="og:description" content="Set up, change, verify, and propose improvements to Sovereign.">
    <meta property="og:url" content="https://sovereignfs.github.io/docs/contributing">
    <meta property="og:image" content="https://sovereignfs.github.io/social-preview.png">
    <meta name="twitter:card" content="summary_large_image">
    <meta name="twitter:title" content="Contributor documentation | Sovereign">
    <meta name="twitter:description" content="Set up, change, verify, and propose improvements to Sovereign.">
    <meta name="twitter:image" content="https://sovereignfs.github.io/social-preview.png">
  </head>
  <body>
    <div id="app"><div class="Layout" data-v-715c0237><!--[--><!--]--><!--[--><span tabindex="-1" data-v-c20d2363></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-c20d2363>Skip to content</a><!--]--><!----><header class="VPNav" data-v-715c0237 data-v-a762df62><div class="VPNavBar" data-v-a762df62 data-v-b6b841c0><div class="wrapper" data-v-b6b841c0><div class="container" data-v-b6b841c0><div class="title" data-v-b6b841c0><div class="VPNavBarTitle has-sidebar" data-v-b6b841c0 data-v-27bf94fe><a class="title" href="/" data-v-27bf94fe><!--[--><!--]--><!----><span data-v-27bf94fe>Sovereign</span><!--[--><!--]--></a></div></div><div class="content" data-v-b6b841c0><div class="content-body" data-v-b6b841c0><!--[--><!--]--><div class="VPNavBarSearch search" data-v-b6b841c0><!--[--><!----><div id="local-search"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-b6b841c0 data-v-7f9a5953><span id="main-nav-aria-label" class="visually-hidden" data-v-7f9a5953> Main Navigation </span><!--[--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-7f9a5953 data-v-2c06edda><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-2c06edda><span class="text" data-v-2c06edda><!----><span data-v-2c06edda>Product</span><span class="vpi-chevron-down text-icon" data-v-2c06edda></span></span></button><div class="menu" data-v-2c06edda><div class="VPMenu" data-v-2c06edda data-v-aa41a574><div class="items" data-v-aa41a574><!--[--><!--[--><div class="VPMenuLink" data-v-aa41a574 data-v-7e2521cb><a class="VPLink link" href="/" data-v-7e2521cb><!--[--><span data-v-7e2521cb>Sovereign</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-aa41a574 data-v-7e2521cb><a class="VPLink link" href="/sovereign-os/" data-v-7e2521cb><!--[--><span data-v-7e2521cb>Sovereign OS</span><!--]--></a></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/instances.html" tabindex="0" data-v-7f9a5953 data-v-63942258><!--[--><span data-v-63942258>Instances</span><!--]--></a><!--]--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-7f9a5953 data-v-2c06edda><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-2c06edda><span class="text" data-v-2c06edda><!----><span data-v-2c06edda>Docs</span><span class="vpi-chevron-down text-icon" data-v-2c06edda></span></span></button><div class="menu" data-v-2c06edda><div class="VPMenu" data-v-2c06edda data-v-aa41a574><div class="items" data-v-aa41a574><!--[--><!--[--><div class="VPMenuLink" data-v-aa41a574 data-v-7e2521cb><a class="VPLink link" href="/get-started/" data-v-7e2521cb><!--[--><span data-v-7e2521cb>Get Started</span><!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-aa41a574 data-v-7e2521cb><a class="VPLink link" href="/docs/" data-v-7e2521cb><!--[--><span data-v-7e2521cb>Full Documentation</span><!--]--></a></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/product-roadmap.html" tabindex="0" data-v-7f9a5953 data-v-63942258><!--[--><span data-v-63942258>Roadmap</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://github.com/sovereignfs/sovereign" target="_blank" rel="noreferrer" tabindex="0" data-v-7f9a5953 data-v-63942258><!--[--><span data-v-63942258>GitHub</span><!--]--></a><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-b6b841c0 data-v-ea9437ab><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-ea9437ab data-v-d11a2ca1 data-v-545e19d1><span class="check" data-v-545e19d1><span class="icon" data-v-545e19d1><!--[--><span class="vpi-sun sun" data-v-d11a2ca1></span><span class="vpi-moon moon" data-v-d11a2ca1></span><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-b6b841c0 data-v-78fc8d62 data-v-b533a98f><!--[--><a class="VPSocialLink no-icon" href="https://github.com/sovereignfs/sovereign" aria-label="github" target="_blank" rel="noopener" data-v-b533a98f data-v-4522f3d9><span class="vpi-social-github"></span></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-b6b841c0 data-v-0d5ff54f data-v-2c06edda><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-2c06edda><span class="vpi-more-horizontal icon" data-v-2c06edda></span></button><div class="menu" data-v-2c06edda><div class="VPMenu" data-v-2c06edda data-v-aa41a574><!----><!--[--><!--[--><!----><div class="group" data-v-0d5ff54f><div class="item appearance" data-v-0d5ff54f><p class="label" data-v-0d5ff54f>Appearance</p><div class="appearance-action" data-v-0d5ff54f><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-0d5ff54f data-v-d11a2ca1 data-v-545e19d1><span class="check" data-v-545e19d1><span class="icon" data-v-545e19d1><!--[--><span class="vpi-sun sun" data-v-d11a2ca1></span><span class="vpi-moon moon" data-v-d11a2ca1></span><!--]--></span></span></button></div></div></div><div class="group" data-v-0d5ff54f><div class="item social-links" data-v-0d5ff54f><div class="VPSocialLinks social-links-list" data-v-0d5ff54f data-v-b533a98f><!--[--><a class="VPSocialLink no-icon" href="https://github.com/sovereignfs/sovereign" aria-label="github" target="_blank" rel="noopener" data-v-b533a98f data-v-4522f3d9><span class="vpi-social-github"></span></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-b6b841c0 data-v-ce597b2c><span class="container" data-v-ce597b2c><span class="top" data-v-ce597b2c></span><span class="middle" data-v-ce597b2c></span><span class="bottom" data-v-ce597b2c></span></span></button></div></div></div></div><div class="divider" data-v-b6b841c0><div class="divider-line" data-v-b6b841c0></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-715c0237 data-v-f158f50d><div class="container" data-v-f158f50d><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-f158f50d><span class="vpi-align-left menu-icon" data-v-f158f50d></span><span class="menu-text" data-v-f158f50d>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-f158f50d data-v-4d8a5c57><button data-v-4d8a5c57>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-715c0237 data-v-360d37b6><div class="curtain" data-v-360d37b6></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-360d37b6><span class="visually-hidden" id="sidebar-aria-label" data-v-360d37b6> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-f954693f><section class="VPSidebarItem level-0 has-active" data-v-f954693f data-v-aeb3effe><div class="item" role="button" tabindex="0" data-v-aeb3effe><div class="indicator" data-v-aeb3effe></div><h2 class="text" data-v-aeb3effe>Documentation</h2><!----></div><div class="items" data-v-aeb3effe><!--[--><div class="VPSidebarItem level-1 is-link" data-v-aeb3effe><div class="item" data-v-aeb3effe><div class="indicator" data-v-aeb3effe></div><a class="VPLink link link" href="/docs/" data-v-aeb3effe><!--[--><p class="text" data-v-aeb3effe>Documentation Home</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-aeb3effe><div class="item" data-v-aeb3effe><div class="indicator" data-v-aeb3effe></div><a class="VPLink link link" href="/docs/users.html" data-v-aeb3effe><!--[--><p class="text" data-v-aeb3effe>Use Sovereign</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-aeb3effe><div class="item" data-v-aeb3effe><div class="indicator" data-v-aeb3effe></div><a class="VPLink link link" href="/docs/pwa.html" data-v-aeb3effe><!--[--><p class="text" data-v-aeb3effe>Install as an App</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-aeb3effe><div class="item" data-v-aeb3effe><div class="indicator" data-v-aeb3effe></div><a class="VPLink link link" href="/docs/operators.html" data-v-aeb3effe><!--[--><p class="text" data-v-aeb3effe>Operate Sovereign</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-aeb3effe><div class="item" data-v-aeb3effe><div class="indicator" data-v-aeb3effe></div><a class="VPLink link link" href="/docs/developers.html" data-v-aeb3effe><!--[--><p class="text" data-v-aeb3effe>Build Apps</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-aeb3effe><div class="item" data-v-aeb3effe><div class="indicator" data-v-aeb3effe></div><a class="VPLink link link" href="/docs/architecture.html" data-v-aeb3effe><!--[--><p class="text" data-v-aeb3effe>Architecture & Security</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-aeb3effe><div class="item" data-v-aeb3effe><div class="indicator" data-v-aeb3effe></div><a class="VPLink link link" href="/docs/contributing.html" data-v-aeb3effe><!--[--><p class="text" data-v-aeb3effe>Contribute</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-715c0237 data-v-41cd1916><div class="VPDoc has-sidebar has-aside" data-v-41cd1916 data-v-d9bf7dc2><!--[--><!--]--><div class="container" data-v-d9bf7dc2><div class="aside" data-v-d9bf7dc2><div class="aside-curtain" data-v-d9bf7dc2></div><div class="aside-container" data-v-d9bf7dc2><div class="aside-content" data-v-d9bf7dc2><div class="VPDocAside" data-v-d9bf7dc2 data-v-a7bc4d01><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-a7bc4d01 data-v-77892794><div class="content" data-v-77892794><div class="outline-marker" data-v-77892794></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-77892794>On this page</div><ul class="VPDocOutlineItem root" data-v-77892794 data-v-9a6a84b8><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-a7bc4d01></div><!--[--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-d9bf7dc2><div class="content-container" data-v-d9bf7dc2><!--[--><!--]--><main class="main" data-v-d9bf7dc2><div style="position:relative;" class="vp-doc _docs_contributing" data-v-d9bf7dc2><div><h1 id="contributor-documentation" tabindex="-1">Contributor documentation <a class="header-anchor" href="#contributor-documentation" aria-label="Permalink to &quot;Contributor documentation&quot;">​</a></h1><p>Sovereign uses explicit task assignment, one branch per task, architecture boundaries, and verification before review.</p><h2 id="project-workflow" tabindex="-1">Project workflow <a class="header-anchor" href="#project-workflow" aria-label="Permalink to &quot;Project workflow&quot;">​</a></h2><ul><li><a href="/repositories.html">Repository map</a></li><li><a href="/documentation-structure.html">Documentation structure and ownership</a></li><li><a href="/development-workflow.html">Development workflow</a></li><li><a href="/architecture-rules.html">Architecture rules</a></li><li><a href="/testing-e2e.html">End-to-end testing</a></li><li><a href="/agent-first-documentation.html">Agent-first documentation</a></li></ul><h2 id="propose-a-design" tabindex="-1">Propose a design <a class="header-anchor" href="#propose-a-design" aria-label="Permalink to &quot;Propose a design&quot;">​</a></h2><p>Use an RFC for changes that affect architecture, security, public contracts, or cross-cutting product behavior. Start with the <a href="/rfcs/README.html">RFC index</a> and its template.</p><h2 id="source" tabindex="-1">Source <a class="header-anchor" href="#source" aria-label="Permalink to &quot;Source&quot;">​</a></h2><p><a href="https://github.com/sovereignfs/sovereign" target="_blank" rel="noreferrer">Open Sovereign on GitHub</a></p></div></div></main><footer class="VPDocFooter" data-v-d9bf7dc2 data-v-83d8eeda><!--[--><!--]--><!----><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-83d8eeda><span class="visually-hidden" id="doc-footer-aria-label" data-v-83d8eeda>Pager</span><div class="pager" data-v-83d8eeda><a class="VPLink link pager-link prev" href="/docs/architecture.html" data-v-83d8eeda><!--[--><span class="desc" data-v-83d8eeda>Previous page</span><span class="title" data-v-83d8eeda>Architecture & Security</span><!--]--></a></div><div class="pager" data-v-83d8eeda><!----></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-715c0237 data-v-0094cebd><div class="container" data-v-0094cebd><p class="message" data-v-0094cebd>Open source under AGPL-3.0. Each Sovereign instance is independently operated.</p><p class="copyright" data-v-0094cebd>Sovereign</p></div></footer><!--[--><!--]--></div></div>
    <script>window.__VP_HASH_MAP__=JSON.parse("{\"agent-first-documentation.md\":\"CmQ9uZ2U\",\"architecture-rules.md\":\"Cl69TG-E\",\"architecture.md\":\"pHZYMije\",\"design-system.md\":\"DzY2KQs6\",\"development-workflow.md\":\"v9WarNr_\",\"docs_architecture.md\":\"CTvtqEJD\",\"docs_contributing.md\":\"B42xq8z5\",\"docs_developers.md\":\"u0c0kF0l\",\"docs_index.md\":\"C1416hhU\",\"docs_operators.md\":\"BzmbkU9Y\",\"docs_pwa.md\":\"C5wA0Xg-\",\"docs_users.md\":\"CkufVO3w\",\"documentation-structure.md\":\"CSepk7Zl\",\"get-started_developers.md\":\"Cd21BajS\",\"get-started_index.md\":\"wEQNAJKH\",\"get-started_operators.md\":\"DfsGlfLb\",\"get-started_users.md\":\"DvHHggUB\",\"index.md\":\"C7tElUdp\",\"instances.md\":\"BF3w1-Ow\",\"plugin-database.md\":\"B0HKu7yT\",\"plugin-development.md\":\"DdOedGV5\",\"plugins_account.md\":\"BTJtLwJt\",\"plugins_console.md\":\"DkV6lRyL\",\"plugins_launcher.md\":\"BX-BziDV\",\"product-roadmap.md\":\"-EY1dEXj\",\"product_apps.md\":\"DkM3I9XC\",\"product_features.md\":\"BVncgaJX\",\"product_how-it-works.md\":\"Bu8Ef18G\",\"product_index.md\":\"D0cgdprY\",\"product_why-sovereign.md\":\"DEHJ0FlN\",\"pwa-real-device-testing.md\":\"CItwnEQF\",\"repositories.md\":\"5ZCACxqy\",\"rfcs_0001-overlay-shell-variant.md\":\"vvJidCFH\",\"rfcs_0002-cross-plugin-data-sharing.md\":\"DM5YxVRN\",\"rfcs_0003-plugin-monetization.md\":\"cq6Tk2-Y\",\"rfcs_0004-per-plugin-database.md\":\"CwnzpSci\",\"rfcs_0005-activity-log.md\":\"DYzfMNp9\",\"rfcs_0006-deployment-upgrade-strategy.md\":\"CM6iGaWr\",\"rfcs_0007-user-data-portability.md\":\"sXYh6TM7\",\"rfcs_0008-security-encryption-architecture.md\":\"DcoOkSLt\",\"rfcs_0009-internal-package-codenames.md\":\"BWHdFpI2\",\"rfcs_0010-test-organization.md\":\"Bqc9joPJ\",\"rfcs_0011-icon-system.md\":\"5Sv8QWaY\",\"rfcs_0012-passkeys-and-mfa.md\":\"DjI-taH4\",\"rfcs_0013-mobile-responsiveness-pwa.md\":\"DwZoKtJb\",\"rfcs_0014-minimal-shell-mode.md\":\"D7ZykUa0\",\"rfcs_0015-notification-center.md\":\"QNs0dD6A\",\"rfcs_0016-web-push.md\":\"CGSa5XX2\",\"rfcs_0017-plugin-starter-and-examples.md\":\"BAri0NZb\",\"rfcs_0018-plugin-scoped-env.md\":\"CZwRAMom\",\"rfcs_0019-test-setup-and-seeding.md\":\"DpwFekRi\",\"rfcs_0020-production-dev-mode.md\":\"Di6ptx6Y\",\"rfcs_0021-platform-roles-and-capabilities.md\":\"8HUNQr4u\",\"rfcs_0022-plugin-capabilities.md\":\"Dob9F4yZ\",\"rfcs_0023-sdk-distribution.md\":\"Bj-eYkYo\",\"rfcs_0024-plugin-compatibility.md\":\"CshTbJfZ\",\"rfcs_0025-accessibility.md\":\"jCEAUNa-\",\"rfcs_0026-non-docker-deployment.md\":\"CRQvrbmp\",\"rfcs_0027-white-labeling.md\":\"B7WSxyFt\",\"rfcs_0028-operator-fork-model.md\":\"D4VfDNFP\",\"rfcs_0029-internationalization.md\":\"BzpEhgCU\",\"rfcs_0030-privacy-first-analytics.md\":\"X7QiqoZ5\",\"rfcs_0031-email-templates.md\":\"Dn1TDcGo\",\"rfcs_0032-instance-identity-rename.md\":\"Cgcv5Ppw\",\"rfcs_0033-user-data-deletion.md\":\"TRHdaPr0\",\"rfcs_0034-notification-transport.md\":\"DRD3C2o2\",\"rfcs_0035-progressive-user-verification.md\":\"BNvXOJIB\",\"rfcs_0036-per-plugin-dialect.md\":\"BigHhmEf\",\"rfcs_0037-vitepress-docs-site.md\":\"CXv6pThB\",\"rfcs_0038-desktop-app-shell.md\":\"Dt0samoy\",\"rfcs_0039-instance-id-and-terminology.md\":\"DPzX0tQF\",\"rfcs_0040-sovereign-harness.md\":\"CMAO2wm4\",\"rfcs_0041-user-directory.md\":\"DE8UEQ26\",\"rfcs_0042-public-plugin-routes.md\":\"CuN3jeiW\",\"rfcs_0043-plugin-secret-vault.md\":\"CYVwkrzl\",\"rfcs_0044-plugin-storage.md\":\"f2OlNBqK\",\"rfcs_0045-plugin-events.md\":\"1eXtUWDm\",\"rfcs_0046-plugin-jobs.md\":\"C7ZB6kYP\",\"rfcs_0047-plugin-tools.md\":\"9VhGqGjO\",\"rfcs_0048-messages-and-notification-detail.md\":\"BxempQdG\",\"rfcs_0049-plugin-external-connections.md\":\"DDs1tJNq\",\"rfcs_0050-public-plugin-webhooks.md\":\"CZqrqXr1\",\"rfcs_0051-cross-plugin-references.md\":\"CxcbuQRM\",\"rfcs_0052-plugin-portability-hooks.md\":\"CG3w5i84\",\"rfcs_0053-plugin-flow-handoffs.md\":\"p9jyXoOp\",\"rfcs_0054-plugin-scoped-roles-and-grants.md\":\"6FQAVqyQ\",\"rfcs_0055-sovereign-council.md\":\"C24pgP24\",\"rfcs_0056-sovereign-guide.md\":\"MYmlqvzs\",\"rfcs_0057-plugin-dep-hoisting.md\":\"DT5r1KJO\",\"rfcs_0058-native-mobile-app-shell.md\":\"BbQWeRx4\",\"rfcs_0059-local-visual-regression-testing.md\":\"BoVadqeA\",\"rfcs_0060-client-side-encryption-core.md\":\"CYSfngI_\",\"rfcs_0061-sovereign-wallet.md\":\"3-YMVh3T\",\"rfcs_0062-email-delivery-coverage.md\":\"BvhhuQrj\",\"rfcs_0063-core-assistant-jarvis.md\":\"CtWnYbDP\",\"rfcs_0064-git-backed-operator-backups.md\":\"CPFMz5c2\",\"rfcs_0065-user-groups-plugin-access.md\":\"BI6AH5kN\",\"rfcs_0066-sovereign-chat-p2p-identity.md\":\"Bnqamz2T\",\"rfcs_0067-product-led-docs-site.md\":\"BnOctNPU\",\"rfcs_0068-export-completeness-hardening.md\":\"P1Kcc-5s\",\"rfcs_0069-bring-your-own-database.md\":\"BCtSkrVT\",\"rfcs_0070-per-user-capability-grants.md\":\"Cr5mZ3uV\",\"rfcs_0071-sqlite-at-rest-encryption.md\":\"DSyJMk4E\",\"rfcs_readme.md\":\"ASTcCfyD\",\"sdk-stability.md\":\"AzSRLjD0\",\"security.md\":\"CRT5kNbd\",\"self-hosting.md\":\"BofGSvb_\",\"sovereign-os_adrs_0001-phase-01-appliance-architecture.md\":\"D46xajjU\",\"sovereign-os_adrs_0002-install-images-and-update-artifacts.md\":\"C3L2S8mQ\",\"sovereign-os_adrs_0003-preview-bootstrap-access.md\":\"DIKCmAT8\",\"sovereign-os_adrs_0004-provider-neutral-assistant-and-web-search.md\":\"BLaVS-YP\",\"sovereign-os_adrs_0005-sovereign-console-and-health-boundary.md\":\"G1_ftI3t\",\"sovereign-os_adrs_readme.md\":\"CyTCY8O2\",\"sovereign-os_concept.md\":\"BhHrt-cM\",\"sovereign-os_index.md\":\"533qWSwP\",\"sovereign-os_product_core-use-cases.md\":\"CRe30f0V\",\"sovereign-os_product_preview-scope.md\":\"JgpI2elD\",\"sovereign-os_product_target-user.md\":\"D_eNIS0o\",\"sovereign-os_product_terminology.md\":\"D0XrNM2B\",\"sovereign-os_rfcs_0010-raspberry-pi-image-deployment.md\":\"D83d3pZS\",\"sovereign-os_rfcs_0014-appliance-update-system.md\":\"BvpRpaTv\",\"sovereign-os_rfcs_readme.md\":\"CZV14_Bi\",\"sovereign-os_roadmap.md\":\"DvayB9hK\",\"testing-e2e.md\":\"Dc-biHyn\",\"troubleshooting.md\":\"BxCe9Han\",\"upgrade.md\":\"DUuZRmk7\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Sovereign\",\"description\":\"Sovereign is an open-source workspace runtime for hosting private, multi-user apps on infrastructure you control.\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"nav\":[{\"text\":\"Product\",\"items\":[{\"text\":\"Sovereign\",\"link\":\"/\"},{\"text\":\"Sovereign OS\",\"link\":\"/sovereign-os/\"}]},{\"text\":\"Instances\",\"link\":\"/instances\"},{\"text\":\"Docs\",\"items\":[{\"text\":\"Get Started\",\"link\":\"/get-started/\"},{\"text\":\"Full Documentation\",\"link\":\"/docs/\"}]},{\"text\":\"Roadmap\",\"link\":\"/product-roadmap\"},{\"text\":\"GitHub\",\"link\":\"https://github.com/sovereignfs/sovereign\"}],\"sidebar\":{\"/product/\":[{\"text\":\"Product\",\"items\":[{\"text\":\"What is Sovereign?\",\"link\":\"/product/\"},{\"text\":\"Why Sovereign?\",\"link\":\"/product/why-sovereign\"},{\"text\":\"How It Works\",\"link\":\"/product/how-it-works\"},{\"text\":\"Features\",\"link\":\"/product/features\"},{\"text\":\"Apps\",\"link\":\"/product/apps\"}]}],\"/get-started/\":[{\"text\":\"Get Started\",\"items\":[{\"text\":\"Choose a Path\",\"link\":\"/get-started/\"},{\"text\":\"Use Sovereign\",\"link\":\"/get-started/users\"},{\"text\":\"Host Sovereign\",\"link\":\"/get-started/operators\"},{\"text\":\"Build an App\",\"link\":\"/get-started/developers\"}]}],\"/docs/\":[{\"text\":\"Documentation\",\"items\":[{\"text\":\"Documentation Home\",\"link\":\"/docs/\"},{\"text\":\"Use Sovereign\",\"link\":\"/docs/users\"},{\"text\":\"Install as an App\",\"link\":\"/docs/pwa\"},{\"text\":\"Operate Sovereign\",\"link\":\"/docs/operators\"},{\"text\":\"Build Apps\",\"link\":\"/docs/developers\"},{\"text\":\"Architecture & Security\",\"link\":\"/docs/architecture\"},{\"text\":\"Contribute\",\"link\":\"/docs/contributing\"}]}],\"/rfcs/\":[{\"text\":\"RFCs\",\"items\":[{\"text\":\"RFC Index\",\"link\":\"/rfcs/README\"},{\"text\":\"RFC 0001 — Overlay shell variant\",\"link\":\"/rfcs/0001-overlay-shell-variant\"},{\"text\":\"RFC 0002 — Cross-plugin data sharing\",\"link\":\"/rfcs/0002-cross-plugin-data-sharing\"},{\"text\":\"RFC 0003 — Plugin monetization\",\"link\":\"/rfcs/0003-plugin-monetization\"},{\"text\":\"RFC 0004 — Per-plugin database\",\"link\":\"/rfcs/0004-per-plugin-database\"},{\"text\":\"RFC 0005 — Activity log\",\"link\":\"/rfcs/0005-activity-log\"},{\"text\":\"RFC 0006 — Deployment & upgrade strategy\",\"link\":\"/rfcs/0006-deployment-upgrade-strategy\"},{\"text\":\"RFC 0007 — User data export & portability\",\"link\":\"/rfcs/0007-user-data-portability\"},{\"text\":\"RFC 0008 — Security & encryption architecture\",\"link\":\"/rfcs/0008-security-encryption-architecture\"},{\"text\":\"RFC 0009 — Internal package codenames\",\"link\":\"/rfcs/0009-internal-package-codenames\"},{\"text\":\"RFC 0010 — Test file organization\",\"link\":\"/rfcs/0010-test-organization\"},{\"text\":\"RFC 0011 — Icon system (Lucide)\",\"link\":\"/rfcs/0011-icon-system\"},{\"text\":\"RFC 0012 — Passkeys & TOTP multi-factor auth\",\"link\":\"/rfcs/0012-passkeys-and-mfa\"},{\"text\":\"RFC 0013 — Mobile responsiveness & PWA hardening\",\"link\":\"/rfcs/0013-mobile-responsiveness-pwa\"},{\"text\":\"RFC 0014 — Minimal shell mode\",\"link\":\"/rfcs/0014-minimal-shell-mode\"},{\"text\":\"RFC 0015 — Notification Center\",\"link\":\"/rfcs/0015-notification-center\"},{\"text\":\"RFC 0016 — Web Push notifications\",\"link\":\"/rfcs/0016-web-push\"},{\"text\":\"RFC 0017 — Plugin starter template & example plugins\",\"link\":\"/rfcs/0017-plugin-starter-and-examples\"},{\"text\":\"RFC 0018 — Plugin-scoped environment variables\",\"link\":\"/rfcs/0018-plugin-scoped-env\"},{\"text\":\"RFC 0019 — Test setup & seeding\",\"link\":\"/rfcs/0019-test-setup-and-seeding\"},{\"text\":\"RFC 0020 — Production dev-mode & diagnostics\",\"link\":\"/rfcs/0020-production-dev-mode\"},{\"text\":\"RFC 0021 — Platform roles & capabilities\",\"link\":\"/rfcs/0021-platform-roles-and-capabilities\"},{\"text\":\"RFC 0022 — Plugin-declared capabilities\",\"link\":\"/rfcs/0022-plugin-capabilities\"},{\"text\":\"RFC 0023 — SDK distribution & the plugin isolation boundary\",\"link\":\"/rfcs/0023-sdk-distribution\"},{\"text\":\"RFC 0024 — Plugin compatibility & versioning\",\"link\":\"/rfcs/0024-plugin-compatibility\"},{\"text\":\"RFC 0025 — Accessibility (WCAG 2.1 AA)\",\"link\":\"/rfcs/0025-accessibility\"},{\"text\":\"RFC 0026 — Non-Docker production deployment\",\"link\":\"/rfcs/0026-non-docker-deployment\"},{\"text\":\"RFC 0027 — White-labeling (tenant branding)\",\"link\":\"/rfcs/0027-white-labeling\"},{\"text\":\"RFC 0028 — Operator Fork Model & Upstream Sync\",\"link\":\"/rfcs/0028-operator-fork-model\"},{\"text\":\"RFC 0029 — Internationalization / Localization (i18n)\",\"link\":\"/rfcs/0029-internationalization\"},{\"text\":\"RFC 0030 — Privacy-First Analytics\",\"link\":\"/rfcs/0030-privacy-first-analytics\"},{\"text\":\"RFC 0031 — Email Template System\",\"link\":\"/rfcs/0031-email-templates\"},{\"text\":\"RFC 0032 — Instance Identity Rename\",\"link\":\"/rfcs/0032-instance-identity-rename\"},{\"text\":\"RFC 0033 — User data deletion (Right to erasure)\",\"link\":\"/rfcs/0033-user-data-deletion\"},{\"text\":\"RFC 0034 — Notification Center — Pluggable transport (pub/sub)\",\"link\":\"/rfcs/0034-notification-transport\"},{\"text\":\"RFC 0035 — Progressive user verification\",\"link\":\"/rfcs/0035-progressive-user-verification\"},{\"text\":\"RFC 0036 — Per-plugin database dialect selection\",\"link\":\"/rfcs/0036-per-plugin-dialect\"},{\"text\":\"RFC 0037 — VitePress public docs site and project landing page\",\"link\":\"/rfcs/0037-vitepress-docs-site\"},{\"text\":\"RFC 0038 — Desktop app shell (Tauri, macOS-first)\",\"link\":\"/rfcs/0038-desktop-app-shell\"},{\"text\":\"RFC 0039 — Instance identity — instanceId field and terminology cleanup\",\"link\":\"/rfcs/0039-instance-id-and-terminology\"},{\"text\":\"RFC 0040 — Sovereign Harness — AI assistant and orchestration layer\",\"link\":\"/rfcs/0040-sovereign-harness\"},{\"text\":\"RFC 0041 — User directory and member selection SDK\",\"link\":\"/rfcs/0041-user-directory\"},{\"text\":\"RFC 0042 — Public plugin page routes\",\"link\":\"/rfcs/0042-public-plugin-routes\"},{\"text\":\"RFC 0043 — Plugin secret vault\",\"link\":\"/rfcs/0043-plugin-secret-vault\"},{\"text\":\"RFC 0044 — Plugin file storage\",\"link\":\"/rfcs/0044-plugin-storage\"},{\"text\":\"RFC 0045 — Plugin events and realtime channels\",\"link\":\"/rfcs/0045-plugin-events\"},{\"text\":\"RFC 0046 — Plugin background jobs and schedules\",\"link\":\"/rfcs/0046-plugin-jobs\"},{\"text\":\"RFC 0047 — Plugin tool contracts\",\"link\":\"/rfcs/0047-plugin-tools\"},{\"text\":\"RFC 0048 — Messages and notification detail\",\"link\":\"/rfcs/0048-messages-and-notification-detail\"},{\"text\":\"RFC 0049 — Plugin external connections\",\"link\":\"/rfcs/0049-plugin-external-connections\"},{\"text\":\"RFC 0050 — Public plugin webhooks\",\"link\":\"/rfcs/0050-public-plugin-webhooks\"},{\"text\":\"RFC 0051 — Cross-plugin references and dependency discovery\",\"link\":\"/rfcs/0051-cross-plugin-references\"},{\"text\":\"RFC 0052 — Plugin portability hooks\",\"link\":\"/rfcs/0052-plugin-portability-hooks\"},{\"text\":\"RFC 0053 — Plugin flow handoffs\",\"link\":\"/rfcs/0053-plugin-flow-handoffs\"},{\"text\":\"RFC 0054 — Plugin-scoped roles and grants\",\"link\":\"/rfcs/0054-plugin-scoped-roles-and-grants\"},{\"text\":\"RFC 0055 — Sovereign Council — multi-model deliberation workspace\",\"link\":\"/rfcs/0055-sovereign-council\"},{\"text\":\"RFC 0056 — Sovereign Guide — first-run guide platform plugin\",\"link\":\"/rfcs/0056-sovereign-guide\"},{\"text\":\"RFC 0057 — Plugin external dependency resolution — automatic runtime dep hoisting on plugin add/remove\",\"link\":\"/rfcs/0057-plugin-dep-hoisting\"},{\"text\":\"RFC 0058 — Native mobile app shell (Capacitor)\",\"link\":\"/rfcs/0058-native-mobile-app-shell\"},{\"text\":\"RFC 0059 — Local visual regression testing\",\"link\":\"/rfcs/0059-local-visual-regression-testing\"},{\"text\":\"RFC 0060 — Client-side encryption core\",\"link\":\"/rfcs/0060-client-side-encryption-core\"},{\"text\":\"RFC 0061 — Sovereign Wallet platform plugin\",\"link\":\"/rfcs/0061-sovereign-wallet\"},{\"text\":\"RFC 0062 — Email delivery coverage\",\"link\":\"/rfcs/0062-email-delivery-coverage\"},{\"text\":\"RFC 0063 — Core Assistant, Jarvis UI, and Local Inference Sidecar\",\"link\":\"/rfcs/0063-core-assistant-jarvis\"},{\"text\":\"RFC 0064 — Git-backed operator backups\",\"link\":\"/rfcs/0064-git-backed-operator-backups\"},{\"text\":\"RFC 0065 — User groups and plugin access policy\",\"link\":\"/rfcs/0065-user-groups-plugin-access\"},{\"text\":\"RFC 0066 — Sovereign Chat companion app, peer identity, and P2P transport\",\"link\":\"/rfcs/0066-sovereign-chat-p2p-identity\"},{\"text\":\"RFC 0067 — Product-led docs site and instance directory\",\"link\":\"/rfcs/0067-product-led-docs-site\"},{\"text\":\"RFC 0068 — Export completeness hardening\",\"link\":\"/rfcs/0068-export-completeness-hardening\"},{\"text\":\"RFC 0069 — Bring-your-own database (per-user external Postgres)\",\"link\":\"/rfcs/0069-bring-your-own-database\"},{\"text\":\"RFC 0070 — Per-user capability grants\",\"link\":\"/rfcs/0070-per-user-capability-grants\"},{\"text\":\"RFC 0071 — SQLite at-rest encryption (opt-in, single-key)\",\"link\":\"/rfcs/0071-sqlite-at-rest-encryption\"}]}],\"/sovereign-os/product/\":[{\"text\":\"← Sovereign\",\"link\":\"/\"},{\"text\":\"Product\",\"items\":[{\"text\":\"Target User\",\"link\":\"/sovereign-os/product/target-user\"},{\"text\":\"Core Use Cases\",\"link\":\"/sovereign-os/product/core-use-cases\"},{\"text\":\"Preview Scope\",\"link\":\"/sovereign-os/product/preview-scope\"},{\"text\":\"Terminology\",\"link\":\"/sovereign-os/product/terminology\"}]}],\"/sovereign-os/rfcs/\":[{\"text\":\"← Sovereign\",\"link\":\"/\"},{\"text\":\"RFCs\",\"items\":[{\"text\":\"RFC Index\",\"link\":\"/sovereign-os/rfcs/README\"},{\"text\":\"RFC-0010: Raspberry Pi Image Deployment\",\"link\":\"/sovereign-os/rfcs/0010-raspberry-pi-image-deployment\"},{\"text\":\"RFC-0014: Appliance Update System\",\"link\":\"/sovereign-os/rfcs/0014-appliance-update-system\"}]}],\"/sovereign-os/adrs/\":[{\"text\":\"← Sovereign\",\"link\":\"/\"},{\"text\":\"ADRs\",\"items\":[{\"text\":\"ADR Index\",\"link\":\"/sovereign-os/adrs/README\"},{\"text\":\"ADR-0001: Phase 01 Pi-hole Appliance Architecture\",\"link\":\"/sovereign-os/adrs/0001-phase-01-appliance-architecture\"},{\"text\":\"ADR-0002: Separate Installation Images from Update Artifacts\",\"link\":\"/sovereign-os/adrs/0002-install-images-and-update-artifacts\"},{\"text\":\"ADR-0003: Preview Bootstrap Access\",\"link\":\"/sovereign-os/adrs/0003-preview-bootstrap-access\"},{\"text\":\"ADR-0004: Provider-Neutral Assistant and Web Search\",\"link\":\"/sovereign-os/adrs/0004-provider-neutral-assistant-and-web-search\"},{\"text\":\"ADR-0005: Sovereign Console Namespace and Health Boundary\",\"link\":\"/sovereign-os/adrs/0005-sovereign-console-and-health-boundary\"}]}],\"/sovereign-os/\":[{\"text\":\"← Sovereign\",\"link\":\"/\"},{\"text\":\"Sovereign OS\",\"items\":[{\"text\":\"Concept\",\"link\":\"/sovereign-os/concept\"},{\"text\":\"Product\",\"link\":\"/sovereign-os/product/target-user\"},{\"text\":\"Roadmap\",\"link\":\"/sovereign-os/roadmap\"},{\"text\":\"RFCs\",\"link\":\"/sovereign-os/rfcs/README\"},{\"text\":\"ADRs\",\"link\":\"/sovereign-os/adrs/README\"}]}],\"/\":[{\"text\":\"Operator Guides\",\"items\":[{\"text\":\"Self-Hosting\",\"link\":\"/self-hosting\"},{\"text\":\"Upgrade Guide\",\"link\":\"/upgrade\"},{\"text\":\"Troubleshooting\",\"link\":\"/troubleshooting\"}]},{\"text\":\"App Developer Guides\",\"items\":[{\"text\":\"Overview\",\"link\":\"/plugin-development\"},{\"text\":\"SDK Stability\",\"link\":\"/sdk-stability\"},{\"text\":\"Plugin Database\",\"link\":\"/plugin-database\"},{\"text\":\"Design System\",\"link\":\"/design-system\"}]},{\"text\":\"Architecture & Security\",\"items\":[{\"text\":\"Architecture\",\"link\":\"/architecture\"},{\"text\":\"Security\",\"link\":\"/security\"},{\"text\":\"Repository Map\",\"link\":\"/repositories\"}]},{\"text\":\"Core Plugins\",\"items\":[{\"text\":\"Console\",\"link\":\"/plugins/console\"},{\"text\":\"Launcher\",\"link\":\"/plugins/launcher\"},{\"text\":\"Account\",\"link\":\"/plugins/account\"}]},{\"text\":\"Contributor Guides\",\"items\":[{\"text\":\"Documentation Structure\",\"link\":\"/documentation-structure\"},{\"text\":\"Development Workflow\",\"link\":\"/development-workflow\"},{\"text\":\"Agent-First Documentation\",\"link\":\"/agent-first-documentation\"},{\"text\":\"Architecture Rules\",\"link\":\"/architecture-rules\"},{\"text\":\"Testing E2E\",\"link\":\"/testing-e2e\"},{\"text\":\"PWA Device Testing\",\"link\":\"/pwa-real-device-testing\"}]},{\"text\":\"RFCs\",\"collapsed\":true,\"items\":[{\"text\":\"RFC Index\",\"link\":\"/rfcs/README\"}]}]},\"search\":{\"provider\":\"local\"},\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://github.com/sovereignfs/sovereign\"}],\"footer\":{\"message\":\"Open source under AGPL-3.0. Each Sovereign instance is independently operated.\",\"copyright\":\"Sovereign\"}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
    
  </body>
</html>

About

Documentation and landing page for Sovereign — a self-hostable, privacy-first workspace runtime

Topics

Contributing

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages