[{"data":1,"prerenderedAt":454},["ShallowReactive",2],{"navigation_docs":3,"section-navigation-docs":130,"-docs-workspaces":164,"-docs-workspaces-surround":361,"doc-previews":366},[4,8,50,54,58,62,66,70,74,78,82,86,90,94,98,102,106,110,114,118,122,126],{"title":5,"path":6,"stem":7},"Quickstart","\u002Fdocs\u002Fquickstart","docs\u002F01.quickstart",{"title":9,"path":10,"stem":11,"children":12},"Guides","\u002Fdocs\u002Fguides","docs\u002F02.guides\u002Findex",[13,14,18,22,26,30,34,38,42,46],{"title":9,"path":10,"stem":11},{"title":15,"path":16,"stem":17},"Next.js","\u002Fdocs\u002Fguides\u002Fnextjs","docs\u002F02.guides\u002F1.nextjs",{"title":19,"path":20,"stem":21},"Nuxt","\u002Fdocs\u002Fguides\u002Fnuxt","docs\u002F02.guides\u002F2.nuxt",{"title":23,"path":24,"stem":25},"SvelteKit","\u002Fdocs\u002Fguides\u002Fsveltekit","docs\u002F02.guides\u002F3.sveltekit",{"title":27,"path":28,"stem":29},"Astro","\u002Fdocs\u002Fguides\u002Fastro","docs\u002F02.guides\u002F4.astro",{"title":31,"path":32,"stem":33},"Express","\u002Fdocs\u002Fguides\u002Fexpress","docs\u002F02.guides\u002F5.express",{"title":35,"path":36,"stem":37},"FastAPI","\u002Fdocs\u002Fguides\u002Ffastapi","docs\u002F02.guides\u002F6.fastapi",{"title":39,"path":40,"stem":41},"Django","\u002Fdocs\u002Fguides\u002Fdjango","docs\u002F02.guides\u002F7.django",{"title":43,"path":44,"stem":45},"Laravel","\u002Fdocs\u002Fguides\u002Flaravel","docs\u002F02.guides\u002F8.laravel",{"title":47,"path":48,"stem":49},"Go","\u002Fdocs\u002Fguides\u002Fgo","docs\u002F02.guides\u002F9.go",{"title":51,"path":52,"stem":53},"Services","\u002Fdocs\u002Fservices","docs\u002F03.services",{"title":55,"path":56,"stem":57},"Deployments","\u002Fdocs\u002Fdeployments","docs\u002F04.deployments",{"title":59,"path":60,"stem":61},"Builds","\u002Fdocs\u002Fbuilds","docs\u002F05.builds",{"title":63,"path":64,"stem":65},"Variables","\u002Fdocs\u002Fvariables","docs\u002F06.variables",{"title":67,"path":68,"stem":69},"Domains","\u002Fdocs\u002Fdomains","docs\u002F07.domains",{"title":71,"path":72,"stem":73},"PostgreSQL","\u002Fdocs\u002Fpostgres","docs\u002F08.postgres",{"title":75,"path":76,"stem":77},"Object storage","\u002Fdocs\u002Fobject-storage","docs\u002F09.object-storage",{"title":79,"path":80,"stem":81},"Volumes","\u002Fdocs\u002Fvolumes","docs\u002F10.volumes",{"title":83,"path":84,"stem":85},"Key-value store","\u002Fdocs\u002Fredis","docs\u002F11.redis",{"title":87,"path":88,"stem":89},"Workspaces","\u002Fdocs\u002Fworkspaces","docs\u002F12.workspaces",{"title":91,"path":92,"stem":93},"Projects","\u002Fdocs\u002Fprojects","docs\u002F13.projects",{"title":95,"path":96,"stem":97},"Environments","\u002Fdocs\u002Fenvironments","docs\u002F14.environments",{"title":99,"path":100,"stem":101},"Eject","\u002Fdocs\u002Feject","docs\u002F15.eject",{"title":103,"path":104,"stem":105},"API","\u002Fdocs\u002Fapi","docs\u002F16.api",{"title":107,"path":108,"stem":109},"CLI","\u002Fdocs\u002Fcli","docs\u002F17.cli",{"title":111,"path":112,"stem":113},"Claude Plugin & MCP","\u002Fdocs\u002Fclaude-plugin","docs\u002F18.claude-plugin",{"title":115,"path":116,"stem":117},"Metrics","\u002Fdocs\u002Fmetrics","docs\u002F19.metrics",{"title":119,"path":120,"stem":121},"Logs","\u002Fdocs\u002Flogs","docs\u002F20.logs",{"title":123,"path":124,"stem":125},"Billing","\u002Fdocs\u002Fbilling","docs\u002F21.billing",{"title":127,"path":128,"stem":129},"Self-hosting","\u002Fdocs\u002Fself-hosting","docs\u002F22.self-hosting",[131,132,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163],{"title":5,"path":6,"stem":7},{"title":9,"path":10,"stem":11,"children":133},[134,135,136,137,138,139,140,141,142,143],{"title":9,"path":10,"stem":11},{"title":15,"path":16,"stem":17},{"title":19,"path":20,"stem":21},{"title":23,"path":24,"stem":25},{"title":27,"path":28,"stem":29},{"title":31,"path":32,"stem":33},{"title":35,"path":36,"stem":37},{"title":39,"path":40,"stem":41},{"title":43,"path":44,"stem":45},{"title":47,"path":48,"stem":49},{"title":51,"path":52,"stem":53},{"title":55,"path":56,"stem":57},{"title":59,"path":60,"stem":61},{"title":63,"path":64,"stem":65},{"title":67,"path":68,"stem":69},{"title":71,"path":72,"stem":73},{"title":75,"path":76,"stem":77},{"title":79,"path":80,"stem":81},{"title":83,"path":84,"stem":85},{"title":87,"path":88,"stem":89},{"title":91,"path":92,"stem":93},{"title":95,"path":96,"stem":97},{"title":99,"path":100,"stem":101},{"title":103,"path":104,"stem":105},{"title":107,"path":108,"stem":109},{"title":111,"path":112,"stem":113},{"title":115,"path":116,"stem":117},{"title":119,"path":120,"stem":121},{"title":123,"path":124,"stem":125},{"title":127,"path":128,"stem":129},{"id":165,"title":87,"body":166,"description":354,"extension":355,"links":356,"meta":357,"navigation":358,"path":88,"seo":359,"stem":89,"__hash__":360},"docs\u002Fdocs\u002F12.workspaces.md",{"type":167,"value":168,"toc":344},"minimark",[169,173,176,179,184,187,228,239,243,254,257,270,274,277,284,290,294,297,300,304,312,321,325],[170,171,172],"p",{},"Workspaces are how organizations are represented within Lucity. One workspace can stand for a whole company, or for a team, a client or a department once an organization is large enough to want them kept apart.",[170,174,175],{},"A workspace holds all your projects and everything inside them. Its members have access to every project it contains. Each workspace has its own plan and is invoiced separately.",[170,177,178],{},"Signing up gives you a personal workspace to start from and you can always create more.",[180,181,183],"h2",{"id":182},"members-and-roles","Members and roles",[170,185,186],{},"Workspace members have one of two roles:",[188,189,190,203],"table",{},[191,192,193],"thead",{},[194,195,196,200],"tr",{},[197,198,199],"th",{},"Role",[197,201,202],{},"What it can do",[204,205,206,218],"tbody",{},[194,207,208,215],{},[209,210,211],"td",{},[212,213,214],"strong",{},"Member",[209,216,217],{},"Everything to do with building and running software: create projects and environments, deploy services, provision databases and buckets, edit variables, add domains.",[194,219,220,225],{},[209,221,222],{},[212,223,224],{},"Admin",[209,226,227],{},"All of that, plus the workspace itself: inviting and removing people, changing roles, editing the workspace name, managing the subscription and API tokens, and deleting the workspace.",[170,229,230,231,234,235,238],{},"Under ",[212,232,233],{},"Settings"," → ",[212,236,237],{},"Members",", an admin can invite members by email and configure their role. The same interface can also be used to change the role of an existing member or remove them from the workspace. Removing a member revokes their access immediately, while the projects and services they created are untouched within the workspace.",[180,240,242],{"id":241},"api-tokens","API tokens",[170,244,230,245,234,247,249,250,253],{},[212,246,233],{},[212,248,242],{},", an admin can create tokens for interacting with the ",[251,252,103],"a",{"href":104},".",[170,255,256],{},"An API token carries a role in the same way a member does, so a token created as a member can do member things and no more. The token value is shown once, when you create it, and never again. Revoking one takes effect immediately.",[258,259,260,261,264,265,269],"note",{},"A third role, ",[212,262,263],{},"deployer",", exists for ",[251,266,268],{"href":267},"\u002Fdocs\u002Fdeployments#triggering-a-deployment","keyless GitHub Actions deploys"," and cannot be assigned to a person. It can only deploy a service and edit that service's variables.",[180,271,273],{"id":272},"switching-workspaces","Switching workspaces",[170,275,276],{},"The workspace picker sits at the far left of the header, before the project and environment. Switching moves the whole dashboard, so the projects you see, the resources you can reach and the bill you are looking at all belong to the workspace you have selected.",[170,278,279],{},[280,281],"img",{"alt":282,"src":283},"The workspace picker open in the dashboard header, listing the workspaces you belong to","\u002Fimg\u002Fdocs\u002Fworkspaces\u002Fworkspace-switcher.png",[170,285,286],{},[287,288,289],"em",{},"Every workspace you belong to, and a way to start another.",[180,291,293],{"id":292},"personal-workspaces","Personal workspaces",[170,295,296],{},"Signing up creates a personal workspace for you, and it cannot be deleted. It is the natural home for experiments and hobby projects, the things that do not belong to a team.",[170,298,299],{},"When work does belong to a team, create a workspace for the team rather than growing your personal one into a shared space.",[180,301,303],{"id":302},"deleting-a-workspace","Deleting a workspace",[170,305,306,307,311],{},"A workspace can only be deleted once it is empty, so you have to delete each project within it first. See ",[251,308,310],{"href":309},"\u002Fdocs\u002Fprojects#deleting-a-project","deleting a project"," for what that involves.",[170,313,314,315,234,317,320],{},"Once no projects are left, ",[212,316,233],{},[212,318,319],{},"Danger Zone"," removes the workspace, its members and its subscription.",[180,322,324],{"id":323},"next-steps","Next steps",[326,327,328,334,339],"ul",{},[329,330,331,333],"li",{},[251,332,91],{"href":92}," for what lives inside a workspace",[329,335,336,338],{},[251,337,95],{"href":96}," for how a project is split up",[329,340,341,343],{},[251,342,123],{"href":124}," for what a workspace costs",{"title":345,"searchDepth":346,"depth":346,"links":347},"",2,[348,349,350,351,352,353],{"id":182,"depth":346,"text":183},{"id":241,"depth":346,"text":242},{"id":272,"depth":346,"text":273},{"id":292,"depth":346,"text":293},{"id":302,"depth":346,"text":303},{"id":323,"depth":346,"text":324},"Workspaces represent your organization in Lucity, with their own members, isolation and billing.","md",null,{},true,{"title":87,"description":354},"wRgECnvDAvmgHMdJw_g6uk0NXQi4sEoOdi9uHZJgW9g",[362,364],{"title":83,"path":84,"stem":85,"description":363,"children":-1},"A Redis®-compatible key-value store for caching, sessions and queues.",{"title":91,"path":92,"stem":93,"description":365,"children":-1},"Projects group services, databases and the environments they run in.",[367,370,372,375,378,381,384,387,390,393,396,399,402,404,406,408,410,412,414,416,418,419,420,421,423,425,427,429,431,433,435,437,439,442,446,450],{"path":6,"title":368,"description":369},"Deploy your first service","Deploy an app to Lucity, put it on a public domain, and connect a PostgreSQL database and an object storage bucket in about fifteen minutes.",{"path":371,"title":9,"description":356},"\u002Fdocs\u002Fguides\u002F.navigation",{"path":16,"title":373,"description":374},"Deploy a Next.js app","Deploy a Next.js app on Lucity, with a database, environment variables that behave, and no Dockerfile.",{"path":20,"title":376,"description":377},"Deploy a Nuxt app","Deploy a Nuxt app on Lucity. Nitro output, runtime config, and a database, with no preset to pick.",{"path":24,"title":379,"description":380},"Deploy a SvelteKit app","Deploy a SvelteKit app on Lucity. One adapter change stands between a fresh project and a running service.",{"path":28,"title":382,"description":383},"Deploy an Astro site","Deploy an Astro site on Lucity, static by default and server rendered when you add an adapter.",{"path":32,"title":385,"description":386},"Deploy an Express API","Deploy an Express API on Lucity. Three requirements, none of them platform-specific.",{"path":36,"title":388,"description":389},"Deploy a FastAPI service","Deploy a FastAPI service on Lucity. Detection is picky about layout, and the fix is one setting.",{"path":40,"title":391,"description":392},"Deploy a Django project","Deploy a Django project on Lucity, with migrations that run themselves and static files that do not.",{"path":44,"title":394,"description":395},"Deploy a Laravel application","Deploy a Laravel application on Lucity, with migrations, caches and a queue worker, and no server to configure.",{"path":48,"title":397,"description":398},"Deploy a Go service","Deploy a Go service on Lucity. Compiled in the build, shipped as a binary, nothing else in the image.",{"path":10,"title":400,"description":401},"Deploy your framework","Deploy guides for the frameworks people actually ship: Next.js, Nuxt, SvelteKit, Astro, Express, FastAPI, Django, Laravel, and Go.",{"path":52,"title":51,"description":403},"Services are the deployable units of a project: what they are, how they are configured, and how they scale.",{"path":56,"title":55,"description":405},"How a deployment goes live on Lucity, and the ways to trigger one.",{"path":60,"title":59,"description":407},"How Lucity turns your source code into a container image.",{"path":64,"title":63,"description":409},"Configuration for your services: service variables, shared variables, and dynamic variables.",{"path":68,"title":67,"description":411},"Put a service on the internet. Use a platform hostname for quick tests, or a domain you own.",{"path":72,"title":71,"description":413},"Managed PostgreSQL databases, replicated and backed up, connected to your services without copying credentials.",{"path":76,"title":75,"description":415},"S3-compatible buckets for uploads, exports and anything else your service needs to keep.",{"path":80,"title":79,"description":417},"Persistent disks for services that need to keep state on the filesystem.",{"path":84,"title":83,"description":363},{"path":88,"title":87,"description":354},{"path":92,"title":91,"description":365},{"path":96,"title":95,"description":422},"Development, staging, production: isolated copies of the same application.",{"path":100,"title":99,"description":424},"Download a project as a Helm chart and run it on a Kubernetes cluster of your own.",{"path":104,"title":103,"description":426},"The GraphQL API behind the dashboard, with an interactive playground.",{"path":108,"title":107,"description":428},"Deploy and manage your services from a terminal or a CI pipeline.",{"path":112,"title":111,"description":430},"Deploy and manage your services from Claude Code, Codex, Cursor or any other MCP client.",{"path":116,"title":115,"description":432},"CPU and memory for every service, and disk usage for every volume.",{"path":120,"title":119,"description":434},"What your services print while they run, and the output of every deployment step.",{"path":124,"title":123,"description":436},"Plans, resource usage, the free trial, and what happens when a payment fails.",{"path":128,"title":127,"description":438},"Run the whole platform on a Kubernetes cluster you own, using the same two Helm charts we run ourselves.",{"path":440,"title":441,"description":356},"\u002Flegal\u002F.navigation","Legal",{"path":443,"title":444,"description":445},"\u002Flegal\u002Fdata-processing-agreement","Data Processing Agreement","How Lucity processes personal data on your behalf.",{"path":447,"title":448,"description":449},"\u002Flegal\u002Fprivacy-policy","Privacy Policy","How Lucity handles your data.",{"path":451,"title":452,"description":453},"\u002Flegal\u002Fterms-of-use","Terms of Use","Terms governing your use of Lucity.",1791216728369]