[{"data":1,"prerenderedAt":178},["ShallowReactive",2],{"doc:concepts\u002Freleases-and-updates":3},{"title":4,"description":5,"url":6,"markdownPath":7,"file":8,"section":9,"sectionTitle":10,"html":11,"toc":12,"navigation":39,"previous":176,"next":177},"Releases and updates","How L4 versions and releases work, and how each kind of Server (Cloudflare, VPS, Docker, Coolify) receives an update.","\u002Fdocs\u002Fconcepts\u002Freleases-and-updates","\u002Fdocs\u002Fconcepts\u002Freleases-and-updates.md","docs\u002Fconcepts\u002Freleases-and-updates.md","concepts","Concepts","\u003Cp>L4 ships as numbered releases on \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Finchidev\u002Fllll\u002Freleases\" rel=\"noopener\">GitHub\u003C\u002Fa>. Your Server changes only when its operator chooses an update. Nothing updates it automatically.\u003C\u002Fp>\n\u003Ch2 id=\"one-shared-version\">\u003Ca class=\"heading-anchor\" href=\"#one-shared-version\">One shared version\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>One version number covers every part of L4: the Landing page, Shell and installer at llll.gg, the Server, the portable runtime image and the Docs. Release notes for each version are published with the release.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Stable releases\u003C\u002Fstrong> have a plain version, such as \u003Ccode>0.3.4\u003C\u002Fcode>.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Prereleases\u003C\u002Fstrong> have an alpha, beta or rc suffix, such as \u003Ccode>0.2.0-alpha.7\u003C\u002Fcode>. You must choose them explicitly.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"releases-are-immutable\">\u003Ca class=\"heading-anchor\" href=\"#releases-are-immutable\">Releases are immutable\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>A published release tag and its files are never replaced. Every release includes a \u003Ccode>SHA256SUMS\u003C\u002Fcode> file. Installers and updaters check the checksums before they install anything, and they accept only published releases: never unreleased or locally built code.\u003C\u002Fp>\n\u003Cp>If a release turns out to be wrong, the fix comes in a new version.\u003C\u002Fp>\n\u003Ch2 id=\"database-lineage\">\u003Ca class=\"heading-anchor\" href=\"#database-lineage\">Database lineage\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>Since 0.3.0, Servers use the \u003Ccode>server-v2\u003C\u002Fcode> database lineage. A 0.3.x Server needs a fresh database: 0.2.x Servers cannot be upgraded into it and stay on their selected release. Within the lineage, migrations are only added, never rewritten, and they apply automatically during an update.\u003C\u002Fp>\n\u003Cp>Migrations only go forward. There is no automatic downgrade. To go back, restore a backup.\u003C\u002Fp>\n\u003Ch2 id=\"how-updates-arrive\">\u003Ca class=\"heading-anchor\" href=\"#how-updates-arrive\">How updates arrive\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cdiv class=\"table-wrap\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Server\u003C\u002Fth>\n\u003Cth>How to update\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>Cloudflare\u003C\u002Ftd>\n\u003Ctd>\u003Cstrong>Server settings → Deployment → Updates\u003C\u002Fstrong> in the Server.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>VPS installer\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>sudo llll upgrade\u003C\u002Fcode> on the VPS.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Docker Compose\u003C\u002Ftd>\n\u003Ctd>Set a newer image in \u003Ccode>LLLL_IMAGE\u003C\u002Fcode> and restart the stack.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Coolify\u003C\u002Ftd>\n\u003Ctd>Redeploy with \u003Ccode>latest\u003C\u002Fcode>, or change \u003Ccode>LLLL_VERSION\u003C\u002Fcode>.\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\u003C\u002Fdiv>\n\u003Ch3 id=\"cloudflare\">\u003Ca class=\"heading-anchor\" href=\"#cloudflare\">Cloudflare\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>The Owner opens \u003Cstrong>Server settings → Deployment → Updates\u003C\u002Fstrong>, chooses a newer release and selects \u003Cstrong>Back up and update\u003C\u002Fstrong>. \u003Cstrong>Include prereleases\u003C\u002Fstrong> adds alpha, beta and rc releases to the list. Only releases newer than the running version can be chosen. No Git, GitHub account or Workers Builds is needed.\u003C\u002Fp>\n\u003Cp>There are two ways the update runs:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>On the Server.\u003C\u002Fstrong> If the Server keeps Cloudflare access (\u003Cstrong>Keep Cloudflare access on this Server\u003C\u002Fstrong>, on by default when installing), it updates itself. It verifies the release, writes a backup to the separate backups bucket and reads it back, uploads the release and lets the new version confirm itself. You can close the page. \u003Cstrong>Retry update\u003C\u002Fstrong> resumes after the verified backup.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Through the official installer.\u003C\u002Fstrong> Without kept access, Settings sends you to the installer at llll.gg, which asks for fresh Cloudflare consent, makes and verifies the backup, then uploads the release.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>The update keeps the Server&#39;s bindings, secrets, UUID and Durable Objects. See \u003Ca href=\"\u002Fdocs\u002Fcloudflare\u002Fupdates\">Update a Cloudflare Server\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>\u003Cfigure class=\"doc-shot doc-shot-missing\">\u003Cdiv class=\"doc-shot-frame\" role=\"img\" aria-label=\"Server settings → Deployment → Updates on a Cloudflare Server with a newer release selected and the Back up and update button\">\u003Cspan class=\"doc-shot-label\">Screenshot coming soon\u003C\u002Fspan>\u003Cspan class=\"doc-shot-alt\">Server settings → Deployment → Updates on a Cloudflare Server with a newer release selected and the Back up and update button\u003C\u002Fspan>\u003C\u002Fdiv>\u003Cfigcaption>Updating a Cloudflare Server\u003C\u002Ffigcaption>\u003C\u002Ffigure>\u003C\u002Fp>\n\u003Ch3 id=\"vps-installer\">\u003Ca class=\"heading-anchor\" href=\"#vps-installer\">VPS installer\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>\u003Ccode>sudo llll upgrade\u003C\u002Fcode> installs the latest stable release. It takes a mandatory backup first and restores the previous version and data if the new one fails to start. See \u003Ca href=\"\u002Fdocs\u002Fself-host\u002Fvps#upgrade\">VPS\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch3 id=\"docker-compose-and-coolify\">\u003Ca class=\"heading-anchor\" href=\"#docker-compose-and-coolify\">Docker Compose and Coolify\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>Stable releases are published as \u003Ccode>ghcr.io\u002Finchidev\u002Fllll:&lt;version&gt;\u003C\u002Fcode>, \u003Ccode>:&lt;minor&gt;\u003C\u002Fcode> and \u003Ccode>:latest\u003C\u002Fcode>, for \u003Ccode>linux\u002Famd64\u003C\u002Fcode> and \u003Ccode>linux\u002Farm64\u003C\u002Fcode>. Prereleases are not published as images. On start, the container applies new migrations and refuses an image older than the release that last migrated its data.\u003C\u002Fp>\n\u003Cp>In these Servers, \u003Cstrong>Server settings → Deployment → Updates\u003C\u002Fstrong> says that updates are managed outside L4 and shows when a newer stable release exists. See \u003Ca href=\"\u002Fdocs\u002Fself-host\u002Fdocker#update\">Docker Compose\u003C\u002Fa> and \u003Ca href=\"\u002Fdocs\u002Fself-host\u002Fcoolify#updates\">Coolify\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch2 id=\"after-an-update\">\u003Ca class=\"heading-anchor\" href=\"#after-an-update\">After an update\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>When the new Client is ready, Settings offers to load the new interface. Check that Owner and Member login, permissions, files and realtime work, and that the Server UUID is unchanged.\u003C\u002Fp>\n",[13,17,20,23,26,30,33,36],{"id":14,"text":15,"depth":16},"one-shared-version","One shared version",2,{"id":18,"text":19,"depth":16},"releases-are-immutable","Releases are immutable",{"id":21,"text":22,"depth":16},"database-lineage","Database lineage",{"id":24,"text":25,"depth":16},"how-updates-arrive","How updates arrive",{"id":27,"text":28,"depth":29},"cloudflare","Cloudflare",3,{"id":31,"text":32,"depth":29},"vps-installer","VPS installer",{"id":34,"text":35,"depth":29},"docker-compose-and-coolify","Docker Compose and Coolify",{"id":37,"text":38,"depth":16},"after-an-update","After an update",[40,65,91,107,122,144,166],{"id":41,"title":42,"pages":43},"get-started","Get started",[44,47,50,53,56,59,62],{"title":45,"url":46},"What is L4","\u002Fdocs\u002Fget-started\u002Fwhat-is-l4",{"title":48,"url":49},"Choose how to run your Server","\u002Fdocs\u002Fget-started\u002Fchoose-how-to-run",{"title":51,"url":52},"Create a Server on Cloudflare","\u002Fdocs\u002Fget-started\u002Fcreate-on-cloudflare",{"title":54,"url":55},"Install on a VPS","\u002Fdocs\u002Fget-started\u002Finstall-on-a-vps",{"title":57,"url":58},"Connect to a Server","\u002Fdocs\u002Fget-started\u002Fconnect-a-server",{"title":60,"url":61},"Invite your team","\u002Fdocs\u002Fget-started\u002Finvite-your-team",{"title":63,"url":64},"Create your first Agent","\u002Fdocs\u002Fget-started\u002Ffirst-agent",{"id":27,"title":28,"pages":66},[67,70,73,76,79,82,85,88],{"title":68,"url":69},"L4 on Cloudflare","\u002Fdocs\u002Fcloudflare\u002Foverview",{"title":71,"url":72},"Cloudflare access","\u002Fdocs\u002Fcloudflare\u002Faccess",{"title":74,"url":75},"Costs and limits","\u002Fdocs\u002Fcloudflare\u002Fcosts-and-limits",{"title":77,"url":78},"Custom domain","\u002Fdocs\u002Fcloudflare\u002Fcustom-domain",{"title":80,"url":81},"Mail on Cloudflare","\u002Fdocs\u002Fcloudflare\u002Fmail",{"title":83,"url":84},"Update a Cloudflare Server","\u002Fdocs\u002Fcloudflare\u002Fupdates",{"title":86,"url":87},"Backups on Cloudflare","\u002Fdocs\u002Fcloudflare\u002Fbackups",{"title":89,"url":90},"Remove a Cloudflare Server","\u002Fdocs\u002Fcloudflare\u002Fremove-a-server",{"id":92,"title":93,"pages":94},"self-host","Self-host",[95,98,101,104],{"title":96,"url":97},"Run a Server on a VPS","\u002Fdocs\u002Fself-host\u002Fvps",{"title":99,"url":100},"Run a Server with Docker Compose","\u002Fdocs\u002Fself-host\u002Fdocker",{"title":102,"url":103},"Run a Server on Coolify","\u002Fdocs\u002Fself-host\u002Fcoolify",{"title":105,"url":106},"Compute Nodes","\u002Fdocs\u002Fself-host\u002Fcompute-nodes",{"id":9,"title":10,"pages":108},[109,112,115,118,121],{"title":110,"url":111},"Servers and the Shell","\u002Fdocs\u002Fconcepts\u002Fserver-and-shell",{"title":113,"url":114},"Accounts, Members and Roles","\u002Fdocs\u002Fconcepts\u002Faccounts-members-roles",{"title":116,"url":117},"Agents, Tasks and Runs","\u002Fdocs\u002Fconcepts\u002Fagents-tasks-runs",{"title":119,"url":120},"Files and backups","\u002Fdocs\u002Fconcepts\u002Ffiles-and-backups",{"title":4,"url":6},{"id":123,"title":124,"pages":125},"agents","Agents and MCP",[126,129,132,135,138,141],{"title":127,"url":128},"Agents overview","\u002Fdocs\u002Fagents\u002Foverview",{"title":130,"url":131},"Models and Providers","\u002Fdocs\u002Fagents\u002Fmodels-and-providers",{"title":133,"url":134},"Connect an MCP client","\u002Fdocs\u002Fagents\u002Fmcp",{"title":136,"url":137},"External agents","\u002Fdocs\u002Fagents\u002Fexternal-agents",{"title":139,"url":140},"Repositories and code work","\u002Fdocs\u002Fagents\u002Frepositories",{"title":142,"url":143},"Schedules","\u002Fdocs\u002Fagents\u002Fschedules",{"id":145,"title":146,"pages":147},"guides","Guides",[148,151,154,157,160,163],{"title":149,"url":150},"Chat","\u002Fdocs\u002Fguides\u002Fchat",{"title":152,"url":153},"Projects and Tasks","\u002Fdocs\u002Fguides\u002Fprojects-and-tasks",{"title":155,"url":156},"Mail","\u002Fdocs\u002Fguides\u002Fmail",{"title":158,"url":159},"Calls and Live","\u002Fdocs\u002Fguides\u002Fcalls",{"title":161,"url":162},"Notifications","\u002Fdocs\u002Fguides\u002Fnotifications",{"title":164,"url":165},"Telegram","\u002Fdocs\u002Fguides\u002Ftelegram",{"id":167,"title":168,"pages":169},"reference","Reference",[170,173],{"title":171,"url":172},"Glossary","\u002Fdocs\u002Freference\u002Fglossary",{"title":174,"url":175},"Troubleshooting","\u002Fdocs\u002Freference\u002Ftroubleshooting",{"title":119,"url":120},{"title":127,"url":128},1793335826099]