[{"data":1,"prerenderedAt":250},["ShallowReactive",2],{"navigation_docs":3,"section-navigation-docs":130,"-use-cases-platform-teams":164,"-use-cases-platform-teams-siblings":240},[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,"page":-1},[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":166,"actions":167,"body":173,"description":232,"extension":233,"meta":234,"navigation":235,"path":236,"seo":237,"stem":238,"__hash__":239},"solutions\u002F1.use-cases\u002F3.platform-teams.md","Platform Teams",[168,171],{"label":169,"to":170},"Start free","https:\u002F\u002Flucity.cloud\u002Fapp\u002Flogin",{"label":172,"to":6},"See the quickstart",{"type":174,"value":175,"toc":225},"minimark",[176,180,184,189,192,197,201,204,208,211,215,218,222],[177,178,179],"p",{},"Your developers want to push code and see it running. Your security team wants everything on the cluster you already audit. Somewhere between those two positions sits a wiki nobody has updated since the last reorg, and a Slack thread asking who can deploy to staging.",[181,182],"feature-cards",{":items":183},"[{\"icon\":\"i-lucide-hand-metal\",\"title\":\"Self-service for developers\",\"text\":\"Projects, environments, variables, logs and rollbacks in a dashboard, without a ticket or a pairing session.\"},{\"icon\":\"i-lucide-shield-check\",\"title\":\"Your cluster, your rules\",\"text\":\"Runs on the Kubernetes you already operate, with the network policies, quotas and admission rules you already enforce.\"},{\"icon\":\"i-lucide-file-search\",\"title\":\"Auditable by design\",\"text\":\"AGPL-3.0, so your security team can read the code instead of taking a vendor's word for it.\"}]",[185,186,188],"h2",{"id":187},"the-build-versus-buy-trap","The build-versus-buy trap",[177,190,191],{},"An internal developer platform is not a project, it is a staffing commitment. A portal gives you a catalog but no deployment path. A homegrown CLI works beautifully until the person who wrote it changes teams. Meanwhile the gap between what developers want and what the platform team can staff is where the shadow tooling grows.",[193,194],"flow-diagram",{":nodes":195,"caption":196},"[{\"label\":\"Developers\",\"sub\":\"Push code, want a URL\",\"icon\":\"i-lucide-users\"},{\"label\":\"Lucity\",\"sub\":\"The self-service layer you did not have to build\",\"icon\":\"i-lucide-layout-dashboard\",\"tone\":\"primary\"},{\"label\":\"Your Kubernetes\",\"sub\":\"Standard Helm releases and operators\",\"icon\":\"i-lucide-server\"}]","Same infrastructure, one fewer layer for your team to maintain.",[185,198,200],{"id":199},"what-it-puts-on-your-cluster","What it puts on your cluster",[177,202,203],{},"Nothing exotic. That is the design constraint, because anything exotic becomes your problem at 3am.",[181,205],{":items":206,":columns":207},"[{\"icon\":\"i-lucide-file-code\",\"title\":\"Helm releases\",\"text\":\"One release per project and environment. `helm get values` works, and so does everything else your team already knows.\"},{\"icon\":\"i-lucide-database\",\"title\":\"Operator-managed databases\",\"text\":\"PostgreSQL through a well-known operator rather than a bespoke controller nobody else has heard of.\"},{\"icon\":\"i-lucide-network\",\"title\":\"Gateway API routing\",\"text\":\"The Kubernetes-native successor to Ingress, with certificates issued by the cert-manager you already run.\"},{\"icon\":\"i-lucide-tags\",\"title\":\"Labels, not a database\",\"text\":\"Platform state lives in Kubernetes objects and labels. There is no central database holding the truth hostage.\"}]","2",[177,209,210],{},"Because everything is standard, your existing tooling still applies. Policies, scanners, cost reporting and dashboards keep working on the workloads Lucity creates, because to them it is all just Kubernetes.",[185,212,214],{"id":213},"the-architecture-review-answer","The architecture review answer",[177,216,217],{},"The question that decides these evaluations is rarely \"does it work\". It is \"what happens when we want out\".",[219,220],"step-flow",{":steps":221},"[{\"title\":\"Read the code\",\"text\":\"Open source under AGPL-3.0. No black boxes to reason about, no phone-home to explain to your CISO.\"},{\"title\":\"Run it where you want\",\"text\":\"Your cluster, your region, your compliance boundary. The hosted version exists if you would rather not.\"},{\"title\":\"Keep the workloads if you drop the platform\",\"text\":\"Eject writes out the charts and values. Applications keep running while you decide what replaces the dashboard.\"},{\"title\":\"Survive a platform outage\",\"text\":\"The control plane is not in the request path. If Lucity is down, the workloads it deployed keep serving traffic.\"}]",[177,223,224],{},"That last one is worth dwelling on. A platform that has to be healthy for your production traffic to flow is a new tier-one dependency. This one is not: it deploys and manages, then gets out of the way.",{"title":226,"searchDepth":227,"depth":227,"links":228},"",2,[229,230,231],{"id":187,"depth":227,"text":188},{"id":199,"depth":227,"text":200},{"id":213,"depth":227,"text":214},"Give developers the self-service experience they keep asking for, on the cluster your security team already approved.","md",{},true,"\u002Fuse-cases\u002Fplatform-teams",{"title":166,"description":232},"1.use-cases\u002F3.platform-teams","wLHgnxPqQ8174ocIobi6Db2LNaxx_t6SQXyHNpdSB0k",[241,245,249],{"path":242,"title":243,"description":244},"\u002Fuse-cases\u002Fagencies","Agencies","Ship client projects at PaaS speed, then hand them over as infrastructure the client actually owns.",{"path":246,"title":247,"description":248},"\u002Fuse-cases\u002Fstartups","Startups & Small Teams","The simplicity you came for, without the rebuild you were dreading when you outgrow it.",{"path":236,"title":166,"description":232},1793355964534]