[{"data":1,"prerenderedAt":737},["ShallowReactive",2],{"navigation_docs":3,"section-navigation-legal":130,"-legal-privacy-policy":143,"-legal-privacy-policy-surround":649,"doc-previews":654},[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,135,139],{"title":132,"path":133,"stem":134},"Data Processing Agreement","\u002Flegal\u002Fdata-processing-agreement","legal\u002Fdata-processing-agreement",{"title":136,"path":137,"stem":138},"Privacy Policy","\u002Flegal\u002Fprivacy-policy","legal\u002Fprivacy-policy",{"title":140,"path":141,"stem":142},"Terms of Use","\u002Flegal\u002Fterms-of-use","legal\u002Fterms-of-use",{"id":144,"title":136,"body":145,"description":643,"extension":644,"meta":645,"navigation":646,"path":137,"seo":647,"stem":138,"__hash__":648},"legal\u002Flegal\u002Fprivacy-policy.md",{"type":146,"value":147,"toc":621},"minimark",[148,160,163,169,180,183,188,193,196,222,226,229,243,247,255,259,273,277,302,306,321,328,332,452,455,459,477,481,507,511,514,552,557,561,564,578,582,585,589,592,596,601,604],[149,150,151,155,156,159],"p",{},[152,153,154],"strong",{},"Effective date:"," March 16, 2026\n",[152,157,158],{},"Last updated:"," October 1, 2026",[149,161,162],{},"This privacy policy explains how lucity.cloud (\"Lucity\", \"we\", \"us\") collects, uses, and protects your data.",[149,164,165,168],{},[152,166,167],{},"Operator:","\nzeitlos.software Inh. Christian Blättler\nCHE‑439.475.468\nMattenhofstrasse 5, 3007 Bern, Switzerland",[149,170,171,174,175],{},[152,172,173],{},"Contact:"," ",[176,177,179],"a",{"href":178},"mailto:privacy@lucity.cloud","privacy@lucity.cloud",[181,182],"hr",{},[184,185,187],"h2",{"id":186},"_1-what-we-collect","1. What We Collect",[189,190,192],"h3",{"id":191},"account-data","Account Data",[149,194,195],{},"When you sign up, we collect:",[197,198,199,210,216],"ul",{},[200,201,202,205,206,209],"li",{},[152,203,204],{},"Email address"," and ",[152,207,208],{},"display name"," (via our authentication service)",[200,211,212,215],{},[152,213,214],{},"GitHub account details"," (username, user ID, email address, avatar) when you sign in with GitHub, and access to the repositories you connect for builds",[200,217,218,221],{},[152,219,220],{},"Billing information"," (name, billing address, payment method) processed by Stripe",[189,223,225],{"id":224},"usage-data","Usage Data",[149,227,228],{},"When you use the platform, we process:",[197,230,231,237],{},[200,232,233,236],{},[152,234,235],{},"Project and deployment metadata",": project names, environment configurations, build logs, deployment status",[200,238,239,242],{},[152,240,241],{},"Resource consumption",": CPU, memory, disk, and egress usage for billing",[189,244,246],{"id":245},"analytics","Analytics",[149,248,249,250,254],{},"We use ",[176,251,253],{"href":252},"https:\u002F\u002Frybbit.com","Rybbit"," (self-hosted) for website analytics. Rybbit is cookie-free, does not collect personal data, and does not track users across websites. No cookie consent banner is required.",[189,256,258],{"id":257},"what-we-do-not-collect","What We Do Not Collect",[197,260,261,264,267,270],{},[200,262,263],{},"We do not read or store your application source code beyond what is needed during the build process",[200,265,266],{},"We do not use cookies for tracking",[200,268,269],{},"We do not build advertising profiles",[200,271,272],{},"We do not sell your data",[184,274,276],{"id":275},"_2-how-we-use-your-data","2. How We Use Your Data",[197,278,279,285,290,296],{},[200,280,281,284],{},[152,282,283],{},"Provide the service",": run your workloads, manage deployments, process builds",[200,286,287,289],{},[152,288,123],{},": calculate resource usage, process payments, send invoices",[200,291,292,295],{},[152,293,294],{},"Communication",": service notifications, security alerts, billing updates",[200,297,298,301],{},[152,299,300],{},"Improve the platform",": aggregated, anonymized usage patterns",[184,303,305],{"id":304},"_3-data-processing-and-storage","3. Data Processing and Storage",[149,307,308,309,312,313,316,317,320],{},"The platform core, your workloads, and their databases run on ",[152,310,311],{},"Hetzner Cloud"," in Nuremberg, Germany. Object storage buckets are hosted on ",[152,314,315],{},"OVHcloud"," in Gravelines, France, and database backups on OVHcloud in Paris, France. Both are in the ",[152,318,319],{},"European Union",".",[149,322,323,324,327],{},"Our infrastructure services (authentication, container registry, deployment tooling, analytics) are ",[152,325,326],{},"self-hosted"," within our own cluster. The third parties listed below are the only external processors that handle data on our behalf.",[189,329,331],{"id":330},"third-party-processors","Third-Party Processors",[333,334,335,354],"table",{},[336,337,338],"thead",{},[339,340,341,345,348,351],"tr",{},[342,343,344],"th",{},"Provider",[342,346,347],{},"Purpose",[342,349,350],{},"Data Shared",[342,352,353],{},"Privacy Info",[355,356,357,377,396,414,433],"tbody",{},[339,358,359,365,368,371],{},[360,361,362],"td",{},[152,363,364],{},"Stripe",[360,366,367],{},"Payment processing",[360,369,370],{},"Name, email, billing address, payment method",[360,372,373],{},[176,374,376],{"href":375},"https:\u002F\u002Fstripe.com\u002Fprivacy","stripe.com\u002Fprivacy",[339,378,379,384,387,390],{},[360,380,381],{},[152,382,383],{},"Hetzner",[360,385,386],{},"Core infrastructure hosting (EU)",[360,388,389],{},"Platform data, workloads, and databases",[360,391,392],{},[176,393,395],{"href":394},"https:\u002F\u002Fwww.hetzner.com\u002Fprivacy-policy\u002F","hetzner.com\u002Fprivacy-policy",[339,397,398,402,405,408],{},[360,399,400],{},[152,401,315],{},[360,403,404],{},"Object storage and database backups (EU)",[360,406,407],{},"Files you store in buckets; backups of your databases",[360,409,410],{},[176,411,413],{"href":412},"https:\u002F\u002Fwww.ovhcloud.com\u002Fen\u002Fpersonal-data-protection\u002F","ovhcloud.com\u002Fen\u002Fpersonal-data-protection",[339,415,416,421,424,427],{},[360,417,418],{},[152,419,420],{},"Bunny",[360,422,423],{},"Edge network for applications and public buckets",[360,425,426],{},"Requests to and responses from your applications and public buckets, including visitor request metadata (IP address, user agent)",[360,428,429],{},[176,430,432],{"href":431},"https:\u002F\u002Fbunny.net\u002Fprivacy","bunny.net\u002Fprivacy",[339,434,435,440,443,446],{},[360,436,437],{},[152,438,439],{},"Anthropic",[360,441,442],{},"Internal operations and incident investigation",[360,444,445],{},"Platform metadata and logs needed for an investigation, such as project names, resource usage, and service logs",[360,447,448],{},[176,449,451],{"href":450},"https:\u002F\u002Fwww.anthropic.com\u002Flegal\u002Fprivacy","anthropic.com\u002Flegal\u002Fprivacy",[149,453,454],{},"Stripe may process data outside the EU and maintains EU Standard Contractual Clauses for international transfers. Anthropic processes data in the United States under EU Standard Contractual Clauses and does not use it to train models. Bunny operates a global edge network, so requests to applications and public buckets may be processed at edge locations outside the EU, and publicly served bucket content may be cached there. We do not share data with any other third parties.",[189,456,458],{"id":457},"data-your-applications-process","Data Your Applications Process",[149,460,461,462,465,466,469,470,473,474,476],{},"For your ",[152,463,464],{},"account and billing data",", we are the data controller, and this policy describes how we handle it. For personal data that ",[152,467,468],{},"your applications"," process about ",[152,471,472],{},"your own end users",", you are the controller and we act only as your processor, running your workloads on your instructions. That relationship is governed by our ",[176,475,132],{"href":133},". We do not access, use, or disclose that data except as needed to operate the platform.",[184,478,480],{"id":479},"_4-data-retention","4. Data Retention",[197,482,483,489,495,501],{},[200,484,485,488],{},[152,486,487],{},"Account data",": retained while your account is active. Deleted within 30 days of account deletion.",[200,490,491,494],{},[152,492,493],{},"Build artifacts and logs",": retained while the associated project exists.",[200,496,497,500],{},[152,498,499],{},"Billing records",": retained for 10 years as required by Swiss law (OR Art. 958f).",[200,502,503,506],{},[152,504,505],{},"Analytics data",": aggregated and anonymous; no personal data retained.",[184,508,510],{"id":509},"_5-your-rights","5. Your Rights",[149,512,513],{},"Under the Swiss Federal Act on Data Protection (nDSG\u002FFADP) and the EU General Data Protection Regulation (GDPR), you have the right to:",[197,515,516,522,528,534,540,546],{},[200,517,518,521],{},[152,519,520],{},"Access"," your personal data",[200,523,524,527],{},[152,525,526],{},"Correct"," inaccurate data",[200,529,530,533],{},[152,531,532],{},"Delete"," your account and associated data",[200,535,536,539],{},[152,537,538],{},"Export"," your data (platform data is ejectable by design)",[200,541,542,545],{},[152,543,544],{},"Object"," to processing",[200,547,548,551],{},[152,549,550],{},"Withdraw consent"," where processing is based on consent",[149,553,554,555,320],{},"To exercise any of these rights, email ",[176,556,179],{"href":178},[184,558,560],{"id":559},"_6-security","6. Security",[149,562,563],{},"We protect your data with:",[197,565,566,569,572,575],{},[200,567,568],{},"TLS for connections to the platform and WireGuard encryption between cluster nodes",[200,570,571],{},"Database backups stored with a different provider than primary hosting",[200,573,574],{},"Role-based access control",[200,576,577],{},"Isolated tenant workspaces (namespace-level separation in Kubernetes)",[184,579,581],{"id":580},"_7-children","7. Children",[149,583,584],{},"Lucity is not directed at children under 16. We do not knowingly collect data from children under 16. If you believe a child has provided us with personal data, please contact us.",[184,586,588],{"id":587},"_8-changes","8. Changes",[149,590,591],{},"We may update this policy. Material changes will be communicated via email or platform notification. Continued use after changes constitutes acceptance.",[184,593,595],{"id":594},"_9-contact-and-supervisory-authority","9. Contact and Supervisory Authority",[149,597,598,599],{},"For privacy questions: ",[176,600,179],{"href":178},[149,602,603],{},"If you believe your data protection rights have been violated, you may lodge a complaint with:",[197,605,606,615],{},[200,607,608,174,611],{},[152,609,610],{},"Switzerland:",[176,612,614],{"href":613},"https:\u002F\u002Fwww.edoeb.admin.ch\u002F","Federal Data Protection and Information Commissioner (FDPIC)",[200,616,617,620],{},[152,618,619],{},"EU:"," Your local data protection authority",{"title":622,"searchDepth":623,"depth":623,"links":624},"",2,[625,632,633,637,638,639,640,641,642],{"id":186,"depth":623,"text":187,"children":626},[627,629,630,631],{"id":191,"depth":628,"text":192},3,{"id":224,"depth":628,"text":225},{"id":245,"depth":628,"text":246},{"id":257,"depth":628,"text":258},{"id":275,"depth":623,"text":276},{"id":304,"depth":623,"text":305,"children":634},[635,636],{"id":330,"depth":628,"text":331},{"id":457,"depth":628,"text":458},{"id":479,"depth":623,"text":480},{"id":509,"depth":623,"text":510},{"id":559,"depth":623,"text":560},{"id":580,"depth":623,"text":581},{"id":587,"depth":623,"text":588},{"id":594,"depth":623,"text":595},"How Lucity handles your data.","md",{},true,{"title":136,"description":643},"hZhlBq5oTSUhz--4eR0uTX2On9v81KHk4YsQ991V8rA",[650,652],{"title":132,"path":133,"stem":134,"description":651,"children":-1},"How Lucity processes personal data on your behalf.",{"title":140,"path":141,"stem":142,"description":653,"children":-1},"Terms governing your use of Lucity.",[655,658,661,664,667,670,673,676,679,682,685,688,691,693,695,697,699,701,703,705,707,709,711,713,715,717,719,721,723,725,727,729,731,734,735,736],{"path":6,"title":656,"description":657},"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":659,"title":9,"description":660},"\u002Fdocs\u002Fguides\u002F.navigation",null,{"path":16,"title":662,"description":663},"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":665,"description":666},"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":668,"description":669},"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":671,"description":672},"Deploy an Astro site","Deploy an Astro site on Lucity, static by default and server rendered when you add an adapter.",{"path":32,"title":674,"description":675},"Deploy an Express API","Deploy an Express API on Lucity. Three requirements, none of them platform-specific.",{"path":36,"title":677,"description":678},"Deploy a FastAPI service","Deploy a FastAPI service on Lucity. Detection is picky about layout, and the fix is one setting.",{"path":40,"title":680,"description":681},"Deploy a Django project","Deploy a Django project on Lucity, with migrations that run themselves and static files that do not.",{"path":44,"title":683,"description":684},"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":686,"description":687},"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":689,"description":690},"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":692},"Services are the deployable units of a project: what they are, how they are configured, and how they scale.",{"path":56,"title":55,"description":694},"How a deployment goes live on Lucity, and the ways to trigger one.",{"path":60,"title":59,"description":696},"How Lucity turns your source code into a container image.",{"path":64,"title":63,"description":698},"Configuration for your services: service variables, shared variables, and dynamic variables.",{"path":68,"title":67,"description":700},"Put a service on the internet. Use a platform hostname for quick tests, or a domain you own.",{"path":72,"title":71,"description":702},"Managed PostgreSQL databases, replicated and backed up, connected to your services without copying credentials.",{"path":76,"title":75,"description":704},"S3-compatible buckets for uploads, exports and anything else your service needs to keep.",{"path":80,"title":79,"description":706},"Persistent disks for services that need to keep state on the filesystem.",{"path":84,"title":83,"description":708},"A Redis®-compatible key-value store for caching, sessions and queues.",{"path":88,"title":87,"description":710},"Workspaces represent your organization in Lucity, with their own members, isolation and billing.",{"path":92,"title":91,"description":712},"Projects group services, databases and the environments they run in.",{"path":96,"title":95,"description":714},"Development, staging, production: isolated copies of the same application.",{"path":100,"title":99,"description":716},"Download a project as a Helm chart and run it on a Kubernetes cluster of your own.",{"path":104,"title":103,"description":718},"The GraphQL API behind the dashboard, with an interactive playground.",{"path":108,"title":107,"description":720},"Deploy and manage your services from a terminal or a CI pipeline.",{"path":112,"title":111,"description":722},"Deploy and manage your services from Claude Code, Codex, Cursor or any other MCP client.",{"path":116,"title":115,"description":724},"CPU and memory for every service, activity for every database, and disk usage for every volume.",{"path":120,"title":119,"description":726},"What your services print while they run, and the output of every deployment step.",{"path":124,"title":123,"description":728},"Plans, resource usage, the free trial, and what happens when a payment fails.",{"path":128,"title":127,"description":730},"Run the whole platform on a Kubernetes cluster you own, using the same two Helm charts we run ourselves.",{"path":732,"title":733,"description":660},"\u002Flegal\u002F.navigation","Legal",{"path":133,"title":132,"description":651},{"path":137,"title":136,"description":643},{"path":141,"title":140,"description":653},1793355965535]