Every release, newest first. Each opens with what changed and what may need you to act; the
detail is one click further. Security fixes follow our disclosure policy.
Nothing is charged during the beta, and business organizations get Starter's limits.
Nothing is charged during the beta.Usage is still measured but never billed or paused for, and business organizations get Starter's limits. Plan and Usage show what each month would cost on a real plan.
Saves change only what you changed, pages show only what your role can do, and unused settings are gone.
›Improved1
Web app & notifications
Settings that changed nothing are gone.
Folders show their nightly copy where an unused backup choice sat. New databases pick Single, Standby, Cluster or Fleet; a typed count above five used to create one instance. Also gone: storage types, app labels and a job's registry pick.
›Fixed12
Apps & projects
Saving Advanced changes only what you changed.
A save used to rewrite the command, its arguments and exec health checks, which could stop an app from starting. The restart notice shows only when one follows.
New apps wait for their port before traffic arrives.
A rollout keeps the old version serving until the new one accepts connections. With klops, a worker that listens on nothing needs --port 0.
A scheduled job's config now reaches its runs.
Values set with klops or an AI tool were stored and never read. The next run reads them.
Saving a scheduled job changes only what you changed.
A job that calls a URL can be saved now and shows its address. An automatically sized job stays automatic, and Resources has a way back to Automatic.
Studio can make a private app public.
The domain editor says the app is private and offers Make public, in place of a switch that snapped back.
The Vault counts templated files as readers.
Used by now names the file, so a key a file reads no longer shows as unused before you delete it.
Builds & deploys
Rescan changes the port when it says it did.
The app, its health check and its PORT setting all move to the port found in the code.
Databases & backups
A database's disk can only go with its database.
Deleting such a disk on its own is refused now, so it can't vanish beyond Recently deleted.
Editors can restore a database and undo it.
The buttons were there and the server refused. Viewers no longer see them in Studio.
Account & organization
An owner can make someone else an owner.
Members now offers Owner, so the only owner of a team can hand over and leave.
Web app & notifications
Settings say what really happens.
Deleting a project mentions its 7 days in Recently deleted, firewall pages stop claiming denies they don't add, and your account shows your real role.
Pages show only what your role can change.
Viewers read settings without buttons that fail on click. Members no longer see token, repository and pull credential controls. Admins no longer see Delete organization or controls on an owner's row.
One health picture everywhere, warnings that open the broken thing, and channels you can tune, mute and quiet.
Every page agrees on what is broken.The top bar counts what is not working and what to fix, across every organization you belong to. Project and organization pages list the same items, and Alerts shows one row per app.
›New2
Web app & notifications
Mute a project while you work on it.
Under Notifications, nothing about it reaches channels or incident mail for up to 7 days. The top bar still shows what is wrong, and an incident that outlasts the mute is mailed afterwards.
Channels can have quiet hours.
Inside them only "something is down" comes through. Everything else arrives when they end, in Swiss time.
›Improved3
Apps & projects
The Alerts page switches the preset rules on and off.
It names each rule in plain words and saves at once. The CPU, memory and volume thresholds keep their defaults; klops still changes them.
Warnings open the thing that is broken.
A crash opens the app's logs, a failed database backup its backups, a missing certificate its domain. Alerts name the app or database in plain words, and a certificate that did not renew warns two weeks before it expires.
Web app & notifications
Each channel has three switches for what it hears.
Something is down, needs you soon, activity. A new channel starts with the first two on. Existing channels hear what they heard before.
Projects stay apart, and every list says when it fails
Projects with the same name stay apart between organizations, share links stay safe, and pages say when loading failed.
›Security4
Apps & projects
Shared secrets and settings stay with project admins.
Deploying from your own code into an existing project needs the admin role when it sets the project's shared secrets or settings, as changing them directly does.
Projects with the same name stay apart between organizations.
Every access check now looks at the same project the action reaches, also when another organization uses the same project name.
Share links only lead to your own app.
Opening a share link takes the visitor to the app it was made for, or to your own domains. Any other address is refused.
Share links you switched off stay off.
Making a domain public and private again no longer brings back the share links that went off with it. Links also work for projects whose name another organization uses.
›Fixed33
Apps & projects
Alerts reach you when another organization uses the same names.
An alert for an app could stay silent when another organization had a project and an app with the same names and the same alert firing.
Bring back restores an app the way it was.
An app deleted while asleep comes back awake and sleeps again when idle. An app that shared a domain with another app gets its paths on that domain back.
Undo says so when it does not work.
Bringing back a withdrawn invite or going back after "Make it live" used to fail without a word. Both now show what went wrong.
Visitor details keep their long lists open.
After "Show more", the lists of sources, pages and countries no longer drop back to five a minute later. An app's page also links back to Your apps whenever you have more than one app.
Images pinned by digest stay pinned.
An app whose image names a tag and a digest reported the registry as unreachable on every check. One pinned by digest alone could be moved to the newest tag by automatic updates. It now stays as you set it.
Moving a project checks its name in the new organization.
A project moved into an organization that already had one of that name left two projects with one name there, and one of them could not be opened. The move now says the name is taken.
Network keeps its rules on screen through a failed refresh.
The policy list emptied whenever one refresh failed.
Own domain says so when its status does not load.
The dialog offered to connect a domain when reading the app's own domain failed, even for an app that has one. It now says the read failed, with Try again.
Project lists always show their apps.
A project list could show zero apps and nothing healthy for a few seconds when another organization had just loaded its own.
Restarting or going back works while an app is busy.
A restart or a step back to an earlier version that met another change failed with an unexpected error. It now tries again, and a database change that meets one says so instead of blaming your input.
The app page shows private after a failed share link.
Making a link turns a public app private first. When the link then failed, the app page still said anyone could open it. Going back to an older version also says so again when the version list is slow.
Version history, Firewall and disks say when loading failed.
A failed request showed no versions, no rules, or that no app used a disk.
Builds & deploys
Pull credentials say when they could not load.
Registries showed none configured after a failed request. It now says so, with Retry.
Databases & backups
Restore on Backups opens the database's backups.
It used to open the database's overview, one more click away from the copy you wanted.
Databases and apps no longer share a name.
A cache database named like an app took over the app's address, and deleting it took the app offline. Creating either one now says the name is taken.
Automatic database updates never step back.
A database created on a major version, like 16, could be moved to an older 16.0 release by automatic updates. It now updates to the newest release of its version only.
Database updates go straight to the newest version.
With 16.9, 16.10 and 16.11 available, a database on 16.8 now updates to 16.11 in one restart instead of stopping at 16.9 first.
Nightly folder copies run for apps that refuse root.
A copy of such an app's volume never started and raised a "not ready" alert.
A cache store can still change after its disk grew.
After a larger disk, every later change to the store, version updates included, failed with a message about shrinking it. Changes work again.
Command line & AI tools
AI clients ask before a check reaches your app.
Checking an app, reading its picture again and getting a download address for its code are no longer marked read-only. Pages and sources your visitors send now reach the model marked as data.
klops help names the commands that stay.
Adding a verified domain now points at klops orgs verified-domains check, and the database import and export examples use klops databases, not the old names that are going away.
klops databases resources says it is going away.
It has answered "not found" for every database since July. The command and its AI tool now say so and point at klops databases get; both go after 13 November.
AI clients ask before putting a folder copy back.
Restoring a night of a saved folder is now marked as destructive, so your AI client asks you before it replaces the folder.
Account & organization
A list that fails to load says so.
Invitations, Help, API tokens, verified domains and connected apps showed "none yet" after a failed request. Who may join could be saved over without loading first.
Organization Settings describes what is on it.
It no longer promises how people join, which lives under Members.
The organization overview stays put through a network blip.
One failed refresh could show "Organization not found" or say nobody had access.
Org admins can change Registries again.
The page checked your role in the last project you opened instead of in the organization, so it could show the build registry read-only to an admin.
The roadmap says when it could not load.
It used to say nothing was planned yet. Try again loads it once more.
A link from a mail opens its page after sign-in.
Before, signing in from a link sent you to your home page instead of the page the link named.
Sign-outs and project roles say when they did not save.
Signing the CLI out and removing someone's project role could report success while nothing changed. Both now say to try again.
Web app & notifications
Screen readers name every text field.
Filters, searches, ports, scaling numbers and the reply box used to be read out as "edit text".
Browser tabs name API tokens and Repositories like the sidebar.
They used to read "Tokens" and "Repos".
An undecided feature request shows no old reason.
When we take a decision on your request back, the Roadmap page no longer shows the reason we gave before.
Monthly bills settle exactly, corrections go back to your wallet, and what's new arrives twice a month.
›Improved3
Web app & notifications
The changelog page shows changes by half month.
Each half month opens with what changed and what may need you to act. Every release it holds is one click further.
The monthly summary names each half month's changes.
klickops now gathers its releases twice a month under one title. The monthly summary lists those titles and still says what may need you to act.
What's new speaks up twice a month.
Releases still ship every day. What's new gathers them by half month and only lights up then, or at once when a change needs you. The Update ready notice is gone: the next click loads the new version.
›Fixed8
Billing & plans
A corrected month pays the difference back to your wallet.
When usage was taken off a closed month, the statement changed but the charge stayed. Now the amount goes back to your prepaid balance, and your billing timeline says why.
Deleting an organization settles its last month.
The usage and plan price up to the delete were left off every statement before. Now that month closes like any other.
Nightly folder copies no longer add to your bill.
Their short runs were billed as your app's compute and disk, while a backup only bills the space it takes in the backup bucket. Network file storage on every storage class now bills at the network file price.
Free's "Billed at reset" counts only what you will pay.
It showed usage beyond the credit that Free writes off at the month's end. The credit mails also name your plan's included credit again.
Buckets over 200 000 files are billed in full.
Their size was counted from a listing that stopped there, so the rest cost nothing. The size now comes from the storage itself, for every bucket.
An expiring promo no longer leaves Free with a debt.
When the credit ran out mid-month, Free was charged the rest of the month at once and could stay paused into the next. Now the month's end settles it like any other Free month.
Release runs get their own usage report line.
An app and its release command share a name, and their usage used to appear as one line. The total stays the same.
Account & organization
The organization switcher no longer offers New organization.
It could only fail: each account starts one organization, and you join others when someone invites you.
Deletes wait 7 days, sleeping apps read asleep, new databases start reliably, and statements come in whole Rappen.
A delete now waits 7 days before it is final.Deleted projects, apps, PostgreSQL databases and volumes stop and wait under Recently deleted at the foot of their list. Bring back returns them as they were; Undo right after deleting does the same. Valkey and buckets still go at once.
›Improved1
Web app & notifications
New organizations start from the organization menu.
The separate Organizations page is gone: the menu at the top of the sidebar lists your organizations, switches between them and starts a new one.
›Fixed5
Apps & projects
An app that recovered from one crash reads healthy again.
One crash or out-of-memory stop used to mark an app as needing attention until it was redeployed. Now it counts for an hour after the app runs again.
A sleeping app no longer reads as needing attention.
Your projects, app lists and sidebar say Asleep, previews that sleep keep their Open button, and a check of a sleeping app says to wake it first.
Update notices reach your channels, once per version.
A new image for an app or a scheduled job, and a database update, now reach your organization's channels, once per new version instead of every few minutes.
Databases & backups
A new database no longer hangs while it starts.
One whose backups were ready at once could wait forever to start. Backups now begin a minute after it is up, and a database already stuck this way starts again on its own.
Billing & plans
Monthly statements come in whole Rappen.
A month closes once all its usage is recorded, and a paid statement no longer leaves a fraction of a Rappen that kept apps paused.
Backups show seven nights and alert when one fails, light and dark mode read better, and updates finish running requests.
Backups show the last seven nights at a glance.One sentence says what is backed up, each row marks every night as copied, failed or empty, and opens to its nights. Your app's page in Cockpit says when each backup last worked.
›Security1
Web app & notifications
Large files and imports never stall the platform.
klickops runs a few database imports and file uploads at a time and reads only the end of large files for your AI tool.
›New1
Databases & backups
You hear about a backup that failed or fell behind.
Owners and admins get one email a day, the bell lists it until the next copy works, and notification channels get backup.failed. A nearly full backup bucket is reported before it fills.
›Improved1
Web app & notifications
Light and dark read more clearly.
Cards now stand off the page in both themes, and dark mode turns from black to a deep blue. Links, form fields and status words are easier to read.
›Fixed2
Apps & projects
Creating many things at once no longer stalls klickops.
A burst of creates, from a script or Terraform, waits its turn instead of holding up every other request.
Web app & notifications
klickops updates no longer cut off what you were doing.
A request sent just before an update finishes first, and live views reconnect on their own.
Private apps let in only the people you allowed, and an org without a plan pays its overage.
›Security3
Apps & projects
App pictures stay small enough to never stall the platform.
klickops keeps an app's picture only when its image is a sensible size, and reads one at a time.
Private apps open only for the people you let in.
klickops checks every visit against the app it actually reaches.
Web app & notifications
The web app builds with a reviewed package tool.
Every release builds the dashboard with the same pinned tools as our checks.
›Fixed4
Databases & backups
Each backup says what it is doing now.
Back up now shows waiting to start, then copying now, then the result, without a reload. A database or folder without a good copy for a day reads behind.
Cleaning up folder copies waits until no copy needs them.
Old pieces of a saved folder's copies are removed only after a safe wait, so a copy running at the same time keeps everything it uses.
Billing & plans
An hour the meter could not read is retried.
When the usage source did not answer, that hour used to be recorded as zero for good. klickops now tries it again for two days and bills what really ran.
Only the Free plan has its overrun written off.
An organization without a plan now pays its usage above the included credit at month end, like every paid plan.
App pictures stay on screen, checking an app works for more apps, and a restart pulls a new image.
›Improved1
Apps & projects
Check a new secret value before saving it.
After you type a new value for a secret in an app's configuration, Show lets you read what you typed; saved values keep their own Reveal.
›Fixed5
Apps & projects
An app page loads without a failed request.
It no longer asks for an own domain's status when the app has none.
App pictures stay put.
A picture shown once stays on screen while you move between your apps, instead of flashing back to the name.
Checking an app and its picture work for more apps.
klickops asks your app the way a visitor's browser does, so an app that reads the visitor's address from a header answers, and a preview image on your own domain shows.
Restarting an app runs the image you just pushed.
Push a new image under the same tag, restart, and the app runs it. A scheduled job does the same on every run once it is saved again.
Opening Your apps no longer wakes sleeping apps.
Each card's icon now comes from the picture klickops keeps, not from a request to your app.
Memory is billed for the minutes a workload ran, Free write-offs stay, and Cockpit says what to do next.
›Improved3
Apps & projects
Who can open an app is now plain to see.
The window says what is true right now, then shows both choices with the page a visitor gets: your app, or the sign-in page.
Each app page says what to do next.
Beside the picture, every fact has its button: make it private, fill the empty keys, go back a version. Visitors and cost show as charts, and your AI tool's questions sit one click away.
Account & organization
Connecting your AI tool now says when it worked.
Pick your tool, do its one step, and the window shows Connected the moment you allow it. The top bar names the tool you connected.
›Fixed5
Apps & projects
SvelteKit apps show the keys their code reads.
We now read the keys your SvelteKit code imports from its env modules, so the keys list names what the app uses, marks a key with a fallback as optional and a public one as public.
Billing & plans
The billing page explains your bill as it is.
It no longer says backups bill your volumes' used space, or that you pay the greater of credit or usage: you pay the plan's price plus usage above the credit.
A Free month written off stays written off.
Usage beyond Free's credit that we wrote off at month end is no longer taken from a top-up or promo credit that arrives later in the month.
Memory is billed for the minutes a workload ran.
A scheduled job, a build or an app that sleeps and wakes used to bill a full hour of memory for every hour it touched; now each minute counts once.
Usage of two things with one name adds up.
An app and its release step, or an app and a database with the same name, each used to replace the other's usage for the hour; both now count.
When your code needs a database, klickops offers PostgreSQL; Cockpit shows keys in one place and the month's usage.
›Improved2
Apps & projects
Each app keeps its keys in one place.
The Keys window lists the empty keys first, each with the button that fills it, then the set ones with a line on what each is for.
Billing & plans
Plan and usage shows your month as a chart.
One line shows what your apps used so far against what your plan includes. Below, each app's share, its database included, and a hint when a smaller plan would do.
›Fixed1
Apps & projects
Apps that need DATABASE_URL get a database offered.
When your code needs a database address to start and names no other database, we offer PostgreSQL and fill DATABASE_URL, instead of saying no database is needed.
A sleeping app wakes on its next visit again, and other apps' domain changes no longer wait for it.
›Fixed1
Apps & projects
A sleeping app wakes on its next visit again.
An app you put to sleep answered with an error instead of waking, and while it slept, changes to other apps' domains could be held back. Now a visit shows "Waking up" and the app is back within seconds.
Apps say when a rebuild installs a Node security fix, and going back after a rebuild runs the old version.
1 change may need you to act
Rebuild apps that show "Rebuild recommended".
›New1
Builds & deploys
Apps say when a rebuild installs a security fix.
klickops records the Node version each build installs. An app that misses a fix shows "Rebuild recommended" with a Rebuild button, which keeps your code and installs the newest patch of the same version.
›Fixed2
Builds & deploys
Apps built from your code start without red warnings.
Each start printed two warnings that looked like errors although the app ran fine. New apps start quietly now, and existing ones do after their next build.
Going back after a rebuild runs the old version.
Rebuilding the code that already ran replaced the version you would go back to, so going back started the rebuild again. Each rebuild now keeps its own image.
Saved folder nights show their real size, the backup bucket can't be deleted by mistake, and false backup alerts stop.
›Fixed4
Apps & projects
Alerts reach you once per problem.
An alert that was still firing arrived again each time klickops was updated. Now each alert is sent once, and again only when it fires anew.
Databases & backups
A good backup clears a failed one from Needs attention.
A database whose backup failed once stayed listed for a day, even after later backups succeeded. It now drops off with the next good backup.
A project's backup bucket can't be deleted by mistake.
A project whose only backups were saved folders could delete its backup bucket, and every night in it. The bucket stays while a folder or database backs up into it, and its page offers no upload or delete.
A saved folder's nights show their real size.
Each night of a saved folder showed 0 files and 0 bytes, although the copy held the folder. It shows how many files and how much it holds now.
Nightly copies of saved folders are written and kept again, and backup alerts only fire for real failures.
›Fixed2
Databases & backups
A good backup clears the backup-failed alert.
A database whose last backup failed stayed in alert for a day, even when every backup after it succeeded. The alert now ends with the next good backup.
Saved folders are backed up again.
The last update still could not write the nightly copies of saved folders. They are written and kept now, and you can put a night back or download it.
Nightly copies of saved folders store through a client the storage accepts, and the Cockpit redesign continues.
›Improved1
Builds & deploys
Each key the code reads says what it is for.
Checking a repository reads the line from the app's own words: its env settings in the code, else the comment above the key in its example file.
›Fixed2
Apps & projects
Saving code edited in Studio no longer locks the page.
The version is stored at once and builds in the background, with Undo once it is live. In reviews long lines wrap, the page scrolls instead of each file, and a first version shows its files plain.
Databases & backups
Saved folders are copied every night again.
The nightly copies of saved folders failed when they wrote to the backup bucket. They write to it now, and the next night copies as planned.
Nightly copies of saved folders reach their backup bucket again, and the Backups page counts only copies that worked.
›Fixed2
Databases & backups
Backups count only copies that worked.
The Backups page counted a folder or database as backed up while its last copy had failed. It now counts only the ones whose last copy worked and says how many need you.
Saved folders are copied again.
Since the last update, copying a saved folder each night failed because the copy could not reach your backup bucket. It reaches it now, and the next night copies as planned.
Every project now backs up its data, Hobby starts at once, and Free includes more room.
1 change may need you to act
Nothing to do. Check the Backups page of each project once.
›Security9
Apps & projects
Runaway templates stop with an error.
Previewing or saving an app file or a connection setting now ends a template that loops for too long or writes more than 256 KiB, and shows the reason. Normal templates render as before.
Certificate actions touch only your project's certificates.
Linking a certificate to an app and deleting a certificate now act on the project's own certificates. Credentials the platform keeps in a project stay out of reach of both.
Forwarding addresses never show a private app.
An extra address that forwards to a domain answers with the forward only. Private apps stay behind their sign-in on every address, and forwards you already have are updated when the platform starts.
Uploads of code count folders toward the 10,000 limit.
An upload may hold 10,000 files and folders together. The platform handles four uploads at once, and a fifth is asked to try again in a minute.
Builds & deploys
Your own registry is reached on the public internet only.
An organization's registry address must be a public name, and uploaded code is stored there over a connection that never reaches inside the platform.
Databases & backups
Backup keys stay out of apps and project copies.
An app can no longer take your backup bucket's keys as a variable or a mounted file. A project copy made with its secrets leaves them behind. Only klickops writes to the backup bucket.
Database and bucket passwords stay with editors.
A connection's preview never shows a stored password or key, and a value that carries one is always kept as a secret on the app.
Folder copies run as isolated as your app.
Copying, putting back and downloading a saved folder now run in the same isolated environment as the app, and keep no extra privileges.
Web app & notifications
A project's activity shows only its own organization's actions.
The activity feed is matched to the organization as well as the project name. Actions the platform records for no organization appear in no project's feed.
›New4
Apps & projects
Edit your app's code in the browser.
On an app built from uploaded or AI-written code, Edit opens its files. Review the changes, then save them as a new version that builds and goes online. A version someone saved in between is shown before you save.
See what each version of your code changed.
On an app built from uploaded or AI-written code, the Source tab lists every version and shows its changed files as a review, with colours. Compare any two, and go back from there.
Databases & backups
Every project now backs up its data, 7 days back.
Databases and saved folders go to the project's backup bucket, including those that had no backups yet. Earlier recovery points stay until they expire; ask support to restore one.
Billing & plans
Switch to Hobby at once, pay after.
Hobby applies the moment you choose it and comes on your next statement. A paused account can ask for a top-up, and Free starts again on the 1st.
›Improved2
Billing & plans
Backups cost what the backup bucket holds.
They bill as bucket storage, by the bytes kept, instead of counting your volumes a second time. Earlier backups no longer bill.
Free includes CHF 5 of usage and 3 GB.
Enough for a small app and its database. Your Free projects get the extra disk on their own.
Apps without a Dockerfile build again, the Vault generates secrets, and backups live on one page.
›Security4
Apps & projects
Only the platform's own monitoring can raise firing alerts.
Alert notifications in your channels now come from the platform's monitoring alone.
Builds & deploys
An upload address no longer names who asked for it.
The address for sending your code reads as random characters. Addresses handed out before this release stop working; ask for a new one.
Images you build stay readable by your organization only.
The platform's registry credential stays inside the platform, and images from the platform's registry must come from your own organization's builds.
Command line & AI tools
A terminal sign-in hands out its session once.
The first terminal to collect an approved sign-in gets the session. Any later attempt reads the sign-in as expired.
›New22
Apps & projects
Config files can read secrets from the vault.
Write a file once with placeholders like {{ .vault.DB_PASSWORD }}; klickops fills it in and keeps it current when a value changes. The preview hides secrets.
AI tools start apps that already run.
A new app can begin from a small server or a static site, the AI reads the rules an app follows here, and a bucket connects under the names every S3 library knows.
Deploy a folder, or let your AI build the app.
Deploy now takes an uploaded folder with no repository, and shows how to connect your AI tool so it can write the app and put it online.
An email tells you when an update didn't go live.
When a push fails to build or its database update fails, the owners and admins get one email saying why, and that the previous version is still online.
Keep a folder of files through updates.
Deploying from a repository from the terminal or your AI tool can keep one folder, such as uploads or a SQLite file. Each update then restarts the app. The folder is not backed up yet.
klickops warns about keys that look wrong.
A secret every visitor could read, a Stripe test key, a publishable key in the secret slot or a Supabase key of another project gets a warning when you save it. The key is stored anyway.
Your own domain: type it once, we check DNS.
klickops lists the records to set, checks them for you and adds the domain with HTTPS once they are right, so the certificate works the first time.
Try a new version before visitors see it.
An app built from uploaded code can run a version as a preview with its own address and an empty database, then make it live without building again.
A scheduled job can call a URL.
Give an address and a schedule; an error answer fails the run, and a header can read its value from your secrets without it ever being shown.
Apps behind sign-in learn who opened them.
The app receives the person's email, account id and role, or the share link a guest used, and a visitor cannot fake them. Apps uploaded from a chat start private.
Apps built from your code show it in Studio.
An app you uploaded or your AI tool wrote now lists every version with who made it, its files and what changed, its preview with Promote and Discard, and a source download.
The vault issues certificates for your own services.
Self-signed, signed by your project's own authority, or publicly trusted. They renew on their own, and Regenerate issues one again with a new key.
Apps read vault values as files or under another name.
Put a secret, a setting or a certificate at a path in an app, read-only, or give it a different variable name. AI tools can do the same.
The vault makes secrets and key pairs for you.
Pick a length and format, or a key pair type, and klickops makes the value without showing it. Regenerate makes a new one the same way; AI tools can too.
Databases & backups
New databases are backed up from the start.
Every change is saved into the project's backup bucket, with a full copy each night. You can go back to any moment in the last 7 days, on every plan.
A database can go back in time in place.
Restore now offers "Replace this database": it keeps its name and its apps restart on the data you picked. For 7 days, Return brings back what it had before.
Saved folders are copied every night.
Each app's folders go to the project's backup bucket, 7 nights kept, from a snapshot so open files stay consistent. Back up now copies one at once.
New databases from a repository deploy update overnight.
A database created together with an app takes PostgreSQL's security releases on its own, daily between 02:00 and 04:00 UTC. It may not answer for up to a minute while it restarts.
Put a saved folder back to an earlier night.
Its app stops for the moment it takes and starts again. Download saves a night as a .tar.gz without changing anything.
One Backups page for databases and saved folders.
Each row says how far back it goes and has its own Restore. A saved folder's nights can be put back or downloaded, in Studio and on an app's Saved files row.
Command line & AI tools
See what the platform does for your app.
klops recommendations app lists the protections that hold for it now, such as no admin rights, its own network and https, each read from the running app.
klickops makes your app's sign-in secret.
klops apps repo-deploy --generate AUTH_SECRET stores a strong random value once and keeps it on every re-run; --address-key NEXTAUTH_URL keeps a key at the app's address.
›Improved13
Apps & projects
Recent activity names the AI or klops behind a change.
A change made from Claude or another AI client, or with klops, shows its name beside yours.
We tell you when updates would lose new files.
Each version that goes live is checked again. When it starts saving files in a folder that updates throw away, or moves to PostgreSQL without updating its tables first, your app says so.
Going back shows the commit that runs.
After a rollback the app named the newer commit; it now names the one you went back to, and klops apps revisions list says which versions carried a problem to fix before sharing.
A failed HTTPS certificate says why, with Try again.
A domain whose certificate fails names the cause in one sentence, such as a CAA record or a proxy in the way, and Try again starts it over at once.
Visitors of a private app see a clear page.
It says the app is private and offers sign-in, and an expired or turned-off share link says so instead of showing a sign-in form.
Files in the vault read like files.
A file opens with line numbers and its type. Edits and uploads show what changes before saving, and you can download a file; a secret one counts as a reveal.
Builds & deploys
Every build checks the code.
Keys in the code, fallback secrets and debug mode are found on each build and each config save, shown on the app, and never stop a deploy.
Connecting GitHub says why it didn't finish.
A cancelled sign-in, an install waiting for your GitHub organization's owner and a repository with no code yet each get their own message, and Check again reads the code you just pushed.
A repository page shows each app's last build.
The apps that build from a repository show their folder, project, status and when they last built. klops repos apps and your AI tool list them too.
Databases & backups
A nearly full backup bucket shows under Needs attention.
At 70% of its size limit the database is listed there, so you see it before backups stop, without opening the database.
Command line & AI tools
Old command names are gone.
klops config list, set and delete are klops configmaps, the team names are set-org, use-org and apply-org-defaults, and adding a member is klops orgs invites create.
Billing & plans
Usage shows what each app costs.
The usage report splits every project into its apps, databases, buckets, scheduled jobs and builds, so you see which one uses your plan's included amount.
Web app & notifications
Scheduled jobs list as rows.
Each job is one line with its schedule, next run and state, like apps, databases and buckets.
›Fixed18
Apps & projects
AI tools see build failures and how the app answers.
A failed build carries its last lines, a check asks for the app's own address as a visitor does, and a picture starts at once instead of timing out.
Every app shows its address again.
Your apps, the app's page, klops open and the end of a deploy show the app's domain, and each database and bucket says which apps use it.
Two app changes saved at once no longer lose one.
When another change, or a secret save's restart, lands while you save, your save is refused with "changed by another update" instead of undoing it.
A deploy no longer stops halfway on a taken name.
A project that already has an app, database, bucket or scheduled job of that name now refuses the deploy before anything is created. The Deploy page says so on the app and lets you rename it.
A project name taken twice at once makes one project.
The second create is refused with "already exists", and the project the first one made stays.
Builds & deploys
Monorepo apps, submodules and LFS files build.
An app in a pnpm, yarn or npm workspace builds from the repository root with its own scripts. Submodules and Git LFS files are fetched instead of left empty.
Repository errors you can fix no longer look like ours.
A branch or repository that isn't there now answers "not found", credentials the Git server refuses answer as rejected, and an unreachable server answers as unreachable.
Uploading code from a Mac works.
The archive a Mac makes was refused, and its hidden metadata files ended up in the version. Now it is taken as is, the metadata files are left out, and a refused upload can be sent again.
A failed build of uploaded code says which step failed.
The steps list the fetch of your code instead of a clone that never ran, and a failure the platform cannot classify shows the build's own error line.
Apps without a Dockerfile build again.
A new app without a Dockerfile, from a repository or from uploaded code, failed at its first build. It builds again, and a build that fails this way now says so.
Databases & backups
Project backups with shared file storage succeed again.
A project with a volume on shared file storage no longer shows its nightly backup as failed or mails a backup incident. Volumes you back up as files are still included.
Database updates wait for their maintenance window.
An update now applies only inside the window you set for the database, such as daily 02:00 to 04:00 UTC. A database without a window updates whenever one is ready, as before.
Free databases leave their app room to update.
A database made in the wizard shares its memory with its backups instead of taking more.
Command line & AI tools
Restarting a bucket says there is nothing to restart.
Buckets share the storage gateway and have no pods of their own. klops buckets restart reported a restart that never happened.
Billing & plans
Creates sent at once stay within your plan.
Projects, apps, scheduled jobs and databases created at the same moment are counted one after another, so the plan's limits hold.
Account & organization
Naming your organization twice at once makes one.
A double submit of the first-run form creates one organization; the second answers that you already belong to one.
An organization always keeps an owner.
When two owners step down or leave at the same moment, one of them is refused, so the organization never ends up without anyone who can manage it.
Web app & notifications
English handbook links stay in English.
A link between two handbook pages used to open the German page.
Apps without a repository, private apps, and security fixes
Put an app online without a repository, make apps private with their own share links, and seven security fixes.
1 change may need you to act
Share links made before this release stop working. Make new ones where you still need them.
Put an app online without a repository.Run klops up in a folder, or let your AI assistant send its code: klickops checks it, keeps each version, builds it and deploys it. New apps start behind sign-in.
›Security7
Apps & projects
Sign-in checks for protected apps answered any caller.
The checks behind apps that require klickops sign-in now answer only the sign-in gate itself, so a sign-in or guest link works only through it.
Share links have their own key and stay off.
Making an app public turns its share links off for good, and the service that checks sign-in for your apps holds no key that could sign anyone in.
You: Share links made before this release stop working. Make new ones where you still need them.
Billing & plans
A paused organization stays paused during a platform outage.
When klickops can't check your organization's standing for a moment, it asks you to try again instead of letting the change through.
Deleting an organization always waits for new projects.
An organization deleted while a project is created in it keeps the project and says so, or the project is not created.
New projects always start inside your plan's limits.
When klickops can't read your plan for a moment, it asks you to try again instead of creating the project. Projects that started without their limits get them back.
Account & organization
Notification channel credentials live in the secret store.
Webhook addresses and signing keys of your channels are stored apart from the rest of the channel. Nothing changes for you.
Signing out says when it did not finish.
The web app tries again on its own, and klops auth logout warns you when the session is still valid.
›New4
Apps & projects
Your assistant sees whether the page works.
After an upload klickops checks the app's home page, and on a failure it returns the reason and the app's last lines of output. Private apps included.
Your assistant can look at your app.
It gets a small picture of the live page, private apps included. klops apps screenshot saves one too.
Make an app private in one step.
Private asks people in your workspace to sign in on every address of the app, including ones you add later; everyone else needs a share link. Making it public turns its share links off.
Builds & deploys
Change one file of an uploaded app.
Your AI assistant or klops apps source put sends only the changed files. Each upload is kept as a version: list them, download one, or go back to it.
›Fixed1
Apps & projects
Team sign-in works on your own domain.
A domain you brought that asks for team sign-in now signs your team in and brings them back. Signing in lasts up to 12 hours instead of 15 minutes, and signing out ends it.
While klickops or klickops.io updates, a page lists what is paused and what keeps running.
›Improved1
Web app & notifications
Updates show what keeps running.
While the dashboard or the website updates, a board lists what is paused and what keeps running, and the page returns on its own when the update is done.
At a limit, klickops says who can host more for you, and stuck scheduled jobs say why.
›New2
Account & organization
Signing up asks you to confirm klickops is a beta.
A third box says things can still change, and that you keep your own backups of anything important.
At a limit, klickops offers to put you in touch.
When you reach a plan cap, a project's capacity or a size limit, the web app, klops and AI assistants say who can host more for you.
›Improved2
Account & organization
A refusal at a limit says which limit.
The API, klops and AI assistants get the limit's name with the refusal, so a script or an assistant can tell a plan cap from a typo.
The privacy policy says how we record platform use.
It lists what we keep about how you use the web app, the command line and AI assistants, for how long, and how to object.
›Fixed3
Apps & projects
Scheduled jobs on a built image start again.
A scheduled job using an image klickops built for you now pulls it with your project's credentials, like the app it came from.
The scheduled jobs list flags a stuck run.
A job whose run cannot start shows Stuck with the reason on its card and on the project overview, instead of Running.
A scheduled job run that cannot start says why.
A run stuck on its image or crashing on start now shows as Stuck with the reason, instead of Running for days. "Every minute" schedules read correctly too.
Assistants can write to a bucket, and changing a connection's variables no longer leaves old ones behind.
›New1
Databases & backups
AI assistants can put files into a bucket.
They could only list a bucket before. A file of up to 3 MB goes in one call.
›Improved2
Builds & deploys
Builds live on each app.
The project's Builds page is gone; an app's Source tab shows its commits, builds, previews and where its images go. Old links open the apps list. klops previews list takes an app to show only its previews.
Databases & backups
The vault shows a bucket's S3 values, nothing more.
The endpoint, bucket, region and keys, without the internal address repeated beside them.
›Fixed4
Apps & projects
AI assistants no longer stall after reading logs.
One log answer could hold thousands of lines and fill the assistant's memory within a few questions. Each answer now keeps the newest lines and says when older ones were left out.
The Configuration count includes database connections.
The number above an app's configuration counted every line except the ones read from a database or bucket.
Databases & backups
Changing a connection's variables removes the old ones.
Renaming or dropping a variable of a database or bucket connection left the old one on the app. Now it goes.
Database import says which servers it can't reach.
The platform firewall blocks PostgreSQL's usual port 5432. The import dialog, the command line and the large-dump error now say so and point to uploading a dump instead.
New apps built from code build again, previews sit on the Source tab, and each organization gets a monthly summary.
›New1
Account & organization
A monthly summary of each organization.
Once a month you get your organization's month: what it cost, what runs, what needs a look, and what is new in klickops. It replaces the weekly release notes email.
›Improved2
Apps & projects
An app's configuration reads as one list.
Every line shows its name, where the value comes from and the value, with databases and buckets beside the vault's shared values. One Add menu covers every kind.
Builds & deploys
Previews sit next to the live version.
An app's Source tab shows each open pull request's preview and turns previews on or off. A newly connected repository starts with them off, since a preview uses your live database. Repositories you already connected keep theirs.
›Fixed1
Builds & deploys
New apps built from code build again.
Builds with the default engine stopped before they started. Apps on the older engine were not affected.
See every commit with its build, switch branches from a list and rescan the code.
›New2
Builds & deploys
See every commit and put any of them live.
An app built from code has a Source tab. It lists the branch's latest commits with their builds, switches the branch from a list, and rescans the code for a new port, key or database.
Databases & backups
Databases and buckets now show up in the vault.
Each one lists its connection values and the apps that read them. Give an app a connection from the vault or from the app's Configuration tab.
Builds keep a cache, use Railpack for new apps and pull public base images through a mirror.
›Improved3
Builds & deploys
Builds reuse the steps that did not change.
A build of the branch your app goes live from saves its build steps, and the next build skips installing dependencies again when they stay the same.
Builds fetch public base images from a nearby cache.
Images from Docker Hub, GitHub and other public registries download faster. Private base images still come straight from your own registry.
New apps built from code build faster.
They plan their build without downloading a package manager first. Apps you already run keep their engine; you can switch one under Advanced in its build settings.
AI assistants ask before deleting and stay signed in longer
Every assistant tool now says whether it reads, changes or deletes, and a connection lasts up to 90 days.
›Improved2
Command line & AI tools
AI assistants ask before deleting, not before reading.
Every tool now says whether it only reads, changes or deletes, and has a readable name. Your assistant can let reads through and ask you before anything is deleted.
Account & organization
AI assistants and klops stay signed in longer.
A connection now lasts until you leave it unused for 30 days, and 90 days at most, instead of asking you to sign in again every week.
Changing one domain setting keeps the others, a starting app's logs say so, metrics hover shows only instances running then, and AI assistants can check your plan before creating things.
›Improved1
Billing & plans
AI assistants can check your plan before creating things.
An assistant connected to klickops reads what your plan includes and what is already used, so it plans within the limits instead of finding them through a refused create.
›Fixed3
Apps & projects
Changing one domain setting keeps the others.
AI assistants and klops domains update change only what you name, so turning off HTTPS no longer clears the domain's sign-in, redirect or controller settings.
Logs of a starting app say it is starting.
Asking for an app's logs before its first instance runs now says what it is waiting for instead of "Something went wrong". A crashing app shows the output of its last run.
Metrics hover shows only instances running then.
Hovering a chart on an app's Metrics tab lists the values at that exact time. An instance from an earlier version no longer appears with a value from minutes before.
Files and other multi-line values in the Vault and an app's Configuration tab open in a multi-line editor and save exactly as written.
›Fixed1
Apps & projects
Multi-line settings and secrets keep their line breaks.
Changing a value that holds a whole file, like a config file, in the Vault or on an app's Configuration tab opens an editor that keeps every line break and space. Before, saving could flatten it to one line.
The Vault, deploys in one call, and checks before the first build
Each project gets a Vault where editors can reveal a saved value, a repository deploys with its database in one call, klickops checks code before the first build, and built images are private.
›Security1
Builds & deploys
Built images are private.
Apps pull their built images with a pull-only credential. Each running app restarts once to pick it up.
›New10
Apps & projects
A prompt moves your data to PostgreSQL or file storage.
When an app keeps its entries in a SQLite file or saves uploads next to its code, the check hands you a prompt for your AI tool that moves them to a database or file storage.
Before the first build, klickops says what stops the app.
Checking a repository lists what will keep the app from starting, such as a start script that runs a development server, and hands you a prompt to paste into the AI tool that wrote the code.
klickops spots fallback secrets and debug mode.
Checking a repository finds login secrets with a fallback value, a session secret written in the code, and debug mode switched on, each with a prompt for your AI tool. The values are never shown.
The check flags framework versions with known security flaws.
When the lockfile pins a Next.js, React, Vite, React Router or SvelteKit version with a known serious flaw, the check names the version to upgrade to and hands you a prompt for your AI tool.
The check finds open Supabase tables and Firebase rules.
A table in your migrations without access rules, a policy open to everyone, or Firebase rules that allow anyone or are still in test mode is named, with a prompt for your AI tool that closes it.
Editors can reveal a saved secret value.
Press Reveal next to a hidden value on an app's Configuration tab or the project's shared secrets, or run klops vault reveal. Each reveal shows in the project's activity; API tokens cannot reveal.
Checking a repository finds keys written in the code.
A provider key written into a file, or a committed .env file, is named by file and line with a prompt for your AI tool. The value is never shown. Make a new key: git keeps the old one.
One Vault for each project's secrets, settings and certificates.
It shows which apps read each value and under which name. Add a value, generate a secret or import a .env file, and pick the apps that use it. Old links to the Secrets and Plain config pages land there.
Databases & backups
Deploying from a repository can create its database.
Name a database with the deploy and klickops creates a small one, connects the app to it as DATABASE_URL and runs the detected migrate command before each version. It counts against your plan and is not backed up yet.
Command line & AI tools
Deploying from a repository can return a public address.
Ask for it with --public in the CLI or public over the API and the app gets a secure https address on the platform domain in the same call. It opens once its certificate is issued, usually within a minute.
›Improved7
Apps & projects
An app's Configuration tab shows where each value comes from.
Values from the project's Vault, from a database and those only the app reads sit in their own groups, with one save for all of them. Move an app's own value into the Vault in one click.
Pick or upload a domain's certificate in the domain itself.
A domain's HTTPS section offers automatic certificates, one from the Vault, or uploading your own. Certificates are listed in the Vault, where you replace an uploaded one when it is renewed.
Deploy stays with you until your apps are online.
After Deploy the page shows each app building, starting and getting its secure address, then the addresses to visit. An app's page shows the same steps until its first version is live, never "Stopped".
klickops spots data your app keeps next to its code.
Checking a repository now finds a SQLite file, an upload folder or a declared volume, says which folder the app can keep between updates, and names the file and line it found it in.
A stopped app or a failed build says why.
The app carries one cause (out of memory, crashing, a key it asked for, not answering, image not found) and a failed build its reason (no build script, a compile error with file and line, install failed, repository unreachable).
Command line & AI tools
Deploying from a repository takes everything in one call.
Keys go in as secrets, the release command and whether every push goes live are set, and a database of the project is connected as DATABASE_URL. A re-run finishes what a failed run left out.
Web app & notifications
The handbook is easier to read.
Every page in German and English uses shorter sentences and everyday words. The website has a new look, a marketplace page and a price calculator.
›Fixed3
Apps & projects
Free apps beside a database update and run migrations.
A new app on Free is sized so the database, the app and a release command run or a rolling update fit the plan together; before, an update beside a database stalled and a release command never ran.
Builds & deploys
TanStack Start and React Router apps are recognised as servers.
A repository built with TanStack Start or React Router in framework mode used to be taken for a static site. It is now built and started as the server it is, with its own start script.
Databases & backups
Connect an app to a database that is still starting.
The app and its release command wait for the database instead of failing to save or starting without DATABASE_URL; before, you had to wait for the database and try again.
The marketplace opens, klops signs in through the browser, your own domain on Deploy
Reviewed apps install in one click, klops signs in like the MCP tools and updates itself, the Deploy page takes your own domain and team sign-in, and a tab left open across a release no longer hangs.
The marketplace is open: reviewed apps, one click to install.Pocket ID, Uptime Kuma and Vaultwarden are the first. The catalog is public at github.com/natrontech/klickops-marketplace: suggest an app or send a blueprint there, and a merged change shows up within minutes.
›New4
Apps & projects
Give an app a name people read.
Double-click the title on the app's page, or set it under Advanced, klops apps update --display-name or the MCP tool. The app's name stays what addresses and commands use.
Your own domain, right on the Deploy page.
Under an app's address, choose "Use my own domain" and type the hostname. It has to be under a domain your organization verified; the page shows the DNS record to set.
Team sign-in as a third choice for an app's address.
On the Deploy page and when adding a domain, pick Anyone, Team sign-in or Private. With Team sign-in the app has an address, and only members of your organization can open it.
Command line & AI tools
klops update fetches the newest klops.
It downloads the version your klickops runs, checks it, and swaps the binary in. Once a day klops tells you when a newer one is out; KLICKOPS_NO_UPDATE_CHECK=1 keeps it quiet.
›Improved3
Apps & projects
Each marketplace app shows its version, maintainer and last update.
The marketplace, the Deploy page and the public blueprint page name the pinned version, who maintains the blueprint and when it last changed, and link to the source and to where you suggest a blueprint.
Command line & AI tools
klops signs in through your browser, for one organization.
klops auth login opens klickops, you pick the organization and allow, and the sign-in shows under Connected apps, where you can end it. Without a server it uses the folder's link, then app.klickops.io.
Web app & notifications
The older klickops-mcp program is gone.
Connect your AI client with the address under Settings, Tools instead; it signs in through your browser. The program was marked deprecated in 2026.10.6.
›Fixed2
Command line & AI tools
klops installs on Windows.
The Windows download under Settings, Tools exists now, and the page gives a PowerShell command that installs it and checks the download.
Web app & notifications
The app no longer hangs after a release.
A tab left open across a release reloads itself on the next click instead of showing a spinner until you hard-refresh.
Deploy from one page, and connect your AI tool in one paste
One Deploy page for your code, the marketplace and images, faster and safer builds, a klops that waits for your rollout, your AI assistant signing in through the browser, and one list of what needs you.
3 changes may need you to act
If a script calls klops with an old command or flag name, switch it to the new one; the old names warn now and stop working in a few releases.
If you run the klickops-mcp program, switch to the address under Settings, Tools. The program stops working in a few releases.
If an AI assistant has used your organization's notification settings, create a new webhook in Slack or Teams and add the channel again.
Deploy code, marketplace apps or images from one page.Press Deploy in the sidebar. klickops reads your repository, shows each app and the database it needs, and deploys them together with the keys you fill in.
Connect Claude, Cursor or VS Code with one address.Add it from Settings, Tools, then sign in through your browser and pick one organization, read-only if you like. Nothing to install. See and disconnect clients under Connected apps.
›Security6
Apps & projects
A project shows only its own organization's alerts.
Builds & deploys
Builds run each step on its own.
Fetching your code, building it and pushing the image run one after another.
Built images are stored and pulled with separate credentials.
Apps built from a repository restart once during this update.
Databases & backups
Failed backup emails reach only your own organization.
Account & organization
Notification channels no longer show their webhook secrets.
A channel shows only the host of its address, and a webhook's signing secret stays hidden, also to AI assistants.
You: If an AI assistant has used your organization's notification settings, create a new webhook in Slack or Teams and add the channel again.
Web app & notifications
klickops runs on the patched web server components.
The language runtime and networking library behind the web app and API are updated to the releases that close these weaknesses.
›New4
Builds & deploys
Detection finds every app in a repository.
A workspace, a compose file with several builds, or apps in their own folders now list each app with its own settings and keys, and shared packages are named as libraries.
Command line & AI tools
Deploy several apps and a database in one step.
klops plans previews and installs a plan from your own code: apps, databases, secrets and addresses, created in order, with the same progress and messages as the marketplace.
klops knows which project a folder belongs to.
Run klops link once; then klops shows the project's status, and deploy, restart and rollback wait until the app is up and print its address. New: doctor, open and logs --previous.
Web app & notifications
One list of what needs you, everywhere.
The health chip, klops attention and your AI assistant show the same list per organization: failing apps, databases and buckets, stuck certificates, failed backups and firing alerts, each with its cause and next step.
›Improved21
Apps & projects
Clearer status and error messages.
Messages about apps, volumes, domains, backups and sign-in read as plain sentences and point at what you can change.
Exporting a project is one clean download.
The export no longer asks you to pick between two bundle types, and project settings drop the GitOps mode switch, which the hosted platform never offered.
Builds & deploys
The app page says what a push does.
A Source section on the Overview names the repository, branch and how the app builds, and lets you choose between going live on every push or waiting until you press Build now.
A failed build reports at once instead of running twice.
A build that runs past 40 minutes now says it was stopped for time, and a build whose machine was taken away starts again by itself.
See where a build spends its time.
klops builds get shows how long a build waited for a builder, fetched your code, built and uploaded the image.
Builds on Starter and up get twice the power.
A build there runs with up to 4 CPU and 8 GB instead of 2 CPU and 4 GB, and is still billed only for what it uses.
Detection now says which database your code expects.
PostgreSQL from Prisma, Drizzle or a driver is offered with its migrations; a hosted one such as Supabase or Neon stays where it is.
Detection says which keys your app needs.
Each key the code reads is marked required, optional, set for you or development only, as secret or visible to visitors, with the file and line it came from. klops repos detect counts them.
Build from a Dockerfile anywhere in your app's folder.
Set its path, such as docker/Dockerfile or Dockerfile.prod, in the build settings; the build engine you pick when deploying is now kept too.
Detection names the services your code uses.
Sign-in, payments, email, AI and analytics services each list the keys they need and where to get one; klops repos detect shows them.
Changing a public key rebuilds your site.
A new VITE_ or NEXT_PUBLIC_ value on an app built from a repository starts a build of the running version, so visitors see it.
A repository's page lists the apps built from it.
It shows each app with its folder, project and status, names the apps nobody deploys yet, and offers Deploy from this repository.
Command line & AI tools
Two GitOps flags in klops now warn before they go.
klops projects update --externally-managed and klops projects export --keep-labels print a deprecation warning and will be removed in a later release. A plain export stays the way out.
Org commands that never applied here now say so.
The SSO group flags of klops orgs create and klops orgs update, klops projects members and klops quota org warn that they are going away. Set a member's project role with klops projects member-roles.
klops speaks one grammar.
Every command lists, gets, creates, updates or deletes, uses the console's names, and takes -p and --org the same way; klops databases replaces klops db. CLI-REFERENCE lists every command.
Your AI assistant starts faster and picks better tools.
It sees 27 core tools and finds the others when it needs them. Prompts like triage and diagnose come built in, and deleting data needs the name typed again.
Detection hands you a ready plan.
klops repos detect --plan prints the apps, addresses and generated sign-in secrets it suggests, ready for klops plans install.
Shorter, plainer klops help.
Commands and flags say what they do in the words the web app uses: domains, scheduled jobs, volumes and pull credentials.
Shorter tool descriptions for your AI assistant.
They name scheduled jobs the way the web app does and drop text it never needed.
Account & organization
A refused action names the role it needs.
Instead of "You don't have permission", you read which role the action needs and which one you have, so you know what to ask an admin for.
Web app & notifications
Shorter texts in the web app.
Page descriptions, empty pages, dialogs and messages say what you need to know in fewer words.
›Fixed6
Apps & projects
Every klickops address is now generated, never typed.
Adding a second address to a domain gets a random one too. Addresses you have keep working. To choose a name yourself, connect your own domain.
Builds & deploys
Builds from Gitea, Gogs and older Bitbucket work.
A build of a pushed commit no longer fails with "not our ref" on servers that refuse a commit by its id.
The detected port follows your app, not stray numbers.
A port in your example environment file counts, a dev server's port in a config no longer overrides the framework's, and a database's port in a compose file is skipped.
Builds push to your organization's own build registry.
A build registry set in your organization's settings was ignored, so builds pushed to the platform's default one. They now push to yours.
Sites built with Vite or Next.js see their public keys.
VITE_, NEXT_PUBLIC_ and similar settings now reach the build, so the page no longer comes up blank. Keys named like a secret are not sent with your site; the build log says which.
Command line & AI tools
klops orgs members list shows who each member is.
It printed empty ids for the members of your organization; it now lists each member's id, email, name and role.
Repositories that keep the app in a folder build without extra setup, and builds keep connection files out of your image.
›Fixed1
Builds & deploys
Repositories with the app in a folder now build.
When the repository root holds no app, klickops finds the one folder that does and builds from there. Builds also leave connection files out of your image.
SSH repositories connect again, bucket files need editor access
Repositories with a deploy key work again and explain why when they cannot connect, bucket files need editor access, and backup schedules run when they should.
2 changes may need you to act
If your install values set backend.adminUI, remove it; the install now stops with a message while it is set.
If a viewer should not have seen a database backed up to a bucket, change the passwords stored in that database.
›Security1
Databases & backups
Bucket files are for editors only.
Browsing and downloading a bucket's files needs editor access, like its access keys.
You: If a viewer should not have seen a database backed up to a bucket, change the passwords stored in that database.
›Improved3
Apps & projects
Blocked calls to your own app suggest its direct address.
When something in a project calls one of its apps by the public domain and is blocked, the Network view shows the app's in-project address to use instead of allowing the detour.
Databases & backups
Database backups warn before their bucket fills up.
A full backup bucket stops backups and, later, the database. Data & backups now warns once a bucket with a size limit is 70% full, and backup destinations set up from now on store compressed snapshots.
Web app & notifications
The unused admin-path allow list is gone from the install.
It guarded an address nothing serves any more. Platform administration stays in the operator console, behind a superuser check.
›Fixed14
Apps & projects
Invalid autoscaling limits are refused up front.
A minimum of 0, a maximum below the minimum or a CPU target outside 1-100 now fails with a message naming the field instead of leaving a half-saved setting.
A migration command set when creating an app is kept.
It used to be dropped without a warning. It now runs before every later version change, and before the first build of an app deployed from a repository.
Apps mounting configuration as files start on first deploy.
A secret or config file mounted when the app is deployed no longer leaves it waiting for storage that never arrives, and storage marked for file backups is backed up from the first deploy.
Builds & deploys
Repos with only a Containerfile build.
A repository whose build file is named Containerfile or dockerfile was offered as buildable, then failed with "no Dockerfile". It now builds.
Previews never touch apps or certificates that aren't theirs.
An app named like a preview keeps its branch, an uploaded certificate named like one is kept, and deploying from a repository never reuses a connection to a different URL.
Pull request previews no longer run your database migrations.
A preview skips the app's release command, so an unreviewed pull request never changes your live data. The command runs once the change is merged and deployed.
A push builds apps that follow any branch.
An app set to build from a branch other than the repository's default now builds and deploys on every push to that branch, not only after "Build now".
Repositories connected with an SSH key work again.
Loading branches and commits failed for every repository using a deploy key. When a repository cannot be reached, the message now says why: a rejected key or token, a wrong URL or branch, or an unreachable server.
Static sites deployed from a repository start again.
The deploy screen shows the detected build and start commands as suggestions and only uses the ones you type, so a Vite or React site is served from its built files instead of a guessed command.
Databases & backups
Backup schedules set outside the web app run as asked.
A daily database backup set from klops or an AI assistant ran every hour instead. Existing schedules are corrected automatically, and a custom schedule in the web app now takes the usual five fields.
A restored database keeps backing up.
It archives to the same bucket as the database it came from, counts toward your plan's database limit, and a restore to a taken name or a future time is refused with a clear message.
Account & organization
Error messages say organization, not team.
Permission, "already exists" and "not found" messages for organizations and their channels now use the same word as the rest of the product.
Web app & notifications
App lists show the address of apps routed through Domains.
The project overview and the Apps list left the address blank for any app whose domain was added under Domains. They now show its first domain, and "+N" when it has more.
A new app's address is called live once HTTPS works.
The deploy screen used to offer the https link as soon as the app was healthy, while its certificate was still being issued. It now says it is securing the address and shows the link when the certificate is ready.
CPU alerts for every app, plan limits in the bucket dialog
CPU alerts now fire for apps without a CPU limit, bucket sizes keep to your plan everywhere, and AI tools can set every app setting the web app can.
1 change may need you to act
If you run klickops yourself, check each organization's default project quota.
›Security1
Account & organization
Only a platform admin sets an organization's quota.
You: If you run klickops yourself, check each organization's default project quota.
›Improved1
Command line & AI tools
AI tools set ports, volumes and health checks on apps.
When an AI assistant deploys or changes an app through the klickops tools, it can now also set project secrets and configuration, env from domains, and image updates, as the web app can.
›Fixed6
Apps & projects
CPU alerts fire for apps without a CPU limit.
Apps on paid plans have no CPU limit, so the CPU alert could never fire for them. It now compares usage with the app's CPU request when there is no limit.
Command line & AI tools
AI tools can keep a certificate's CA chain.
Replacing an uploaded certificate through the klickops tools removed its CA chain, because the tools could not send one. They can now.
Billing & plans
Changing a bucket's size keeps to your plan's limit.
Creating a bucket already capped its size at your plan's limit; changing the size afterwards did not.
Account & organization
Account settings stay reachable without an organization.
After deleting your last organization, the setup screen links to your account settings, so you can delete your account instead of creating a new organization.
Web app & notifications
The bucket size dialog offers only what your plan allows.
On a plan that caps a bucket, it no longer offers "No limit" or sizes past the cap, and it says what the cap is.
Notification filters refuse event names that never arrive.
A channel's event filter matches exact names, so a typo or a wildcard stored fine and silenced the channel. Such a name is now refused, with the list of valid ones.
Release notes you can skim, and a reply when your fix ships
Release notes open with a summary and what needs you, you hear back when something you asked for ships, you can delete your own account, and API tokens stay with your organization.
Hear back when what you asked for ships.Once a fix for your support request is live, klickops replies in the thread and marks it resolved; your feature requests show what was decided, and what's new lists your own shipped asks first.
›New1
Account & organization
You can delete your own account.
Settings, Account lists what goes (sign-in methods, tokens, memberships) and what your organizations keep, then signs you out everywhere. An organization's only owner is told which one to delete or hand over first.
›Improved4
Command line & AI tools
Scheduled jobs work fully from the command line.
klops scheduled-jobs runs lists each run with its status and duration, logs shows the newest run unless you name one, and jobs can read project secrets and keep their image updated, from klops and your AI tools.
Account & organization
API tokens stay with your organization.
A token keeps working after the person who created it leaves or deletes their account. The token list shows who created each one, so you can review them when someone leaves.
Web app & notifications
Security fixes say what was at risk.
Release notes list each closed hole under Security with its severity, what was at risk, what was checked for misuse and what, if anything, you need to do.
Release notes open with a summary.
Each release shows what may need you to act and its highlights first, and folds every other change away by area: in the app, on the changelog page and in the weekly email.
›Fixed1
Web app & notifications
Alerts on a scheduled job's run open that job.
When a run kept crashing, whether started by hand or on schedule, the project overview linked its alert to an app named after the run, which showed "App not found".
Safer restores, builds that stay in their project, and a sturdier platform
Builds, previews and restores stay inside their own project, a restore refuses what it cannot bring back, and the command line catches up with the web app.
3 changes may need you to act
Build registries on plain HTTP or with a self-signed certificate need "Allow plain-HTTP / self-signed certificates" turned on in their settings.
Scripts that use --team or the AI tools klickops_patch_scaling, klickops_list_builds, klickops_get_build or klickops_trigger_build need the new names listed under Improved.
klickops_create_restore, klops recovery object and klops apps networking set are gone; Improved and Fixed name what replaces them.
›Security7
Builds & deploys
Builds check the build registry's certificate before pushing.
If your build registry runs on plain HTTP or uses a self-signed certificate, turn on "Allow plain-HTTP / self-signed certificates" in its settings.
You: If your build registry uses plain HTTP or a self-signed certificate, turn on "Allow plain-HTTP / self-signed certificates" in its settings.
A finished build rolls out only to its own app.
Build history shows only your own project.
Build history and logs, previews, restore history and the concurrent build count stay with your project. Disconnecting a repository also unlinks the apps built from it; they keep running their last version.
Previews never change the app they were copied from.
An app deployed from a repository without a chosen branch builds only from its default branch.
Databases & backups
A restore keeps your current firewall and limits.
A restore leaves firewall rules, network isolation and resource limits as they are now, and brings the project in line with the platform's settings once it finishes. klops recovery object and its two AI tools are gone: they rolled back every configuration entry of a kind, not only the one named.
Account & organization
Sign-in settings change only from a signed-in session.
Sign-in methods, passkeys, email preferences, terms and project roles cannot be changed with an API token.
Plan changes need a person signed in.
Changing the plan and requesting a top-up or a bigger plan work like managing members. A token for the whole organization can still read the bill.
›New3
Command line & AI tools
Manage scheduled jobs from the command line, and read past logs.
klops scheduled-jobs now creates, changes and deletes scheduled jobs, sets and removes their config values and secrets, and shows the logs of a single run. klops logs <app> --since 6h reads an app's earlier logs, including those of pods that no longer exist. The AI tools (MCP) gained the same log reads and a single call that gathers a project's recent events with an app's settings, pods and recommendations.
Read your support requests from the terminal and your AI assistant.
klops support list shows the requests you filed and klops support get prints one with its whole conversation; your AI assistant can read them through the MCP server too. Asking for help and replying still happen in the web interface, where your screenshots and the page you were on come along.
Web app & notifications
Report an error from the error page.
When a page fails to load, a Report this button opens a support request that already names the page and the error, so you only have to add what you were doing.
›Improved13
Command line & AI tools
Retired names are gone from the command line and the AI tools.
klops no longer accepts --team; use --org. The AI tools klickops_patch_scaling, klickops_list_builds, klickops_get_build and klickops_trigger_build are removed; klickops_set_scaling, klickops_list_app_builds, klickops_get_app_build and klickops_trigger_app_build do the same. klops config set-team, klops use-team and klops quota apply-team-defaults still work but now warn that they will be removed: use the org names instead.
Two calls that never did what they said are gone from klops and the AI tools.
klops apps networking set and klickops_set_app_networking could not change a domain and stored settings nothing used: change a domain under Domains or with klops domains apply. klickops_create_restore skipped everything the project still had, so a restore over a running project brought nothing back: klickops_restore_project_recovery restores the project the way the Backups page does, optionally only named apps and volumes. klops apps networking get now reports the class and certificate issuer of the app's actual domain.
More of the web app is now in the command line.
klops adds and removes an app's sidecar and init containers, applies a recommendation's automatic fix, turns backups of a standalone volume on or off, follows or stops a database import, reads and replaces your organization's join allowlist, and shows the bill, past statements, metered usage and wallet. A scheduled job's run logs now open only under the job that ran them.
Billing & plans
Clearer billing charts.
Every meter on the Billing page has its own colour, tuned for light and dark mode and easier to tell apart with colour blindness. Build usage no longer shares the grey of backups and the month-end forecast.
Your billing timeline shows corrections made on your behalf.
When usage is taken off your bill or your included credit is changed for you, the Statements timeline now says what changed and by how much, instead of your figures moving with no explanation.
Web app & notifications
Cleaner buttons, borders and loading spinners.
Icon and text buttons no longer draw a grey box around themselves, warnings and highlighted cards show their intended border colour, and loading spinners visibly turn.
Every form field has a working label.
Clicking a field's label now focuses the field, and screen readers announce what each field is for, in every form from deploying an app and creating a database to domains, scheduled jobs, certificates and organization settings. Choice buttons such as the builder, backup frequency or weekday pickers announce which option is selected.
Icon buttons are announced by screen readers.
Buttons that show only an icon, such as removing a secret, resetting the terminal or jumping to the newest log line, now say what they do and to what. Copy buttons that show a value, like a domain or a certificate fingerprint, now say they copy it.
The same words everywhere.
Database cards, status bars, restart messages and firewall policies now talk about copies and projects, the way app cards already did, instead of switching to infrastructure terms from one screen to the next.
Log views and terminals have a fair-use limit.
Each person can keep up to 20 log, live view or terminal sessions open at once, and a log view starts from at most the last 5,000 lines.
Support answers show up in your notification channels.
When your platform administrator replies to one of your organization's support requests, your Slack, Teams, webhook and email channels now say so, next to deploys and alerts; the answer itself stays in the conversation for the person who asked. Feature requests from the Roadmap page now reach the platform team the moment you send them.
Release notes arrive once a week.
Instead of a mail for every release, you get one summary of the previous week's releases.
What's new waits for you instead of popping up.
A new release is announced by the What's new button at the top: it names what shipped for a few seconds, then shows how many releases you have not read until you open them. The notes now open on everything since your last visit, not only the newest release, with a timeline of every release beside them. A tab left open through an update says "Update ready", and one click reloads it straight into what changed.
›Fixed34
Apps & projects
An app's internal address now works when you copy it.
The address other apps use to reach an app, shown on its Overview and Networking tabs, pointed at a location that does not exist. Both tabs now show the address the app actually answers on.
A cloned project's apps use the clone's own domain addresses.
An app setting bound to a domain's address kept the original project's address after a clone, and later changes to the clone's domain never reached it. It now names the clone's domain and follows it; a setting bound to a domain the clone does not copy is removed.
Apps in a cloned project keep their settings.
A cloned app lost its volumes, configuration keys, database connections, Git repository, update checks and icon, and its next edit could remove environment variables it still used. The copy now keeps all of it; only the results of past update checks start fresh. An app cloned into another organization leaves its Git repository behind, because the repository belongs to the original organization, and the clone says so.
Saving the same setting twice at once no longer fails one of the saves.
Two saves of an app's configuration, a volume, a firewall rule or a project's capacity that arrived together could answer one of them with an error; both now succeed and the later one wins. Cloning a project now also lists what could not be copied apart from what it leaves out on purpose, and klops projects clone fails when the clone is incomplete.
Apps and scheduled jobs can use spare CPU again.
Automatic sizing could cap a mostly idle app at a fraction of a core, so a long import or export crawled. On paid plans CPU is no longer capped; memory still is. An existing app picks this up the next time you restart it or save a change.
"Open in Grafana" is back on the Metrics tab.
Where your platform administrator connected Grafana, the Metrics tab of an app, a database and a bucket had lost its button. It opens the matching dashboard again, for the same time range.
Builds & deploys
Builds deploy only the app they were started for.
Build now, an app's first build and a watched repository's new commit now build just that app, where they also rebuilt every other app on the same repository and branch. Two projects with an app of the same name each get their own build, a build that finishes late never replaces a newer version that is already running, and an app set to only record new commits is no longer deployed by a push.
A build that cannot start says so.
Build now answers with an error instead of reporting a build that never began, a push is retried by your Git host, and a watched repository tries the commit again on its next check. Your plan's limit on builds running at once now holds for every build, and a build is stopped after 45 minutes or about 20 GB of disk, so a stuck build no longer holds your organization's build slot.
Connecting GitLab works again.
Signing in with GitLab to pick projects always came back with an "invalid state" error, so no GitLab project could be connected that way.
Detecting a very large repository fails fast with a clear message.
The deploy wizard now says the repository is too large to inspect and suggests setting the subpath to the app's directory, which inspects only that directory. Before, one large repository could slow detection, branch and commit listing down for everyone. Apps that watch their repository for changes also no longer wait behind one unreachable repository.
Webhooks you set up by hand now work.
When a repository's webhook could not be registered automatically (an SSH key, or a token without webhook permission), the secret the webhook needs was never shown, so every push was refused and the repository said no events had arrived. Connecting now shows the secret once, next to the webhook URL, with a copy button, and klops repos add prints it. For a repository connected earlier, open it and rotate the webhook secret to get a new one. The AI tools never see it.
Rotating a webhook secret keeps pushes building.
When klickops set up the webhook on GitHub or GitLab itself, rotating its secret now updates that webhook too, so there is nothing to paste. Before, the provider kept the old secret and every push after the rotation was refused. If the provider does not accept the change, the new secret is shown once to paste by hand.
Pushes build what they should, even across an update.
Pushing or deleting a tag, or deleting a branch, no longer starts a build. A push that arrived while the platform was restarting is now built once it is back, a preview whose pull request was closed in that window is removed within the hour, and a preview that could not be removed is retried when the delivery is sent again.
Databases & backups
Volumes in a cloned project come up.
Cloning a project with its volumes created volumes that never became ready, so the apps using them stayed stuck starting. A cloned volume is now created fresh and empty, as the clone promises, and its apps start.
Changing a database's version always runs the upgrade checks.
Setting a version while editing a database from the CLI or an AI assistant now refuses an older version, and a new major PostgreSQL version waits for a completed backup from the last 24 hours, exactly like the Upgrade action. Asking the Upgrade action for an older version now says it was refused instead of reporting an upgrade that never happened.
Installing a database extension and applying a recommended fix report the right result.
Installing an extension through the API or the MCP server without naming a database answered with an error although the extension was installed, and applying a recommended fix that was already in place showed an error instead of the app's current recommendations. Error messages from connected repositories and bucket storage were also hardened.
Deleting a project removes its backups.
The backup schedule kept running after a project was deleted, and its recovery points stayed in storage. Both now go with the project. Backup schedules set through the CLI or the API run at most once an hour, and recovery points are kept for at most 365 days.
Backups pages no longer offer Restore on a recovery point without data.
Recovery points that appeared while the page was open were always shown as holding volume data, even when they held none. A restore now also stops the apps and scheduled jobs that are not running at that moment, so none of them starts using a volume while it is being restored.
A restore no longer deletes a volume it cannot bring back.
Restoring an app, a volume or the project now first checks that the recovery point finished, belongs to this project, saved volume data and holds every volume it would replace, and says why when it does not. A volume created after the point stays untouched by a whole-project restore, an app restore brings back only that app's volumes, and a second restore of the same app or volume is refused while the first one still runs.
Command line & AI tools
The AI tools say what a call will do.
Deleting an app, a database or a volume now spells out what goes with it, calls that replace a whole list or cannot be undone are flagged so your editor can ask you first, database queries are marked as read-only, and tools only your platform administrator may use are no longer offered. Changing a project's quota without that permission now tells you who can reset it, instead of pointing at a request form that no longer exists.
Adding a sidecar or init container through the AI tools works.
The tool (MCP) never passed the container's name on, so every call failed; it now takes the app and the container name separately, and a command and arguments too. The usage tool can also report a period other than the current month.
Fewer AI tool calls fail on a field klickops does not accept.
Through the AI tools (MCP), adding a pull credential always failed, and so did setting an organization's SSO groups, rotating a repository's webhook secret, marking a build registry as insecure, queueing a rebuild with new build settings, replacing a bucket's lifecycle rules, skipping database updates, editing a database's access rules, and scaling an app or cloning a project with options klickops never had. The tools now offer only what klickops accepts, in the shape it expects.
The klops command line asks before it destroys something.
Commands that delete, revoke, restore over or roll back something now ask for a yes on a terminal, and name what they are about to remove and in which project. Scripts and CI have no one to answer, so they need --yes (or -y) and otherwise stop with exit code 2 before anything changes. Applying a domain from a file also reports why an update was refused, instead of claiming the domain already exists.
Switching contexts with klops works.
klops config use-context, current-context, list-contexts, set-org and set-project could not be reached, because the commands for configuration values had the same name. Those are now klops configmaps list, set and delete; the old klops config list, set and delete keep working for two more releases and print a note naming the new command.
Billing & plans
Bigger apps deploy after you leave the free plan.
Projects created on the free plan kept its limit of 1 vCPU and 1 GB per container after an upgrade or a promo code, so a larger app was refused. Upgrading now lifts that limit on existing projects too, and a promo code redeemed after your projects exist raises their capacity right away.
Running out of project room now says what actually helps.
A database that could not start, or a disk that would not fit, told you to raise the project quota or request more room, which you could not do yourself. It now points at a bigger plan, or, on a self-hosted install, at your platform administrator. The API token dialog also no longer claims an admin token can manage members: no token can manage members or other tokens.
Projects get the full memory their plan includes.
A project could run out of memory capacity at about half of what its plan includes. Your plan's CPU and memory now count only what your apps reserve.
The plan page no longer says a promo raised your limits when it didn't.
If your plan already includes higher limits than your promo code, the page used to claim the code had raised them to its lower tier. It now only mentions the promo when it actually gives you more room.
Signing up with a promo code is clearer.
A valid code on the website now takes you straight to sign-in, and error messages there follow the page language. When a code can't be used, you're told why: it expired, it's used up, it isn't valid, or it only covers another email domain. If the code is for a different address than the one your GitHub or Microsoft account shares, you're asked for that address and sent a sign-in code. After you create your organization, the credit is only reported as added once it has actually landed.
Running out of project room no longer offers plans on a self-hosted install.
The dialog said your plan was at its limit and pointed at plans that do not exist there. It now says the project is out of room, leaves raising it to your platform administrator, and only closes.
Account & organization
Removing someone from your organization takes effect right away.
A removed member could keep opening the organization's projects for up to half a minute. Their access now ends on their next click.
Your new organization shows up right away.
After naming your organization on first sign-up, the organization switcher showed a bare address with nothing to pick until you reloaded the page. It now shows your organization's name immediately.
You can edit and delete a project you created outside any organization again.
On a self-hosted install, whoever created a project with no organization was refused as if they were not its creator when they tried to rename or delete it.
Web app & notifications
The status page reports a platform outage while it happens.
When the platform's infrastructure stopped answering, project pages failed while the status page still said everything was operational. It now shows the platform as degraded until the outage ends.
Sign in with a passkey or an emailed code, verify a domain once for your whole organization, and builds run in their own sandbox.
3 changes may need you to act
Connecting a new domain of your own to an app first needs it verified under Organization, Domains; domains that already work keep working.
Self-hosted installs: remove the chart option that publishes platform metrics before upgrading.
Self-hosted installs: production now needs a strong administrator password.
Sign in with a passkey.Add one under Settings, then sign in with Touch ID, Windows Hello, your phone or a security key: no email, no code, nothing to type. Your account keeps its email code as the way back in, so removing a passkey never locks you out.
Verified domains.Prove once that your organization owns a domain by adding one DNS record under Organization, Domains, and every project in the organization can use it and all of its subdomains. Connecting your own domain to an app now needs that proof first; domains that already work keep working.
›Security28
Apps & projects
Certificates cover only your project's own addresses.
Domains and certificates use the certificate authorities and routing options the platform offers. Wildcard certificates are no longer requested there: list each address, or upload a certificate you already have.
Firewall rules for a domain name are stricter.
Existing rules get the change automatically, with nothing to re-save.
You: Nothing: existing rules were updated automatically.
Older internet rules mean the public internet too.
A "Public internet" rule saved before the last update is brought in line automatically. A domain-name rule names a public website or service: use an address range for a public address and an app rule for apps in your project.
You: Nothing: existing rules were updated automatically.
Internet access means the public internet.
Apps and builds keep reaching the internet as before. Existing projects get the change automatically.
You: Nothing: existing projects were updated automatically.
Cloned projects start with a new project's defaults.
Cloning a project needs an admin of the organization it lands in, counts toward that organization's project limit, and starts with the same security, network and capacity defaults as a new project.
Projects stay isolated from each other's network.
Apps inside a project keep reaching each other as before. Existing projects get the change automatically.
You: Nothing: existing projects were updated automatically.
Domains accept only addresses your project can use.
A domain or certificate cannot use an address the platform answers on or one already in use. The three baseline switches on the Network page change only there. Where your platform administrator turned internet access off, ask them if a project needs an exception.
Each app behind single sign-on gets its own sign-in.
A protected app gets a sign-in that works only for that app, also on domains protected before this update.
You: Sign out everywhere once if you opened an app behind single sign-on that another organization runs.
Apps behind single sign-on stay private on every path.
Signing in to a protected app always returns you over a secure connection.
Every app runs isolated, whatever its security settings.
Apps keep the security settings you give them. Scheduled jobs, release commands, and init and sidecar containers run isolated too, and sidecar images get the same checks as your main image. Saving the Advanced tab sends only the settings you changed.
Apps and jobs carry only the access they use.
Apps, scheduled jobs and release commands reach object storage through its storage endpoint. Databases, buckets and backups work as before. Existing apps pick up the change the next time you save them.
You: Save each app once to pick up the change.
Builds & deploys
Update checks reach public addresses only.
A Git push delivered twice starts one build, and a failed update check says why in one sentence. klickops no longer follows a Git host's redirect: if you moved a repository, update its address under Repositories.
Previews from forks stay off unless you allow them.
A pull request from a fork gets a preview with your app's settings only when you allow forks.
Repository passwords work whatever characters they contain.
Passwords and tokens reach Git exactly as you saved them.
Databases & backups
Database access rules always ask for a password.
Access rules accept only password sign-in and name the line they refuse. An import from another server accepts the common connection settings only.
Database credentials are for editors only.
Connection details include the live password, so only editors see them. The query console runs one statement per request.
You: Change a database's password if a viewer should not have seen it.
Command line & AI tools
The CLI keeps your sign-in to its own server.
Pointed at a different server, the CLI asks for a token or a fresh sign-in there, and the AI tools do the same. AI tools tell your editor which of them only read and which delete or overwrite. Device sign-in links always point at your klickops address.
Device sign-in for the CLI needs your browser.
The short code that klops auth login --device prints can only be approved from a browser where you are signed in, not with an API token.
The installer always uses your own klickops address.
The install command downloads from, and points the CLI at, your klickops address.
Account & organization
Automatic joining works only for your company's email domain.
The "Allowed to join" list accepts only addresses and domains on the email domain you sign in with, never a public provider such as Gmail. Invite anyone else by email.
You: Check your organization's members for anyone you do not know.
GitOps projects stay read-only, tokens in their organization.
A GitOps-managed project accepts only export, database queries, backups and cancelling a running operation. An API token made for one organization works only there. A project deleted and recreated under the same name opens the new project right away.
Only a signed-in owner or admin invites people.
An invitation goes to exactly one email address, and so does your organization's billing email; a pasted "Name <address>" is trimmed to the address. Each organization can send a limited number of invitations per day. Organization names and support request summaries fit on one line.
Signing out ends the session, and sign-ins last a week.
Signing out in the browser or with klops auth logout ends that session on the server too. After seven days you sign in again.
Signing out also closes terminals and port-forwards.
After you sign out, or an administrator signs you out everywhere, terminals and port-forwards ask you to sign in again.
Wrong administrator passwords pause further attempts.
After several wrong passwords for the same email, further attempts wait a while. Production installations require a strong administrator password and can switch password sign-in off for single sign-on.
You: Self-hosted installs: set a strong administrator password.
Roles apply only to verified email addresses.
Roles and administrator access given to an email address apply once your identity provider has verified it. Signing in with GitHub uses your primary address when GitHub verified it, otherwise another verified address.
Web app & notifications
Platform metrics stay private.
The monitoring endpoint answers only the platform's own monitoring.
You: Self-hosted installs: remove the chart option that publishes platform metrics before upgrading.
Support screenshots accept image files only.
Screenshots on support requests must be PNG, JPEG, WebP or GIF, and other file types are refused with a clear message. Screenshots from the support form are converted automatically.
›New7
Account & organization
Choose which emails you get.
Settings now lists getting-started tips, release notes and incident mail with a switch each, and names the mails that always arrive because you have to act on them or should know: invitations, security notices, billing and support. Every optional mail also carries a one-click link to turn that kind off.
Nobody joins an organization without accepting.
Adding a member now always sends an invitation, and the person joins only after they accept it under Invitations in the sidebar, or on the page they land on when they belong to no organization yet. Signing in never adds you anywhere by itself, and someone on an organization's "Allowed to join" list now gets an invitation too instead of being added. Inviting answers the same way for every address, so it no longer tells you who already has an account.
Leave an organization yourself.
Members now have Leave organization under Your membership on the Members page. You lose access to its projects right away and need a new invitation to come back. An organization's only owner can't leave until someone else is an owner too.
Sign in with an emailed code, and use any GitHub or Microsoft account.
Your account is now the email address you signed up with. Enter it on the sign-in page and klickops emails you a 6-digit code, no password needed. If you joined with a work address but your GitHub uses another one, sign in with GitHub, confirm your work address once, and GitHub signs you in to that account from then on. Connect or disconnect sign-in methods under Settings.
Web app & notifications
Getting-started emails after you sign up.
A welcome with the three steps to a running app, a reminder two days later if nothing is deployed yet, the next things most teams set up once your first app is live, and a note in the first week about deploying from Git, the CLI and your editor. Four mails at most, each sent once, and only while they still apply.
You hear about a broken app even without a notification channel.
The owners and admins of an organization are emailed when an app keeps crashing or cannot start, when a domain still has no certificate an hour after you added it, or when a backup fails. At most one mail per incident per day, with a link to the app, domain or backup. Turn it off for the whole organization under Settings, or just for yourself.
A short email when a new version of klickops is out.
It carries the same release notes the what's-new dialog shows, once per release, and never a digest of things you already saw.
›Improved6
Apps & projects
On the hosted platform, projects leave through Export.
GitOps mode (externally managed) is no longer offered here, and deleting a project always removes everything in it. To take a project elsewhere, export its manifests from project settings. A project already in GitOps mode can still be switched back to normal editing.
Builds & deploys
Builds from your repository run in an isolated sandbox.
Every build now runs in its own sandbox, walled off from other customers' builds and apps.
Command line & AI tools
Approving a CLI sign-in shows who is asking.
After you type the code from your terminal, the approval page shows the IP address, the device and when the sign-in started, and lets you deny it. The code is no longer filled in from the link, and a denied sign-in stops the CLI right away with a clear message.
Account & organization
Deleting an organization now asks you to remove its projects first.
An organization that still has projects can't be deleted; delete or move them, then delete the organization. The message tells you how many are left.
Web app & notifications
Emails read like letters, not like alerts.
Every mail addressed to a person, from an invitation to the monthly statement, now arrives with a plain subject, a short message and one button that takes you where the mail is about. The machine-readable prefix and the trailer of internal details are gone from these, and stay only on the mails your organization routes to a channel. Replies reach a person instead of bouncing.
The interface uses its own typeface everywhere.
Resource names, codes, logs and the terminal no longer fall back to a typewriter-style font on computers that don't have the klickops fonts installed.
›Fixed8
Apps & projects
A cloned project gets its own addresses.
Your own domains are not copied and can be added to the clone again.
Firewall rules for a domain name can only allow traffic.
A deny rule for a domain could end up blocking every destination on its ports instead of just that domain. The firewall editor no longer offers a domain on a deny rule and saving one is refused. To block a domain, leave it out of your allow rules.
Platform integrations in the Networking tab now only show the ones your platform administrator made available.
An app that had one switched on that is no longer offered has it switched off automatically, which restarts that app once.
A project always stays in an organization.
Removing a project from its organization is no longer possible on the hosted platform; to change who owns a project, move it to another organization instead.
Existing sign-in protected domains pick up the latest hardening automatically.
A domain protected by single sign-on used to keep its old protection settings until someone saved it again. It now gets the current ones when the platform is updated, and nothing else about the domain changes.
Billing & plans
A suspended or restricted organization can no longer create projects.
Creating or copying a project into an organization that is on hold for billing now stops with the same message as every other change, until the hold is lifted.
Account & organization
Only the owner finishes setting up an organization.
Naming a new organization on first sign-in is now the owner's step and happens once; an invited admin or member goes straight to the dashboard. After that, the owner renames the organization in its settings, as before.
Web app & notifications
Support requests have fair-use limits.
You can have up to ten open requests at once, send up to twenty messages a day on each, and attach up to 20 MB of screenshots a day. Over a limit, the message says which one and when it frees up. Messages without screenshots are never held back by the screenshot limit.
Buckets can be created again, and GitHub connections, pull credentials and protected apps only reach what belongs to you.
›Security3
Apps & projects
Pull credentials stay within their organization.
An app uses only pull credentials of its own organization or project, or ones your platform administrator shared with everyone.
You: Rotate pull credentials added before 24 September unless you can rule out that they were read.
Signing in to a protected app stays on that app.
Signing in to an app behind single sign-on continues only to apps you can open. A sign-in you cannot use lands you back in klickops.
Builds & deploys
Connecting GitHub checks your access first.
Connecting a GitHub account confirms with GitHub that you can reach the installation you add, so an organization sees only the repositories its members were given.
›Fixed3
Databases & backups
Creating a bucket works again.
The Add a bucket form refused every attempt with a technical message, so buckets, and database backups that need one, could not be set up.
New buckets start within your plan.
On plans with a per-bucket size limit, Add a bucket opened with a size above that limit, so it showed a limit warning and a disabled Create button before you had changed anything. The size now starts at your plan's limit.
Account & organization
Links into an organization use that organization.
Opening a page by its address, reloading it, or following a bookmark could load details, such as plan limits, from the organization you had open before.
2026.9.7Connecting a Git repository works again1 fix
Connecting a Git repository works again.
The Connect repository dialog refused every attempt with a technical message about an unknown field, so no repository could be added and nothing could be deployed from source. It was sending one field under a name the server stopped accepting.
2026.9.6Preview links load, and sign-in protected sites keep their certificates2 fixes
Sites protected by sign-in keep their certificates.
Certificates renew themselves shortly before they expire, and on a protected site that renewal was being sent to the sign-in page instead of completing. Left alone, those sites would have started showing certificate warnings as each one came up for renewal.
Preview links for pull requests load.
Opening one gave a certificate warning and then a "not found" page, on every app and every language. The preview address was never published to the web server, which also blocked it from getting a certificate of its own. Open a pull request and its preview link works; existing previews recover on the next push.
Migrations that stalled, silently or at the last step, now finish
Database imports finish, images that name their user start, and klops exec copies files into an app.
Importing a database no longer stalls halfway with nothing to show for it.A dump that took a while to apply its structure had its upload cut short by the network in front of klickops. The restore was lost, the database looked empty, and the command never came back or said why. klickops now takes the whole upload first and restores from that, so how long the restore takes no longer matters. An upload that really is interrupted now fails immediately and says so. Dumps above 2 GB should be copied straight from the old server with --from-url.
›New1
Command line & AI tools
Copy files into an app.
klops exec accepts piped input, so existing data can be moved into a volume when migrating an app onto klickops: tar cz -C ./seed . | klops exec myapp -- tar xz -C /data Previously there was no supported way in, which blocked migrating any app that carries data.
›Improved2
Command line & AI tools
klops apps get tells you when a release command is holding a deploy back, and how to retry or clear it.
YAML output spells fields the way the API does, so a value read with -o yaml matches one read with -o json.
›Fixed5
Apps & projects
Images that name their user now start.
Ending a Dockerfile with USER app is the recommended way to build a container, but klickops added a rule Kubernetes cannot check against a name, and every such image sat in Pending forever. Those images now run as the user they declare, and keep the rest of their hardening. klops apps deploy|update --run-as-user sets the user ID explicitly when you want to.
Shared file storage works again.
An app with a volume on a shared (RWX) storage class crashed the moment it started, with a kernel error nobody could act on: that storage cannot be combined with the extra process isolation klickops applies. klickops now notices the combination and drops the isolation instead of shipping an app that cannot start.
Giving an app a hostname through the wrong door no longer looks like it worked.
Setting a hostname under an app's networking settings reported success, kept the value, and created nothing. It now points you at Domains, and reading the setting back reports the app's real hostname.
Builds & deploys
Rebuilding at a shortened commit works.
The build list shows commits shortened, and pasting one back in queued a build that failed minutes later deep in the build log. It is now resolved for you, or refused immediately with a clear reason.
Command line & AI tools
The MCP server stops asking you to sign in again.
It refreshed its session without saving the result, so it eventually failed with "unauthorized" while the command line kept working. It now saves what it refreshes, and says the session expired instead of looking like a permissions problem.
Healthy apps stop looking broken, and a failed release command lets go
Apps that run fine no longer look broken, and a failed release command no longer blocks the screen.
›Fixed3
Apps & projects
Leftover evicted copies no longer make a healthy app look broken.
When a copy is moved off an overloaded machine, the old one can linger in the cluster for weeks. klickops counted every one of them as a live problem, so an app that was running fine showed "Needs attention", a row of red copy badges, and inflated restart counts. Those leftovers are now treated as history: they no longer affect status, restarts, or the copies list. The eviction itself stays visible under Events.
A failed release command no longer blocks the screen for good.
The "Deploy blocked" banner stayed up after you removed the release command, and after the version it complained about had gone live anyway. In that state Retry deploy did nothing. The banner now clears itself as soon as there is nothing left to retry, and Retry deploy starts a fresh run when there is.
View log opens the failed release run.
The button used to switch tabs and stop there. It now jumps to the release command card and opens the output of the failed run without a second click.
Protected apps keep you signed in, and repository access stays yours
Apps behind sign-in keep you signed in, and connected repositories and their credentials stay inside your organization.
Apps protected by sign-in keep you signed in.Every app with sign-in required sent people back to the sign-in page two minutes after they had signed in. A session on a protected app now lasts as long as your klickops sign-in does.
›Security2
Builds & deploys
Repositories stay within your organization.
An app builds only from a repository connected in its own organization, and project members never see repository credentials. A GitLab connection belongs to the organization that started it.
Web app & notifications
klickops runs on an updated networking library.
A library behind the web app and API is updated to the release its maintainers published with a security fix.
›Fixed5
Apps & projects
Domains with guest links can be edited again.
Saving such a domain failed with a message about a setting that is not allowed, and would have removed its guest links. Saving works and the links stay.
Sign-in protection holds up under load.
The check behind protected apps could slowly run out of memory, and a burst of sign-ins could be mistaken for "not signed in".
Setup:
the public address of the sign-in gateway now defaults to the platform address when it is not set separately, as documented.
Builds & deploys
Deploying from a repository links the repository you just connected
, even when klickops had to adjust its name.
Billing & plans
Promo codes land where they belong.
A code typed on the landing page is applied once you own an organization, never to one you were merely invited to, and codes cannot be redeemed through API tokens. Campaign figures for your platform administrator no longer count expired credit as spent.
2026.9.2The Marketplace waits until it has something to show2 fixes
The Marketplace only appears once a catalog is published.
On installations where your platform administrator has not published one, it sat in the menu and then failed to open with an unreadable error. It now stays out of the way until there is something to install.
Messages during an update read like sentences.
While klickops is restarting, an action that could not go through now says so plainly instead of failing with a technical error.
The Marketplace installs a reviewed app with its database, domain and configuration in a few clicks.
Marketplace.Install a reviewed blueprint into a new or an existing project in a few clicks: the app, its database, its domain and its configuration arrive together, already wired up. Vaultwarden, Uptime Kuma and Pocket ID are in the catalog to start with. A blueprint is a starting point, not a link, so everything it creates is yours to edit afterwards.
›New2
Apps & projects
A public page for every blueprint.
Each one has a shareable page listing what it installs, so you can send a colleague the link before they have an account.
Projects wear their blueprint's logo.
A project started from a blueprint shows that app's mark in the project switcher, its header and the project list.
›Fixed2
Databases & backups
The overview shows your data again.
In a project holding a database and a bucket with the same name, the data section on the overview stayed empty.
Instances and activity now attach to the right service.
Two services sharing a name in one project could show each other's instances and recent activity.
August 2026 · 11
releases
2026.8.12Pointing an app at a pull credential now works on its own1 fix
Giving an existing app a pull credential no longer needs a redeploy.
Naming a credential on an app whose image was not changing was accepted and then quietly ignored, so an app deployed before its credential existed could only be fixed by deleting it or by passing the image it already had. It now takes effect on its own.
Private images pull, and a CLI that fails when it should
›Improved5
Adding a pull credential now asks who it is for.
klops registries create requires either --org <organization> or an explicit --global. Leaving the scope out used to share the credential with every organization on the cluster without saying so, and the confirmation it printed did not mention the scope at all, so the mistake was invisible. Scripts that relied on the old default need the flag added.
A command that does not exist now fails.
Mistyping a command used to print the help text and report success, so a typo in a script did nothing at all and the script carried on as if it had worked. Unknown commands now exit with an error. Anything in your automation that was quietly doing nothing will start failing, which is the point, but it is worth a look before you upgrade.
You can see which settings a database type accepts.
klops databases available lists the tuning options for each type, with an example for each, so asking for more storage than the size tier gives you no longer means guessing. The size tiers are deliberately conservative; --param storage=20Gi is how you go bigger.
Login users on a database can be listed.
They could be created and deleted but not listed, so a script had no way to check its own work.
Importing from a database that is not on the internet has an answer.
Most databases worth moving sit on a private network, and the import refused them for good security reasons without saying what to do instead. It now shows you the one-line command that streams the data in.
›Fixed8
Apps that use a private image now start.
A pull credential could be added and listed correctly while every app using it failed to start, because nothing connected the credential to the app. klickops now picks the credential that matches the image's registry automatically, and klops apps deploy --registry names one explicitly when you have several.
Database usernames can contain underscores again.
Names like orders_app were rejected, and so was every other separator, so a database user carried over from another system had to be renamed to make it in.
The AI tools stopped rejecting valid requests.
Creating a database, updating an app or running a query through the AI tools could fail with "request body is malformed" on input that was completely correct. Requests that are genuinely wrong now say which field is the problem.
The AI tools notice when you sign in.
Signing in after the tools were already running left them unauthorized for the rest of the session, with no hint that reconnecting would fix it. They now pick up a new sign-in on their own.
A missing detail in an AI tool call says what is missing.
Leaving out something the tool needed produced an internal error that read like the tool itself was broken.
Creating a database confirms what it accepted.
It used to print nothing at all, which was indistinguishable from having done nothing.
Queries can reach any database on the server.
klops db query and klops db shell take --database, so a database created alongside a user is reachable without going around klickops.
The help for choosing a database type points at a command that exists.
It named one that was renamed some time ago, and the suggestion was garbled on the way out.
"Get help" opens a composer that stays out of your way: it tucks into the corner while you go and fetch the error text or take a screenshot, and your draft is still there when you come back. A request remembers what you were looking at, so you don't have to describe it. The same menu lists every request you have made and the replies on it, and points you at the handbook page for what you were doing.
›Fixed4
Creating a project works when you belong to more than one organization.
Being invited into someone else's organization was enough to make every project creation fail outright. The organization you pick is now the one the project is created in.
Credit from a promo code lands in your own organization.
If you were a member of someone else's organization as well as your own, parked credit could be redeemed into theirs. It now goes to an organization you own, and the organization shown by default stops reshuffling between page loads.
A small database now fits alongside an app on the free plan.
The plan advertises room for both, but a small PostgreSQL claimed the project's entire allowance on its own, so the database was accepted and then never started. A small database now takes half the allowance, leaving the other half for an app. Medium and large are unchanged.
A database or bucket held back by the project's limits says so.
When there was not enough room left in a project, a new managed service sat at "Provisioning" forever with no explanation anywhere. It now tells you the limit was reached and what to do about it.
A coupon code can be typed in on the sign-in screen.
Scanning the printed link still works, but the code is no longer the only way in: there is now a field for it above the sign-in options, and it shows what the code grants before you sign in. Checking a code never uses it up.
›Fixed2
Connecting a repository no longer traps you on someone else's account.
If a colleague had already set up access on a shared account, that was the only account offered. You can now install on your own account or a different organization from anywhere in the connect flow, and the "Manage on GitHub" link points at the right place for organization-owned setups.
Repository names containing dots can be connected.
A name like example.info silently left the Connect button disabled. Dots and other unsupported characters are now folded to hyphens as you type, and the rule is spelled out inline when the result still isn't usable.
Credit codes can now be minted in a batch and downloaded as a print-ready document — one coupon per page, each with the code and a scannable link that claims it. Codes are still redeemed exactly as before, on the sign-in screen.
The gondola replaces the old mark and runs through the whole product: the logo, the sign-in screen, the loading state and the browser tab. The interface moved to a lighter, paper-like surface at the same time.
Usage is now broken down per workload.
Every metered hour is attributed to the app, database, bucket or scheduled job that caused it, so you can see what each thing costs instead of one number for the whole project. Anything that cannot be placed under a workload is still shown, rather than quietly folded into the total.
One usage explorer instead of six cards.
Usage has its own page, separate from Billing, where you pick a period and drill from your organization down to a project and then to a single workload, charting any level.
Asking to spend more goes to a person.
Upgrading to a paid plan or adding credit is now a request that a platform administrator confirms once the payment has arrived. You can see your pending requests and withdraw one you no longer want.
Configuration is one surface with two lenses.
Plain values and sensitive values live on one page instead of two, with a clear separation between them, and the page no longer asks the same question twice.
Rows answer the question you opened the page for.
An app row shows whether it is actually doing any work, a domain shows which of its three stages it has reached, a database offers its connection string, and a disk can be resized without leaving the list.
Backups separate what is protected from whether it ran
, so a schedule that exists but has not run yet no longer reads like a successful backup.
API tokens were rewritten.
Creating, reviewing and revoking tokens is clearer, and a newly created token can be copied straight from the screen.
The roadmap has a home in the navigation
, with a tidier board.
›Improved6
Navigation follows one rule: the sidebar owns where you are, the top bar owns what you are looking at.
One scope control replaces the two stacked switchers, and every destination now appears in exactly one place. Quotas moved out of Settings, and the three separate registry screens became a single Registries page.
A project opens on its workloads
rather than a wall of cards.
The network view shows the whole conversation at once
instead of one side at a time.
Scheduled jobs show when they run
in plain language.
Empty states teach instead of apologising
, and pages got their short introductions back.
Capacity is now part of your plan.
Asking for a quota increase separately is gone: if you need more, the answer is a larger plan, which makes the limit you get predictable from the plan you chose.
›Fixed6
An hour of usage could be counted twice.
While the per-workload breakdown was being rolled out, the hour in progress could be recorded in both the old and the new shape, so that hour's reserved capacity and cost were doubled. It was visible as an unattributed line carrying almost the same figures as the workloads beside it. Affected hours have been corrected, and an hour is now written once no matter how often it is measured. The same fix stops a project being billed for a workload that has since been deleted.
Promo credit that went missing during signup now arrives on its own.
A code accepted while your organization was being created could end up not applied; it is now picked up on the next page load rather than needing support.
Statements showed the entire billing page
instead of just your statements, and spending details sometimes disappeared from the usage page.
Hardened how klickops determines a caller's network address
, which is used for rate limiting and recorded against promo redemptions and terms acceptances. Self-hosted operators behind more than one proxy can set KLICKOPS_TRUSTED_PROXY_HOPS; the default suits the shipped setup.
Build containers can be pinned to a sandboxed runtime
with KLICKOPS_BUILDS_RUNTIME_CLASS, for operators who want builds further isolated from the rest of the cluster.
A long tail of interface corrections: the active tab is no longer clipped by its own scroller, breadcrumbs size and compress consistently, dropdowns share one spacing scale, the organization switcher stays put on account pages, and status now appears once rather than twice on an empty overview.
2026.8.5The operator console becomes a deliberate destination2 fixes
Signing in always lands you in your own organization.
Platform operators used to open straight onto the console showing every customer; they now start where everyone else does and step into the console on purpose, from the user menu, the organization switcher, or the Organizations page.
Organization and project lists only show what belongs to you.
The switchers, the command palette, the activity feed in the top bar, and the page you land on after signing in all build their lists from your own memberships.
Name your organization, tick the terms, done — the multi-step wizard and the separate terms popup are gone. A promo code from our website is applied automatically and shows as a credit badge, so you never have to type it twice. Inviting your team moved to where it belongs: the Members page, once there is something to show them.
›Improved5
Billing opens with two numbers.
This month's spend against your included credit, and your balance — with promo credit folded in and its expiry date right next to it. The charts and the per-meter, per-project, and per-workload breakdowns are one click away under "Spending details", and the Plan tab is now purely about choosing a plan.
One billing message at a time.
The most urgent thing about your account shows as a single banner instead of a stack of warnings.
"Upgrade your plan" now takes you to the plans.
Every upgrade link in the product lands directly on the plan ladder instead of the cost overview.
Small amounts show exact figures.
Costs under one franc display with four decimals on the billing page, matching your PDF invoices instead of rounding to 0.00.
Quota decisions come with a reason.
When your quota request is approved or denied, the email now includes the reviewer's note.
›Fixed4
Late-settled statements bill the right plan.
A month that was settled after you changed plans could be priced at the new plan instead of the one you were on. Statements now freeze with the plan that was actually in effect.
Promo codes behave at the edges.
Entering the same code twice no longer shows an error after the credit was already granted, a code scoped to your company address now tells you to sign in with that address instead of a generic message, and an organization suspended for billing can redeem a code to get its workloads running again.
Resuming a suspended organization is reliable.
A sequence of suspend-and-restrict actions could leave apps stopped even after access was restored; they now come back up as expected.
Hardened the closed-beta signup gate and month-close billing.
2026.8.3Promo codes, and a smoother GitHub connect1 new · 1 fix
Promo codes.
Got a code? Enter it at sign-up or later under Billing to unlock free credit for a limited time. Your billing page shows the remaining promo balance and when it expires, and promo credit is always spent before your own. A code can also raise your plan limits for its duration, and during the closed beta a valid code gets you straight in.
Connecting GitHub for the first time works now.
If the klickops GitHub App was not installed on any of your accounts yet, connecting ended in "Connect failed, please try again". You are now taken to GitHub's install page instead, and land back in the repository picker after installing.
Safer by default, and a big honesty pass on the UI
›New3
Apps are hardened automatically.
klickops now reads your container image and applies the right protection on its own: images that run as a normal user are fully locked down, and images that need root are isolated so root inside the container has no power on the platform (on clusters that support it). The deploy wizard no longer asks security questions — it simply shows what will apply, and overrides live on the app's Advanced tab.
Health checks are on by default.
New apps get a connection check on their port with zero setup, so a crashed app is restarted automatically. Switch to an HTTP path check in the same control if you have a health endpoint.
Scaling has its own tab
on the app page — it was previously tucked away at the bottom of Metrics.
›Improved5
The Network page is now the one place for connectivity.
Rules, live traffic, and creating new rules all live together; allowing a blocked connection drafts the rule right there, and old Firewall links redirect. Creating and editing a rule now use the same editor at the same size.
One name per thing.
Buckets are "Buckets" everywhere (previously also "Object Storage"), running app instances are "copies" throughout, Secrets and plain config appear as one "Configuration" concept, and the Alerts page is titled Alerts.
Tidier app pages.
Tabs for features your cluster doesn't offer (backups without a backup engine, firewall without a network layer) no longer render as dead ends, and crowded tab strips now show when there's more to scroll.
Roadmap and What's new moved into your user menu
, freeing sidebar space. A dot on your avatar tells you when release notes are waiting.
Empty pages now point you to the next step instead of dead-ending, and each secret key has a page showing where it's used, one click from Configuration.
›Fixed7
Scaling an app to 0 now actually stops it.
Previously the value silently became 1 while the UI confirmed success. Stopping all copies now asks first, and the save button says what it will do.
Deleting a database or bucket requires typing its name
, matching app and volume deletion — it destroys data and deserved the same guard.
Removing a firewall rule now asks for confirmation and reports errors instead of failing silently.
Database tuning that requires a restart now says so and asks — no more silent restarts after applying tuning values.
Many pages no longer show up blank or claim "nothing here yet" when loading actually failed; they now say what went wrong and offer a retry.
Revoking a guest link or a pending invitation asks first — both cut off access irreversibly.
The "view all events" button on the app overview works again.
Preview links for apps whose domain has a "redirect from" alias no longer bounce to the live site. The alias redirect was being copied into each preview, so opening a preview sent you straight back to your production domain.
Preview environments announce themselves to your app.
Every preview now runs with KLICKOPS_ENVIRONMENT=preview and KLICKOPS_PREVIEW_PR set, so your app can skip schedulers, outgoing email, and other side effects when it's running as a pull-request preview instead of production.
A built-in API reference.
The full REST API is now documented on its own reference page, generated from the same definitions the product runs on.
›Fixed3
Switching between organizations or projects no longer briefly shows data from the one you just left.
The command palette's jump-to-tab entries now always match the tabs the page actually has.
Quota request emails pointed reviewers at a page that no longer exists.
Release notes in the app, and a roadmap you can vote on
›New3
See what's new after every update.
klickops now tells you what changed: a short summary pops up once after each platform update, and the full release history is always one click away in the sidebar.
A roadmap you can steer.
The new Roadmap page shows what we're considering, planning, and building. Vote for what matters to you, request features you're missing, and watch shipped items close the loop.
Email notifications can now be delivered through Resend as an alternative to an SMTP relay.
›Fixed1
Images built from source in the built-in registry are now stored per organization, so two organizations can build same-named apps without conflicts.
Hardened the GitHub connection flow: authorization redirects can no longer be influenced by request headers, and every OAuth callback is strictly validated.
Connecting a repository when the GitHub App was already installed now lands you back in the right place.
A clear warning is shown when a GitHub App is configured without OAuth credentials.