{"$comment":"Generated from kiste-run/backend contract/errors.yaml by scripts/errors.mjs. Do not edit.","version":1,"docs_base":"https://kiste.run/errors/","prefixes":{"K":"Kisten (machines, snapshots, images, environments, commands)","N":"Network and connections","D":"Desktop and browser links","S":"Kiste Stream (published apps on kiste.stream)","A":"Account and sign-in","B":"Billing","L":"Limits and capacity","C":"The kiste command-line tool","P":"Platform"},"errors":[{"code":"K01","type":"machine_not_found","status":404,"message":"There is no Kiste named {name} in your account. (code: K01)","hint":"Check the name in your list of Kisten.","hint_cli":"Check available names with `kiste list`.","retry":"never","owners":["worker"],"when":"A request named a Kiste that does not exist in your account, or that was deleted.","placeholders":["name"]},{"code":"K02","type":"machine_name_taken","status":409,"message":"You already have a Kiste named {name}. (code: K02)","hint":"Choose another name, or delete or rename the existing Kiste first.","retry":"never","owners":["worker"],"when":"Creating, renaming, forking or restoring a Kiste used a name another Kiste in your account already has.","placeholders":["name"]},{"code":"K03","type":"machine_not_running","status":409,"message":"{name} isn't running. (code: K03)","hint":"Start the Kiste, then try again.","hint_cli":"Start it with `kiste start {name}`, then try again.","retry":"never","owners":["worker","cli","cli-dev"],"when":"The action needs a running Kiste (terminal, commands, metrics, SSH, desktop, publishing an app, capturing a snapshot), and this one is stopped or parked.","placeholders":["name"]},{"code":"K04","type":"machine_not_ready","status":409,"message":"{name} is still starting up. (code: K04)","hint":"Wait a few seconds and try again.","retry":"backoff","owners":["worker"],"when":"The Kiste is running but has not finished booting: its command channel, SSH server or terminal is not available yet.","placeholders":["name"]},{"code":"K05","type":"machine_busy","status":409,"message":"Another change to this Kiste is still in progress. (code: K05)","hint":"Wait until it finishes, then try again.","retry":"backoff","owners":["worker"],"when":"A start, stop, restart, resize or delete was requested while another one was still running.","placeholders":[]},{"code":"K06","type":"invalid_machine_request","status":400,"message":"That Kiste request isn't valid: {detail}. (code: K06)","hint":"Correct the request and send it again.","retry":"never","owners":["worker","backend"],"when":"A Kiste request had a value outside the allowed range (name, shape, lifetime, SSH key, terminal size, profile).","placeholders":["detail"]},{"code":"K07","type":"machine_start_failed","status":500,"message":"This Kiste couldn't start. Its disk is kept. (code: K07)","hint":"Try again. If it keeps failing, contact support with the request ID.","retry":"never","owners":["worker"],"when":"The Kiste could not be booted after it was created, started, restored or forked.","placeholders":[]},{"code":"K08","type":"snapshot_not_found","status":404,"message":"There is no snapshot {snapshot} in your account. (code: K08)","hint":"Check the snapshot in your list of snapshots.","hint_cli":"Check snapshots with `kiste snapshot list`.","retry":"never","owners":["worker"],"when":"A request named a snapshot that does not exist, is not ready, or was deleted.","placeholders":["snapshot"]},{"code":"K09","type":"snapshot_busy","status":409,"message":"The snapshot {snapshot} is already being deleted. (code: K09)","hint":"Wait a moment and refresh your list of snapshots.","retry":"never","owners":["worker"],"when":"A snapshot was deleted or restored while it was already being deleted.","placeholders":["snapshot"]},{"code":"K10","type":"invalid_snapshot_request","status":400,"message":"That snapshot request isn't valid: {detail}. (code: K10)","hint":"Correct the request and send it again.","retry":"never","owners":["worker"],"when":"A snapshot name or option was outside the allowed range.","placeholders":["detail"]},{"code":"K11","type":"snapshot_failed","status":500,"message":"The snapshot couldn't be taken. The Kiste is unchanged. (code: K11)","hint":"Try again. If it keeps failing, contact support with the request ID.","retry":"never","owners":["worker"],"when":"Capturing a snapshot failed on our side.","placeholders":[]},{"code":"K12","type":"image_not_found","status":404,"message":"There is no image {image} in your account. (code: K12)","hint":"Check the image in your list of images.","hint_cli":"Check images with `kiste image list`.","retry":"never","owners":["worker"],"when":"A request named an image that does not exist.","placeholders":["image"]},{"code":"K13","type":"image_name_taken","status":409,"message":"The image name {image} is already taken. (code: K13)","hint":"Choose another name.","retry":"never","owners":["worker"],"when":"A new image used a name of another of your images or of a built-in image.","placeholders":["image"]},{"code":"K14","type":"image_in_use","status":409,"message":"The image {image} is still used by a Kiste. (code: K14)","hint":"Delete the Kisten that use it first.","retry":"never","owners":["worker"],"when":"An image was deleted while a Kiste still uses it.","placeholders":["image"]},{"code":"K15","type":"image_not_ready","status":409,"message":"The image {image} isn't ready yet. (code: K15)","hint":"Wait until the image is built, then try again.","retry":"backoff","owners":["worker"],"when":"A Kiste was created from an image that is still being built or failed to build.","placeholders":["image"]},{"code":"K16","type":"invalid_image_request","status":400,"message":"That image request isn't valid: {detail}. (code: K16)","hint":"Correct the request and send it again.","retry":"never","owners":["worker"],"when":"An image name, component, version or size was outside the allowed range.","placeholders":["detail"]},{"code":"K17","type":"environment_not_found","status":404,"message":"There is no environment {environment} in your account. (code: K17)","hint":"Check the environment in your list of environments.","hint_cli":"Check environments with `kiste environment list`.","retry":"never","owners":["worker"],"when":"A request named an environment that does not exist.","placeholders":["environment"]},{"code":"K18","type":"environment_name_taken","status":409,"message":"You already have an environment named {environment}. (code: K18)","hint":"Choose another name, or update the existing environment.","retry":"never","owners":["worker"],"when":"A new environment used a name you already use.","placeholders":["environment"]},{"code":"K19","type":"invalid_environment","status":400,"message":"That environment isn't valid: {detail}. (code: K19)","hint":"Correct the environment and send it again.","retry":"never","owners":["worker"],"when":"An environment had an invalid repository, variable, secret file or setup script, or was too large.","placeholders":["detail"]},{"code":"K20","type":"environment_setup_failed","status":422,"message":"The environment setup on {name} failed. (code: K20)","hint":"Check the setup script of the environment, then start the Kiste again.","retry":"never","owners":["worker"],"when":"The setup script of the environment exited with an error inside the Kiste.","placeholders":["name"]},{"code":"K21","type":"command_not_found","status":404,"message":"There is no command {command} on this Kiste. (code: K21)","hint":"Check the command ID.","retry":"never","owners":["worker"],"when":"A request named a command that does not exist or has finished.","placeholders":["command"]},{"code":"K22","type":"command_id_taken","status":409,"message":"A command with the ID {command} already exists. (code: K22)","hint":"Use a new command ID.","retry":"never","owners":["worker"],"when":"A command was started with an ID that was already used.","placeholders":["command"]},{"code":"K23","type":"invalid_command","status":400,"message":"That command request isn't valid: {detail}. (code: K23)","hint":"Correct the request and send it again.","retry":"never","owners":["worker"],"when":"A command had an invalid argument, working directory, environment or interrupt reason.","placeholders":["detail"]},{"code":"K24","type":"command_interrupt_failed","status":409,"message":"The command couldn't be interrupted. (code: K24)","hint":"It may have finished already. Check its status and try again.","retry":"never","owners":["worker"],"when":"Interrupting a running command failed inside the Kiste.","placeholders":[]},{"code":"K25","type":"metrics_unavailable","status":409,"message":"The usage of {name} can't be read right now. (code: K25)","hint":"Try again in a few seconds.","retry":"backoff","owners":["worker"],"when":"The Kiste did not answer the usage probe in time, or its answer could not be read.","placeholders":["name"]},{"code":"K26","type":"guest_unresponsive","status":409,"message":"This Kiste stopped responding and was stopped. Its disk is kept. (code: K26)","hint":"Start it again.","retry":"never","owners":["worker"],"when":"The system inside the Kiste stopped answering (it halted or hung), so it was stopped hard to keep its status honest.","placeholders":[]},{"code":"K27","type":"snapshot_unavailable","status":409,"message":"Snapshots aren't available for this Kiste right now. (code: K27)","hint":"Contact support with the request ID.","retry":"never","owners":["worker"],"when":"The computer that runs this Kiste cannot take live snapshots at the moment.","placeholders":[]},{"code":"K28","type":"machine_stop_failed","status":500,"message":"This Kiste couldn't be stopped cleanly. Its disk is kept. (code: K28)","hint":"Try again. If it keeps failing, contact support with the request ID.","retry":"never","owners":["worker"],"when":"Stopping the Kiste failed on our side.","placeholders":[]},{"code":"K29","type":"machine_restart_failed","status":500,"message":"This Kiste couldn't restart. Its disk is kept. (code: K29)","hint":"Try again. If it keeps failing, contact support with the request ID.","retry":"never","owners":["worker"],"when":"Restarting the Kiste failed on our side.","placeholders":[]},{"code":"K30","type":"machine_delete_failed","status":500,"message":"This Kiste couldn't be deleted. (code: K30)","hint":"Try again in a minute. If it keeps failing, contact support with the request ID.","retry":"never","owners":["worker"],"when":"Deleting the Kiste failed on our side; it still exists.","placeholders":[]},{"code":"K31","type":"snapshot_restore_failed","status":500,"message":"The snapshot couldn't be restored. The snapshot is kept. (code: K31)","hint":"Try again. If it keeps failing, contact support with the request ID.","retry":"never","owners":["worker"],"when":"Restoring a snapshot into a Kiste failed on our side.","placeholders":[]},{"code":"K32","type":"machine_fork_failed","status":500,"message":"This Kiste couldn't be copied. The original is unchanged. (code: K32)","hint":"Try again. If it keeps failing, contact support with the request ID.","retry":"never","owners":["worker"],"when":"Forking (copying) a running Kiste failed on our side; the working snapshot was removed.","placeholders":[]},{"code":"K33","type":"snapshot_delete_failed","status":500,"message":"The snapshot couldn't be deleted. (code: K33)","hint":"Try again in a minute. If it keeps failing, contact support with the request ID.","retry":"never","owners":["worker"],"when":"Deleting a snapshot's storage failed on our side; the snapshot still exists.","placeholders":[]},{"code":"K34","type":"snapshot_name_taken","status":409,"message":"You already have a snapshot named {snapshot}. (code: K34)","hint":"Choose another name, or delete the existing snapshot first.","retry":"never","owners":["worker"],"when":"A snapshot was taken with a name another snapshot in your account already has.","placeholders":["snapshot"]},{"code":"K35","type":"command_failed","status":500,"message":"The command couldn't be run in {name}. (code: K35)","hint":"Check the program's name and that the Kiste is running, then try again.","retry":"never","owners":["worker"],"when":"The connection to the system inside the Kiste broke while a command was starting or running.","placeholders":["name"]},{"code":"N01","type":"compute_unreachable","status":503,"message":"kiste.run can't reach the compute service right now. Your Kisten are safe. (code: N01)","hint":"Try again in a minute.","retry":"after","retry_seconds":30,"owners":["backend","frontend"],"when":"kiste.run could not connect to the computer that runs your Kisten. Nothing is lost; the connection usually returns within a minute.","placeholders":[]},{"code":"N02","type":"compute_bad_response","status":502,"message":"The compute service sent an answer kiste.run didn't expect. (code: N02)","hint":"Try again. If it keeps happening, contact support with the request ID.","retry":"never","owners":["backend","frontend"],"when":"The computer that runs your Kisten answered with something kiste.run could not use.","placeholders":[]},{"code":"N03","type":"request_timeout","status":503,"message":"That took too long and was stopped. (code: N03)","hint":"Try again in a moment.","retry":"backoff","owners":["worker"],"when":"The request did not finish within its time limit.","placeholders":[]},{"code":"N04","type":"edge_unreachable","status":0,"message":"Can't reach kiste.run. (code: N04)","hint":"Check your internet connection, then try again.","hint_cli":"Check your internet connection, or run `kiste doctor`.","retry":"backoff","exit":7,"owners":["cli","cli-dev","frontend"],"when":"The command-line tool could not open a connection to kiste.run (no network, DNS, proxy or firewall).","placeholders":[]},{"code":"N05","type":"connection_interrupted","status":0,"message":"The connection to kiste.run was interrupted. (code: N05)","hint":"Try again.","retry":"backoff","exit":7,"owners":["cli","cli-dev"],"when":"The connection broke while an answer or a command's output was still arriving.","placeholders":[]},{"code":"N06","type":"client_timeout","status":0,"message":"kiste.run didn't answer in time. (code: N06)","hint":"Try again in a moment.","hint_cli":"Try again in a moment, or run `kiste doctor`.","retry":"backoff","exit":8,"owners":["cli","cli-dev","frontend"],"when":"The command-line tool gave up waiting for an answer.","placeholders":[]},{"code":"N07","type":"ssh_connection_failed","status":0,"message":"Couldn't open an SSH connection to {name}. (code: N07)","hint":"Try again. If it keeps failing, restart the Kiste.","retry":"never","exit":7,"owners":["cli","cli-dev"],"when":"The SSH connection through kiste.run could not be opened or closed unexpectedly.","placeholders":["name"]},{"code":"N08","type":"ssh_key_not_accepted","status":0,"message":"{name} didn't accept this computer's key. (code: N08)","hint":"Sign in on this computer so its key is added to your account.","hint_cli":"Run `kiste login` on this computer so its key is added to your account.","retry":"never","exit":3,"owners":["cli"],"when":"The Kiste does not know this computer's SSH key yet.","placeholders":["name"]},{"code":"D01","type":"desktop_unavailable","status":503,"message":"The desktop isn't available right now. (code: D01)","hint":"Wait a few seconds and try again.","retry":"backoff","owners":["worker"],"when":"The Kiste's desktop is not streaming yet.","placeholders":[]},{"code":"D02","type":"desktop_not_supported","status":400,"message":"{name} has no desktop. (code: D02)","hint":"Create a Kiste with a desktop to use this.","retry":"never","owners":["worker"],"when":"A desktop was requested for a Kiste whose profile has none.","placeholders":["name"]},{"code":"D03","type":"desktop_stream_failed","status":409,"message":"The desktop stream couldn't be started. (code: D03)","hint":"Reload the page to try again.","retry":"backoff","owners":["worker"],"when":"The video connection to the desktop could not be set up.","placeholders":[]},{"code":"D04","type":"desktop_session_not_found","status":404,"message":"This desktop session has ended. (code: D04)","hint":"Open the desktop again.","retry":"never","owners":["worker","frontend"],"when":"The desktop session was closed, replaced by a newer one, or expired.","placeholders":[]},{"code":"D05","type":"invalid_desktop_request","status":400,"message":"That desktop request isn't valid: {detail}. (code: D05)","hint":"Reload the page to try again.","retry":"never","owners":["worker","backend"],"when":"A desktop link or stream request had an invalid value.","placeholders":["detail"]},{"code":"D06","type":"desktop_sign_in_required","status":401,"message":"Sign in to Kiste in this browser to open the desktop. (code: D06)","hint":"Sign in at kiste.run, then open the link again.","retry":"never","owners":["backend"],"when":"A desktop link was opened in a browser that is not signed in to the account that owns the Kiste.","placeholders":[]},{"code":"D07","type":"link_invalid","status":401,"message":"This link is no longer valid. (code: D07)","hint":"Open the desktop or terminal again from your Kisten.","retry":"never","owners":["worker","backend","frontend"],"when":"A desktop or terminal link expired, was revoked, or belongs to another account.","placeholders":[]},{"code":"S01","type":"service_not_found","status":404,"message":"There is no published app {service}. (code: S01)","hint":"Check your published apps.","hint_cli":"Check published ports with `kiste stream ls`.","retry":"never","owners":["worker"],"when":"A request named a published app that does not exist or was unpublished.","placeholders":["service"]},{"code":"S02","type":"service_name_taken","status":409,"message":"{name} already publishes an app named {service}. (code: S02)","hint":"Choose another name, or unpublish the existing app first.","retry":"never","owners":["worker"],"when":"A new published app used a name the Kiste already uses.","placeholders":["name","service"]},{"code":"S03","type":"invalid_service","status":400,"message":"That app can't be published: {detail}. (code: S03)","hint":"Correct the request and send it again.","retry":"never","owners":["worker"],"when":"A published app had an invalid port, protocol, path or description.","placeholders":["detail"]},{"code":"S04","type":"service_unavailable","status":503,"message":"This app isn't answering right now. (code: S04)","hint":"Make sure the app is running inside the Kiste, then try again.","retry":"backoff","owners":["worker"],"when":"The published app did not answer: it is not running, listens on another port, or the Kiste is stopped.","placeholders":[]},{"code":"S05","type":"service_request_rejected","status":400,"message":"This request can't be passed to the app: {detail}. (code: S05)","hint":"Send a smaller request or a supported method.","retry":"never","owners":["worker"],"when":"A request to a published app used an unsupported method or was too large.","placeholders":["detail"]},{"code":"S06","type":"stream_address_not_found","status":404,"message":"Nothing is streamed at this address. (code: S06)","hint":"The link is wrong, or what it pointed to was stopped. Ask for a new link.","retry":"never","owners":["backend","worker"],"when":"A kiste.stream address names no published app or desktop link, or the link has expired.","placeholders":[]},{"code":"S07","type":"service_busy","status":429,"message":"This app is getting more requests than it can take. Please wait {seconds} seconds and try again. (code: S07)","hint":"Wait, then reload the page.","retry":"after","retry_seconds":60,"owners":["worker"],"when":"A published app received more requests in a short time than Kiste passes on to it.","placeholders":["seconds"]},{"code":"A01","type":"authentication_required","status":401,"message":"Please sign in to continue. (code: A01)","hint":"Sign in at kiste.run.","hint_cli":"Run `kiste login`, or set KISTE_TOKEN for this process.","retry":"never","owners":["worker","backend","cli","cli-dev"],"when":"The request carried no valid sign-in: none at all, an expired or revoked one, or one for a deleted account.","placeholders":[]},{"code":"A02","type":"invalid_credentials","status":401,"message":"The email address or password is wrong. (code: A02)","hint":"Check both and try again.","retry":"never","owners":["backend","worker"],"when":"A sign-in used a wrong email address or password.","placeholders":[]},{"code":"A03","type":"too_many_attempts","status":429,"message":"Too many sign-in attempts. Please wait {seconds} seconds and try again. (code: A03)","hint":"Wait, then try again.","retry":"after","retry_seconds":60,"owners":["backend","worker"],"when":"Too many sign-ins were tried from this address or for this account in a short time.","placeholders":["seconds"]},{"code":"A04","type":"account_locked","status":429,"message":"This account is locked for {seconds} seconds after failed sign-ins. (code: A04)","hint":"Wait, then sign in again.","retry":"after","retry_seconds":900,"owners":["backend"],"when":"Repeated failed sign-ins locked the account for a while.","placeholders":["seconds"]},{"code":"A05","type":"signup_disabled","status":404,"message":"Signing up isn't open. (code: A05)","hint":"Ask for an invitation.","retry":"never","owners":["worker"],"when":"Self-service sign-up is closed.","placeholders":[]},{"code":"A06","type":"email_taken","status":409,"message":"An account with this email address already exists. (code: A06)","hint":"Sign in instead.","retry":"never","owners":["worker"],"when":"A sign-up used an email address that already has an account.","placeholders":[]},{"code":"A07","type":"invalid_signup","status":400,"message":"That sign-up isn't valid: {detail}. (code: A07)","hint":"Correct it and try again.","retry":"never","owners":["worker"],"when":"A sign-up had an invalid email address or a password of the wrong length.","placeholders":["detail"]},{"code":"A08","type":"api_token_not_found","status":404,"message":"There is no API key {token} in your account. (code: A08)","hint":"Check your list of API keys.","retry":"never","owners":["worker"],"when":"A request named an API key that does not exist or was revoked.","placeholders":["token"]},{"code":"A09","type":"api_token_name_taken","status":409,"message":"You already have an active API key named {label}. (code: A09)","hint":"Choose another name, or revoke the existing key first.","retry":"never","owners":["worker"],"when":"A new API key used the name of an active one.","placeholders":["label"]},{"code":"A10","type":"invalid_api_token_request","status":400,"message":"That API key request isn't valid: {detail}. (code: A10)","hint":"Correct it and try again.","retry":"never","owners":["worker"],"when":"A new API key had an invalid name or lifetime.","placeholders":["detail"]},{"code":"A11","type":"api_token_cannot_mint","status":403,"message":"An API key can't create other API keys. (code: A11)","hint":"Create API keys in the console or with the kiste command-line tool.","retry":"never","owners":["backend"],"when":"A request authenticated with an API key tried to create an API key.","placeholders":[]},{"code":"A12","type":"invalid_origin","status":403,"message":"This request didn't come from kiste.run. (code: A12)","hint":"Reload kiste.run and try again.","retry":"never","owners":["backend"],"when":"A browser request that changes something came from another site (cross-site protection).","placeholders":[]},{"code":"A13","type":"cli_token_required","status":403,"message":"This needs a sign-in from the command-line tool or an API key. (code: A13)","hint":"Use the kiste command-line tool or an API key.","retry":"never","owners":["backend"],"when":"A browser session called an action that only the command-line tool or an API key may call.","placeholders":[]},{"code":"A14","type":"oauth_invalid_request","status":400,"message":"The sign-in request isn't valid. (code: A14)","hint":"Start the sign-in again.","hint_cli":"Run `kiste login` again.","retry":"never","owners":["backend"],"when":"The command-line sign-in sent parameters kiste.run does not accept.","placeholders":[]},{"code":"A15","type":"oauth_code_invalid","status":400,"message":"The sign-in code is invalid or has expired. (code: A15)","hint":"Start the sign-in again.","hint_cli":"Run `kiste login` again.","retry":"never","owners":["backend"],"when":"The one-time sign-in code was wrong, already used or too old.","placeholders":[]},{"code":"A16","type":"oauth_user_gone","status":401,"message":"The account for this sign-in no longer exists. (code: A16)","hint":"Sign in with another account.","retry":"never","owners":["backend"],"when":"The account was deleted while the sign-in was in progress.","placeholders":[]},{"code":"A17","type":"operator_only","status":403,"message":"Only the operator can do this. (code: A17)","hint":"Sign in with the operator account.","retry":"never","owners":["backend"],"when":"An operator action was called by another account or with an API key.","placeholders":[]},{"code":"A18","type":"device_key_not_found","status":404,"message":"There is no computer {id} signed in to your account. (code: A18)","hint":"Check your list of computers.","hint_cli":"Check computers with `kiste devices`.","retry":"never","owners":["backend"],"when":"A request named a device key that is not registered.","placeholders":["id"]},{"code":"A19","type":"invalid_device_key","status":400,"message":"That computer key isn't valid: {detail}. (code: A19)","hint":"Correct it and try again.","retry":"never","owners":["backend"],"when":"A device key had an invalid name or public key.","placeholders":["detail"]},{"code":"A20","type":"session_not_found","status":404,"message":"There is no sign-in {id} on your account. (code: A20)","hint":"Refresh your list of sign-ins.","retry":"never","owners":["backend"],"when":"A request named a sign-in that does not exist or has ended.","placeholders":["id"]},{"code":"A21","type":"test_account_not_found","status":404,"message":"There is no test account {id}. (code: A21)","hint":"Refresh the list of test accounts.","retry":"never","owners":["backend"],"when":"An operator request named a test account that does not exist.","placeholders":["id"]},{"code":"A22","type":"test_account_exists","status":409,"message":"The test account {name} already exists. (code: A22)","hint":"Choose another name.","retry":"never","owners":["backend"],"when":"A new test account used an existing name.","placeholders":["name"]},{"code":"A23","type":"invalid_test_account","status":400,"message":"That test account isn't valid: {detail}. (code: A23)","hint":"Correct it and try again.","retry":"never","owners":["backend"],"when":"A new test account had an invalid name.","placeholders":["detail"]},{"code":"A24","type":"webhook_not_found","status":404,"message":"There is no webhook endpoint {id} in your account. (code: A24)","hint":"Check your list of webhooks.","retry":"never","owners":["worker"],"when":"A request named a webhook endpoint that does not exist.","placeholders":["id"]},{"code":"A25","type":"webhook_name_taken","status":409,"message":"You already have a webhook endpoint named {name}. (code: A25)","hint":"Choose another name.","retry":"never","owners":["worker"],"when":"A webhook endpoint used a name you already use.","placeholders":["name"]},{"code":"A26","type":"invalid_webhook","status":400,"message":"That webhook endpoint isn't valid: {detail}. (code: A26)","hint":"Correct it and try again.","retry":"never","owners":["worker"],"when":"A webhook endpoint had an invalid name, URL, host or event list.","placeholders":["detail"]},{"code":"A27","type":"alert_not_found","status":404,"message":"That alert doesn't exist. (code: A27)","hint":"Refresh your alerts.","retry":"never","owners":["worker"],"when":"A request named an alert that does not exist.","placeholders":[]},{"code":"A28","type":"invalid_alert","status":400,"message":"That alert setting isn't valid: {detail}. (code: A28)","hint":"Correct it and try again.","retry":"never","owners":["worker"],"when":"Alert preferences named an unknown alert kind or had no values.","placeholders":["detail"]},{"code":"A29","type":"token_rejected","status":401,"message":"Your sign-in is no longer valid. (code: A29)","hint":"Sign in again.","hint_cli":"Run `kiste login` again, or set a valid KISTE_TOKEN.","retry":"never","owners":["backend","cli","cli-dev"],"when":"A sign-in was sent but kiste.run did not accept it: it expired, was revoked, or belongs to a deleted account.","placeholders":[]},{"code":"A30","type":"account_deletion_requires_sign_in","status":403,"message":"Deleting your account needs your own sign-in; an API key can't do it. (code: A30)","hint":"Delete the account from the console, or with the kiste command after `kiste login`.","retry":"never","owners":["backend"],"when":"An account deletion was requested with an API key instead of a console or CLI sign-in.","placeholders":[]},{"code":"A31","type":"account_deletion_operator","status":403,"message":"The operator account can't be deleted. (code: A31)","hint":"Contact support if the service itself should be closed.","retry":"never","owners":["backend"],"when":"The operator of this Kiste installation asked to delete their own account, which would lock everyone out of operating it.","placeholders":[]},{"code":"A32","type":"account_deletion_unconfirmed","status":400,"message":"To delete your account, type its e-mail address exactly as confirmation. (code: A32)","hint":"Type the address shown in your account settings, then try again.","retry":"never","owners":["backend","cli","cli-dev"],"when":"An account deletion was sent without the account's own e-mail address as confirmation, or with a different one.","placeholders":[]},{"code":"A33","type":"export_link_invalid","status":403,"message":"This download link has expired or belongs to another account. (code: A33)","hint":"Request a new data export; each link works for ten minutes.","hint_cli":"Run `kiste account export` again.","retry":"never","owners":["backend"],"when":"A data export download used a link that expired, was altered, or was issued to a different account than the one signed in.","placeholders":[]},{"code":"B01","type":"billing_past_due","status":403,"message":"Your last payment failed. (code: B01)","hint":"Update your payment method in Billing to create or start Kisten again.","retry":"never","owners":["backend"],"when":"Creating or starting a Kiste was refused because the last payment failed.","placeholders":[]},{"code":"B02","type":"wallet_empty","status":403,"message":"Your credit is used up. (code: B02)","hint":"Buy credit or choose a plan in Billing to run Kisten again.","retry":"never","owners":["backend"],"when":"Creating or starting a Kiste was refused because the account has no credit left.","placeholders":[]},{"code":"B03","type":"plan_shape_not_included","status":403,"message":"The {plan} plan doesn't include {shape} Kisten. (code: B03)","hint":"Choose another size, or upgrade in Billing.","retry":"never","owners":["backend"],"when":"The requested Kiste size is not part of the account's plan.","placeholders":["plan","shape"]},{"code":"B04","type":"plan_machine_limit","status":403,"message":"The {plan} plan's Kiste limit is {limit}. (code: B04)","hint":"Delete a Kiste, or upgrade in Billing.","retry":"never","owners":["backend"],"when":"Creating a Kiste would exceed the number of Kisten the plan allows.","placeholders":["plan","limit"]},{"code":"B05","type":"plan_running_limit","status":403,"message":"The {plan} plan's limit of running Kisten at once is {limit}. (code: B05)","hint":"Stop a Kiste, or upgrade in Billing.","retry":"never","owners":["backend"],"when":"Starting or creating a Kiste would exceed the running Kisten the plan allows.","placeholders":["plan","limit"]},{"code":"B06","type":"unknown_plan","status":400,"message":"Please choose one of the offered paid plans. (code: B06)","hint":"Pick a plan in Billing.","retry":"never","owners":["backend"],"when":"A checkout named a plan that does not exist or is free.","placeholders":[]},{"code":"B07","type":"unknown_pack","status":400,"message":"Please choose one of the offered credit packs. (code: B07)","hint":"Pick a credit pack in Billing.","retry":"never","owners":["backend"],"when":"A credit purchase or auto-refill named a pack that does not exist.","placeholders":[]},{"code":"B08","type":"no_payment_method","status":409,"message":"There is no saved card for auto-refill yet. (code: B08)","hint":"Buy credit or a plan once so a card is saved.","retry":"never","owners":["backend"],"when":"Auto-refill was turned on before any card was saved.","placeholders":[]},{"code":"B09","type":"no_customer","status":409,"message":"There is nothing to manage before your first purchase. (code: B09)","hint":"Buy credit or a plan first.","retry":"never","owners":["backend"],"when":"The payment portal was opened before the first checkout.","placeholders":[]},{"code":"B10","type":"billing_unavailable","status":503,"message":"Payments aren't available right now. (code: B10)","hint":"Try again later.","retry":"never","owners":["backend"],"when":"Payments are switched off or not set up, or this plan cannot be bought yet.","placeholders":[]},{"code":"B11","type":"payment_provider_unavailable","status":502,"message":"The payment service isn't answering right now. (code: B11)","hint":"Try again in a moment.","retry":"backoff","owners":["backend"],"when":"The payment service could not be reached or did not complete the request.","placeholders":[]},{"code":"B12","type":"invalid_billing_request","status":400,"message":"That billing request isn't valid: {detail}. (code: B12)","hint":"Correct it and try again.","retry":"never","owners":["backend"],"when":"A billing request had an invalid value.","placeholders":["detail"]},{"code":"B13","type":"invalid_payment_event","status":400,"message":"This payment event was refused. (code: B13)","hint":"Payment events come only from the payment service.","retry":"never","owners":["backend"],"when":"A payment webhook had an invalid signature, was not an event, or was a live-mode event on a test setup.","placeholders":[]},{"code":"B14","type":"payment_event_failed","status":500,"message":"This payment event couldn't be processed yet. (code: B14)","hint":"The payment service retries it automatically.","retry":"never","owners":["backend"],"when":"A payment webhook could not be applied; the payment service will deliver it again.","placeholders":[]},{"code":"B15","type":"already_subscribed","status":409,"message":"You're already on the {plan} plan. (code: B15)","hint":"Manage your plan in Billing.","retry":"never","owners":["backend"],"when":"A checkout was started for the plan the account already has.","placeholders":["plan"]},{"code":"B16","type":"plan_change_in_portal","status":409,"message":"You already have a plan. Change it in the payment portal. (code: B16)","hint":"Open Manage billing to switch plans.","retry":"never","owners":["backend"],"when":"A checkout for another plan was started while a subscription is active; plan changes happen in the payment portal.","placeholders":[]},{"code":"B17","type":"api_key_cannot_change_billing","status":403,"message":"An API key can't change payments or billing settings. (code: B17)","hint":"Change billing in the console at kiste.run/app/billing.","retry":"never","owners":["backend"],"when":"An API key called a route that starts a payment or changes how the account pays (checkout, credit, auto-refill, payment portal).","placeholders":[]},{"code":"L01","type":"rate_limited","status":429,"message":"Too many requests. Please wait {seconds} seconds and try again. (code: L01)","hint":"Wait, then try again.","retry":"after","retry_seconds":60,"owners":["backend","worker"],"when":"The account or address sent more requests of this kind than allowed in a short time.","placeholders":["seconds"]},{"code":"L02","type":"machine_limit","status":409,"message":"Your account's Kiste limit is {limit}. (code: L02)","hint":"Delete a Kiste first.","retry":"never","owners":["worker"],"when":"Creating a Kiste would exceed the number of Kisten your account may have.","placeholders":["limit"]},{"code":"L03","type":"running_limit","status":409,"message":"Your account's limits for running Kisten at once are reached: {machines} running, {vcpu} vCPU, {memory_gib} GiB of memory. (code: L03)","hint":"Stop a Kiste first.","retry":"never","owners":["worker"],"when":"Starting or creating a Kiste would exceed what your account may run at once.","placeholders":["machines","vcpu","memory_gib"]},{"code":"L04","type":"disk_limit","status":409,"message":"Your Kisten and snapshots may use at most {gib} GiB of disk. (code: L04)","hint":"Delete a Kiste or snapshot first.","retry":"never","owners":["worker"],"when":"Creating a Kiste or snapshot would exceed your account's disk space.","placeholders":["gib"]},{"code":"L05","type":"machine_size_limit","status":409,"message":"That Kiste is larger than your account allows: {detail}. (code: L05)","hint":"Choose a smaller size.","retry":"never","owners":["backend","worker"],"when":"A requested Kiste has more vCPU, memory or disk than one Kiste of your account may have.","placeholders":["detail"]},{"code":"L06","type":"image_limit","status":409,"message":"Your account's image limit is {limit}. (code: L06)","hint":"Delete an image first.","retry":"never","owners":["worker"],"when":"Creating an image would exceed your account's image limit.","placeholders":["limit"]},{"code":"L07","type":"webhook_limit","status":409,"message":"Your account's webhook endpoint limit is {limit}. (code: L07)","hint":"Delete an endpoint first.","retry":"never","owners":["worker"],"when":"Creating a webhook endpoint would exceed the limit.","placeholders":["limit"]},{"code":"L08","type":"api_token_limit","status":409,"message":"Your account's limit of active API keys is {limit}. (code: L08)","hint":"Revoke a key first.","retry":"never","owners":["worker"],"when":"Creating an API key would exceed the limit of active keys.","placeholders":["limit"]},{"code":"L09","type":"device_key_limit","status":409,"message":"Your account's limit of signed-in computers is {limit}. (code: L09)","hint":"Sign out a computer you no longer use.","hint_cli":"Remove a computer with `kiste devices`, then try again.","retry":"never","owners":["backend"],"when":"Registering this computer would exceed the number of computers per account.","placeholders":["limit"]},{"code":"L10","type":"test_account_limit","status":409,"message":"The test account limit is {limit}. (code: L10)","hint":"Delete a test account first.","retry":"never","owners":["backend"],"when":"Creating a test account would exceed the limit.","placeholders":["limit"]},{"code":"L11","type":"service_limit","status":409,"message":"The limit of published apps per Kiste is {limit}. (code: L11)","hint":"Unpublish an app first.","retry":"never","owners":["worker"],"when":"Publishing an app would exceed the number of apps per Kiste.","placeholders":["limit"]},{"code":"L12","type":"ssh_connection_limit","status":409,"message":"You have too many SSH connections open (at most {limit}). (code: L12)","hint":"Close some connections and try again.","retry":"never","owners":["worker"],"when":"Opening another SSH connection would exceed the per-account limit.","placeholders":["limit"]},{"code":"L13","type":"capacity_unavailable","status":503,"message":"There's no free capacity for this Kiste right now. (code: L13)","hint":"Try again in a few minutes.","retry":"after","retry_seconds":60,"owners":["worker"],"when":"The computers that run Kisten are full for this size at the moment.","placeholders":[]},{"code":"L14","type":"connection_capacity","status":503,"message":"Too many connections are open right now. (code: L14)","hint":"Try again in a moment.","retry":"backoff","owners":["worker"],"when":"The computer that runs this Kiste has reached its limit of open terminal, SSH or app connections.","placeholders":[]},{"code":"L15","type":"environment_limit","status":409,"message":"Your account's environment limit is {limit}. (code: L15)","hint":"Update an existing environment instead of creating another one.","retry":"never","owners":["worker"],"when":"Creating an environment would exceed your account's environment limit.","placeholders":["limit"]},{"code":"L16","type":"command_limit","status":409,"message":"You have too many commands running at once (at most {limit}). (code: L16)","hint":"Wait for a command to finish or interrupt one, then try again.","retry":"backoff","owners":["worker"],"when":"Starting another command would exceed the number of commands one account may run at once.","placeholders":["limit"]},{"code":"C01","type":"invalid_arguments","status":0,"message":"{detail}. (code: C01)","hint":"See `kiste help` for the correct usage.","retry":"never","exit":6,"owners":["cli","cli-dev"],"when":"The command was given an option or value it does not accept.","placeholders":["detail"]},{"code":"C02","type":"confirmation_required","status":0,"message":"This needs a confirmation. (code: C02)","hint":"Review the target, then repeat the command with --yes.","retry":"never","exit":6,"owners":["cli","cli-dev"],"when":"A destructive command ran without a terminal to confirm in and without --yes.","placeholders":[]},{"code":"C03","type":"command_cancelled","status":0,"message":"Cancelled. (code: C03)","hint":"Nothing was changed.","retry":"never","exit":1,"owners":["cli"],"when":"You declined the confirmation or interrupted the command.","placeholders":[]},{"code":"C04","type":"config_unreadable","status":0,"message":"Your kiste settings couldn't be read. (code: C04)","hint":"Fix or remove the settings file, then try again.","retry":"never","exit":6,"owners":["cli","cli-dev"],"when":"The settings or sign-in file of the command-line tool is unreadable or invalid.","placeholders":[]},{"code":"C05","type":"ssh_client_missing","status":0,"message":"This needs the ssh program, which isn't installed. (code: C05)","hint":"Install OpenSSH, then try again.","retry":"never","exit":10,"owners":["cli"],"when":"SSH-based commands need the ssh client on this computer.","placeholders":[]},{"code":"C06","type":"update_unavailable","status":0,"message":"No update is available right now. (code: C06)","hint":"Try again later.","retry":"never","exit":7,"owners":["cli"],"when":"The update source could not be reached or has no release for this computer.","placeholders":[]},{"code":"C07","type":"update_failed","status":0,"message":"The update couldn't be installed. (code: C07)","hint":"Your current version still works. Install the update again with the installer.","retry":"never","exit":1,"owners":["cli","cli-dev"],"when":"Downloading, verifying or replacing the program failed; the installed version was kept.","placeholders":[]},{"code":"C08","type":"remote_command_failed","status":0,"message":"The command failed inside {name}. (code: C08)","hint":"Check the command's output above.","retry":"never","exit":1,"owners":["cli","cli-dev"],"when":"A command run inside a Kiste reported a failure the tool could not pass through as an exit code.","placeholders":["name"]},{"code":"C09","type":"forward_not_running","status":0,"message":"There is no port forward running for {name}. (code: C09)","hint":"Start one with `kiste forward`.","retry":"never","exit":4,"owners":["cli"],"when":"A background port forward was stopped that is not running.","placeholders":["name"]},{"code":"C10","type":"unexpected_response","status":0,"message":"kiste.run sent an answer this version doesn't understand. (code: C10)","hint":"Update the kiste command-line tool, then try again.","retry":"never","exit":1,"owners":["cli","cli-dev"],"when":"The answer could not be read, usually because the tool is outdated.","placeholders":[]},{"code":"C11","type":"usage_error","status":0,"message":"{detail}. (code: C11)","hint":"See `kiste help` for the commands and their options.","retry":"never","exit":2,"owners":["cli","cli-dev"],"when":"The command line could not be parsed: an unknown command or option, or a missing argument.","placeholders":["detail"]},{"code":"C12","type":"output_mode_unsupported","status":0,"message":"{detail}. (code: C12)","hint":"Use the form the message names.","retry":"never","exit":10,"owners":["cli","cli-dev"],"when":"The command cannot produce the requested output format (a terminal session in JSON mode, a stream as one JSON document).","placeholders":["detail"]},{"code":"C13","type":"provider_not_configured","status":0,"message":"{provider} is not signed in inside {name}. (code: C13)","hint":"Carry a login with `kiste credentials push`, or configure the provider's credentials in the Kiste environment.","retry":"never","exit":5,"owners":["cli","cli-dev"],"when":"An agent command needs a provider (such as Claude or Codex) that is not authenticated inside the Kiste.","placeholders":["provider","name"]},{"code":"C14","type":"ssh_command_failed","status":0,"message":"{program} failed: {detail}. (code: C14)","hint":"If the Kiste was just started, wait a few seconds and try again.","retry":"never","exit":1,"owners":["cli","cli-dev"],"when":"The local ssh, scp or rsync program exited with an error (its own exit code is passed through).","placeholders":["program","detail"]},{"code":"C15","type":"credentials_not_carried","status":0,"message":"Not every credential could be carried ({count}): {names}. (code: C15)","hint":"See the report above for why each one was skipped.","retry":"never","exit":1,"owners":["cli","cli-dev"],"when":"Some or all local logins could not be copied into the Kiste.","placeholders":["count","names"]},{"code":"C16","type":"doctor_found_problems","status":0,"message":"Not everything is healthy. (code: C16)","hint":"See the checks above.","retry":"never","exit":7,"owners":["cli"],"when":"kiste doctor found a check that failed (its exit code is 3 when only the sign-in is missing).","placeholders":[]},{"code":"C17","type":"browser_sign_in_failed","status":0,"message":"The browser sign-in didn't complete: {detail}. (code: C17)","hint":"Run `kiste login` again, or sign in without a browser with `kiste login --with-token`.","retry":"never","exit":3,"owners":["cli"],"when":"The sign-in through the browser was denied, could not be verified, or no browser could be opened.","placeholders":["detail"]},{"code":"C18","type":"credential_unavailable","status":0,"message":"{credential} can't be carried: {detail}. (code: C18)","hint":"Sign in to it on this computer first, or leave it out.","retry":"never","exit":6,"owners":["cli"],"when":"A local login selected for carrying into a Kiste is missing, empty, too large or not a plain file.","placeholders":["credential","detail"]},{"code":"P01","type":"internal_error","status":500,"message":"Something went wrong on our side. (code: P01)","hint":"Try again. If it keeps happening, contact support with the request ID.","retry":"never","owners":["worker","backend","frontend","cli","cli-dev"],"when":"An unexpected failure that we treat as a bug. It is logged with your request ID, which tells us exactly what happened.","placeholders":[]},{"code":"P02","type":"invalid_request","status":400,"message":"That request isn't valid: {detail}. (code: P02)","hint":"Correct the request and send it again.","retry":"never","owners":["worker","backend"],"when":"The request body was not valid JSON or a general parameter was invalid.","placeholders":["detail"]},{"code":"P03","type":"payload_too_large","status":413,"message":"That request is too large. (code: P03)","hint":"Send a smaller request.","retry":"never","owners":["backend"],"when":"The request body is larger than this endpoint accepts.","placeholders":[]},{"code":"P04","type":"not_found","status":404,"message":"This address doesn't exist. (code: P04)","hint":"Check the address.","hint_cli":"Check the address, or update the kiste command-line tool with `kiste update`.","retry":"never","owners":["backend","worker"],"when":"The request went to an API address that does not exist.","placeholders":[]},{"code":"P05","type":"method_not_allowed","status":405,"message":"This address doesn't accept that kind of request. (code: P05)","hint":"Check the request method.","retry":"never","owners":["backend"],"when":"The request used an HTTP method the address does not support.","placeholders":[]},{"code":"P06","type":"wrong_worker","status":421,"message":"This Kiste is served by another computer. (code: P06)","hint":"kiste.run retries this automatically.","retry":"never","owners":["worker"],"when":"Internal: the request reached a compute worker that does not hold the Kiste; kiste.run retries on the right one.","placeholders":[]},{"code":"P07","type":"shutting_down","status":503,"message":"The compute service is restarting. (code: P07)","hint":"Try again in a few seconds.","retry":"backoff","owners":["worker"],"when":"The computer that runs this Kiste is restarting its service; your Kisten keep running.","placeholders":[]},{"code":"P08","type":"worker_auth_required","status":401,"message":"This compute worker isn't authorized. (code: P08)","hint":"Register the worker again with a new join token.","retry":"never","owners":["backend"],"when":"Internal: a compute worker called kiste.run without valid worker credentials.","placeholders":[]},{"code":"P09","type":"join_token_invalid","status":401,"message":"The join token is unknown, used or expired. (code: P09)","hint":"Create a new join token and register the worker again.","retry":"never","owners":["backend"],"when":"Internal: a worker registration used an invalid join token.","placeholders":[]},{"code":"P10","type":"worker_provisioning_failed","status":502,"message":"The compute worker couldn't be connected to kiste.run. (code: P10)","hint":"Register the worker again in a minute.","retry":"backoff","owners":["backend"],"when":"Internal: connecting a newly registered compute worker to kiste.run failed.","placeholders":[]},{"code":"P11","type":"not_configured","status":503,"message":"This part of kiste.run isn't set up. (code: P11)","hint":"Contact the operator.","retry":"never","owners":["backend"],"when":"Internal: a feature was called that this installation has not configured.","placeholders":[]},{"code":"P12","type":"media_relay_unavailable","status":502,"message":"The media relay isn't available right now. (code: P12)","hint":"Try again in a moment.","retry":"backoff","owners":["backend"],"when":"Internal: credentials for the desktop media relay could not be issued.","placeholders":[]},{"code":"P13","type":"api_token_activation_failed","status":503,"message":"The new API key couldn't be activated. (code: P13)","hint":"Revoke it and create a new one.","retry":"never","owners":["backend"],"when":"The API key was created but kiste.run could not activate it.","placeholders":[]},{"code":"P14","type":"artifact_not_found","status":404,"message":"That worker artifact doesn't exist. (code: P14)","hint":"Check the artifact digest.","retry":"never","owners":["backend"],"when":"Internal: a compute worker asked for a machine image file that is not stored.","placeholders":[]},{"code":"P15","type":"log_store_unavailable","status":503,"message":"The log store of this host isn't answering. (code: P15)","hint":"Check the host's log store (ops/logs), then try again.","retry":"backoff","owners":["worker","backend"],"when":"Internal: an operator's log query reached a host whose log store did not answer, or kiste.run could not reach that host.","placeholders":[]},{"code":"P16","type":"worker_cleanup_failed","status":502,"message":"The worker is revoked, but some of its connections couldn't be removed yet. (code: P16)","hint":"kiste.run keeps retrying in the background; revoke it again to see whether it is done.","retry":"backoff","owners":["backend"],"when":"Internal: revoking a compute worker could not delete all of its Cloudflare resources; they are retried by the cron.","placeholders":[]},{"code":"P17","type":"second_worker_gated","status":403,"message":"kiste.run doesn't accept another compute worker yet. (code: P17)","hint":"Nothing to change on your side: compute workers can join once kiste.run supports more than one.","retry":"never","owners":["backend"],"when":"Internal: a compute worker registration, join token or worker call was refused while only one compute worker may join.","placeholders":[]}],"details":[{"id":"body_not_json","text":"the body must be valid JSON","owners":["backend","worker"],"placeholders":[]},{"id":"body_not_json_object","text":"the body must be a JSON object","owners":["backend"],"placeholders":[]},{"id":"billing_period_invalid","text":"period must be current or previous","owners":["backend"],"placeholders":[]},{"id":"refill_threshold_invalid","text":"threshold_micros must be a non-negative integer","owners":["backend"],"placeholders":[]},{"id":"refill_threshold_above_pack","text":"threshold_micros can be at most the credit of one refill pack ({max} micro-units)","owners":["backend"],"placeholders":["max"]},{"id":"size_vcpu_max","text":"at most {vcpu} vCPU","owners":["backend"],"placeholders":["vcpu"]},{"id":"size_memory_max","text":"at most {mib} MiB of memory","owners":["backend"],"placeholders":["mib"]},{"id":"size_disk_max","text":"at most {mib} MiB of disk","owners":["backend"],"placeholders":["mib"]},{"id":"profile_unsupported","text":"only the desktop profile is supported","owners":["backend","worker"],"placeholders":[]},{"id":"test_account_name_invalid","text":"the name must be 1-32 lower-case letters, digits or dashes","owners":["backend"],"placeholders":[]},{"id":"desktop_request_malformed","text":"the desktop request is malformed","owners":["backend"],"placeholders":[]},{"id":"device_key_name_invalid","text":"the name must be 1-64 printable characters","owners":["backend"],"placeholders":[]},{"id":"device_key_type_unsupported","text":"the public key must be an ssh-ed25519 or ssh-rsa key","owners":["backend"],"placeholders":[]},{"id":"origin_url_invalid","text":"origin_url must be an https address without a path","owners":["backend"],"placeholders":[]},{"id":"origin_url_required","text":"origin_url is required because this installation does not connect hosts itself","owners":["backend"],"placeholders":[]},{"id":"worker_id_invalid","text":"worker_id must be 1-63 characters of a-z, 0-9 and -, and not a reserved name","owners":["backend"],"placeholders":[]},{"id":"accepting_not_boolean","text":"accepting must be a boolean","owners":["backend"],"placeholders":[]},{"id":"alert_body_invalid","text":"the body is not a valid alert","owners":["worker"],"placeholders":[]},{"id":"alert_field_out_of_bounds","text":"a field is out of bounds","owners":["worker"],"placeholders":[]},{"id":"alert_preferences_empty","text":"no preferences were supplied","owners":["worker"],"placeholders":[]},{"id":"api_token_expiry_range","text":"expires_in_seconds must be between 300 and 31536000","owners":["worker"],"placeholders":[]},{"id":"api_token_label_invalid","text":"the label must be 1-80 printable characters","owners":["worker"],"placeholders":[]},{"id":"argv_count","text":"argv must contain between 1 and 256 entries","owners":["worker"],"placeholders":[]},{"id":"auto_snapshot_seconds_range","text":"auto_snapshot_seconds must be between 60 and 86400","owners":["worker"],"placeholders":[]},{"id":"builtin_image_delete","text":"built-in images cannot be deleted","owners":["worker","cli","cli-dev"],"placeholders":[]},{"id":"command_env_count","text":"at most 256 environment variables are allowed","owners":["worker"],"placeholders":[]},{"id":"command_env_name_invalid","text":"an environment variable name is invalid","owners":["worker"],"placeholders":[]},{"id":"command_timeout_range","text":"timeout_ms must be between 1 and 3600000","owners":["worker"],"placeholders":[]},{"id":"cwd_invalid","text":"cwd must be an absolute normalized path","owners":["worker"],"placeholders":[]},{"id":"desktop_protocol_unsupported","text":"the desktop protocol is not supported","owners":["worker"],"placeholders":[]},{"id":"desktop_session_description_invalid","text":"the session description is empty or too large","owners":["worker"],"placeholders":[]},{"id":"email_invalid","text":"the email address is not valid","owners":["worker"],"placeholders":[]},{"id":"environment_variable_invalid","text":"an environment variable is not valid","owners":["worker"],"placeholders":[]},{"id":"event_cursor_negative","text":"the event cursor cannot be negative","owners":["worker"],"placeholders":[]},{"id":"image_components_max","text":"an image can contain at most 32 components","owners":["worker"],"placeholders":[]},{"id":"image_disk_range","text":"disk_mib must be between 40960 and 524288","owners":["worker"],"placeholders":[]},{"id":"image_memory_range","text":"memory_mib must be between 4096 and 32768","owners":["worker"],"placeholders":[]},{"id":"image_name_characters","text":"image name may contain letters, numbers, spaces, dots, hyphens and underscores","owners":["worker"],"placeholders":[]},{"id":"image_name_length","text":"image name must contain between 2 and 64 characters","owners":["worker"],"placeholders":[]},{"id":"image_name_needs_alnum","text":"image name must contain at least one letter or number","owners":["worker"],"placeholders":[]},{"id":"image_vcpu_range","text":"vcpu must be between 2 and 16","owners":["worker"],"placeholders":[]},{"id":"interrupt_reason_invalid","text":"the interrupt reason must be 1-512 bytes without NUL","owners":["worker"],"placeholders":[]},{"id":"machine_name_invalid","text":"name must be 1–32 lowercase letters, digits, or hyphens","owners":["worker"],"placeholders":[]},{"id":"machine_shape_unsupported","text":"cpu, memory and disk must be one of the offered sizes: default (4 vCPU, 8192 MiB memory, 81920 MiB disk) or large (8 vCPU, 16384 MiB memory, 163840 MiB disk)","owners":["backend","worker"],"placeholders":[]},{"id":"manifest_too_large","text":"the manifest exceeds 512 KiB","owners":["worker"],"placeholders":[]},{"id":"manifest_too_many_entries","text":"at most 32 repositories, 256 variables and 64 secret files are allowed","owners":["worker"],"placeholders":[]},{"id":"manifest_unencodable","text":"the manifest cannot be encoded","owners":["worker"],"placeholders":[]},{"id":"repository_destination_outside","text":"a repository destination must stay in /workspace","owners":["worker"],"placeholders":[]},{"id":"repository_url_invalid","text":"a repository URL is not valid","owners":["worker"],"placeholders":[]},{"id":"repository_url_scheme","text":"repositories need absolute https:// or ssh:// URLs","owners":["worker"],"placeholders":[]},{"id":"secret_file_invalid","text":"secret files must be URL-safe base64 under /home/kiste with private modes","owners":["worker"],"placeholders":[]},{"id":"service_body_too_large","text":"the body is larger than 16 MiB","owners":["worker"],"placeholders":[]},{"id":"service_description_invalid","text":"the description may have at most 280 printable characters","owners":["worker"],"placeholders":[]},{"id":"service_method_unsupported","text":"the method is not supported","owners":["worker"],"placeholders":[]},{"id":"service_port_zero","text":"the port must not be zero","owners":["worker"],"placeholders":[]},{"id":"setup_script_invalid","text":"the setup script is larger than 256 KiB or contains NUL","owners":["worker"],"placeholders":[]},{"id":"snapshot_name_invalid","text":"the name must be 1-80 letters, digits, hyphens, underscores or dots","owners":["worker"],"placeholders":[]},{"id":"ssh_public_key_invalid","text":"the SSH public key is not valid","owners":["worker"],"placeholders":[]},{"id":"terminal_size_invalid","text":"the terminal size must be 20-400 columns and 5-200 rows","owners":["worker"],"placeholders":[]},{"id":"ttl_seconds_range","text":"ttl_seconds must be between 60 and 2592000","owners":["worker"],"placeholders":[]},{"id":"webhook_address_not_public","text":"the endpoint address is not public","owners":["worker"],"placeholders":[]},{"id":"webhook_credentials_in_url","text":"the endpoint must not carry credentials in the URL","owners":["worker"],"placeholders":[]},{"id":"webhook_events_empty","text":"it must subscribe to at least one event","owners":["worker"],"placeholders":[]},{"id":"webhook_events_max","text":"at most 32 event subscriptions are allowed","owners":["worker"],"placeholders":[]},{"id":"webhook_fragment","text":"the endpoint must not carry a fragment","owners":["worker"],"placeholders":[]},{"id":"webhook_host_missing","text":"the endpoint must name a host","owners":["worker"],"placeholders":[]},{"id":"webhook_https_required","text":"the endpoint must use https","owners":["worker"],"placeholders":[]},{"id":"webhook_name_control","text":"the endpoint name contains control characters","owners":["worker"],"placeholders":[]},{"id":"webhook_name_length","text":"the endpoint name must be 1-80 characters","owners":["worker"],"placeholders":[]},{"id":"webhook_name_not_public","text":"the endpoint must be a public DNS name","owners":["worker"],"placeholders":[]},{"id":"webhook_port_443","text":"the endpoint must use port 443","owners":["worker"],"placeholders":[]},{"id":"webhook_resolve_failed","text":"the endpoint host does not resolve","owners":["worker"],"placeholders":[]},{"id":"webhook_resolve_timeout","text":"the endpoint host did not resolve in time","owners":["worker"],"placeholders":[]},{"id":"webhook_resolves_private","text":"the endpoint host resolves to a non-public address","owners":["worker"],"placeholders":[]},{"id":"webhook_url_invalid","text":"the endpoint must be a valid absolute URL","owners":["worker"],"placeholders":[]},{"id":"webhook_url_too_long","text":"the endpoint URL is too long","owners":["worker"],"placeholders":[]},{"id":"size_plan_max","text":"at most {vcpu} vCPU, {memory_gib} GiB memory and {disk_gib} GiB disk","owners":["worker"],"placeholders":["vcpu","memory_gib","disk_gib"]},{"id":"event_filter_invalid","text":"the {name} event filter is invalid","owners":["worker"],"placeholders":["name"]},{"id":"image_profile_mismatch","text":"the image {image} needs the {profile} profile","owners":["worker"],"placeholders":["image","profile"]},{"id":"alert_kind_unknown","text":"unknown alert kind `{kind}`","owners":["worker"],"placeholders":["kind"]},{"id":"password_length","text":"the password must have between {min} and {max} bytes","owners":["worker"],"placeholders":["min","max"]},{"id":"base_image_unknown","text":"unknown base image `{image}`","owners":["worker"],"placeholders":["image"]},{"id":"image_component_duplicate","text":"duplicate image component `{component}`","owners":["worker"],"placeholders":["component"]},{"id":"image_component_unknown","text":"unknown image component `{component}`","owners":["worker"],"placeholders":["component"]},{"id":"image_component_version_unsupported","text":"unsupported version `{version}` for component `{component}`","owners":["worker"],"placeholders":["version","component"]},{"id":"image_disk_min","text":"disk_mib must be at least {mib} for this image","owners":["worker"],"placeholders":["mib"]},{"id":"desktop_link_ttl_range","text":"ttl_seconds must be between {min} and {max}","owners":["worker"],"placeholders":["min","max"]},{"id":"command_field_invalid","text":"the {field} is too long or contains NUL","owners":["worker"],"placeholders":["field"]},{"id":"webhook_event_unknown","text":"unknown event type `{event}`","owners":["worker"],"placeholders":["event"]},{"id":"body_wrong_content_type","text":"the body must be sent as application/json","owners":["worker"],"placeholders":[]},{"id":"body_shape_mismatch","text":"the body does not match this endpoint","owners":["worker"],"placeholders":[]},{"id":"path_value_invalid","text":"a value in the address is not valid","owners":["worker"],"placeholders":[]},{"id":"query_invalid","text":"a query parameter is not valid","owners":["worker"],"placeholders":[]},{"id":"desktop_machine_name_invalid","text":"the machine name is not valid","owners":["worker"],"placeholders":[]},{"id":"recovery_message_too_large","text":"the recovery message is too large","owners":["worker"],"placeholders":[]},{"id":"log_query_invalid","text":"the log query must be 1-4000 printable characters and since a window like 30m, 24h or 7d","owners":["worker","backend"],"placeholders":[]},{"id":"websocket_required","text":"this address takes a WebSocket connection","owners":["worker"],"placeholders":[]},{"id":"recovery_binary_only","text":"the recovery connection takes binary messages only","owners":["worker"],"placeholders":[]},{"id":"endpoint_url_invalid","text":"the endpoint is not a valid URL","owners":["cli","cli-dev"],"placeholders":[]},{"id":"endpoint_host_missing","text":"the endpoint has no host","owners":["cli","cli-dev"],"placeholders":[]},{"id":"cwd_value_invalid","text":"--cwd must be a non-empty path of at most 4096 bytes","owners":["cli","cli-dev"],"placeholders":[]},{"id":"env_values_max","text":"at most 100 --env values may be supplied","owners":["cli","cli-dev"],"placeholders":[]},{"id":"env_value_format","text":"--env must be KEY=VALUE","owners":["cli","cli-dev"],"placeholders":[]},{"id":"env_name_format","text":"environment names must match [A-Za-z_][A-Za-z0-9_]* and values may not contain NUL","owners":["cli","cli-dev"],"placeholders":[]},{"id":"env_data_max","text":"combined --env data must not exceed 64 KiB","owners":["cli","cli-dev"],"placeholders":[]},{"id":"current_needs_name","text":"provide a Kiste name or create one to select it as current","owners":["cli","cli-dev"],"placeholders":[]},{"id":"endpoint_form","text":"endpoint must be an absolute web address without credentials, path, query, or fragment","owners":["cli","cli-dev"],"placeholders":[]},{"id":"endpoint_plain_http","text":"the endpoint must be an https:// address; an unencrypted address is only allowed for a service on this computer","owners":["cli","cli-dev"],"placeholders":[]},{"id":"current_name_invalid","text":"current must be a 1-32 character Kiste name; `current` and `self` are selectors","owners":["cli","cli-dev"],"placeholders":[]},{"id":"shape_flags_invalid","text":"cpu, memory and disk must match one shape: default (--cpu 4 --memory 8192 --disk 81920) or large (8/16384/163840); `--shape large` picks one","owners":["cli","cli-dev"],"placeholders":[]},{"id":"several_kisten_running","text":"more than one Kiste is running; name the one you mean","owners":["cli","cli-dev"],"placeholders":[]},{"id":"no_desktop_running","text":"no Kiste with a desktop is running; `{cli} start NAME` brings one back, `{cli} new --desktop` creates one","owners":["cli","cli-dev"],"placeholders":["cli"]},{"id":"several_desktops_running","text":"more than one Kiste with a desktop is running; name the one you mean","owners":["cli","cli-dev"],"placeholders":[]},{"id":"until_empty","text":"--until must not be empty","owners":["cli","cli-dev"],"placeholders":[]},{"id":"component_format","text":"a component must be ID or ID=VERSION","owners":["cli","cli-dev"],"placeholders":[]},{"id":"snapshot_name_format","text":"snapshot name must be 1-80 letters, digits, hyphens, underscores, or dots","owners":["cli","cli-dev"],"placeholders":[]},{"id":"snapshot_id_format","text":"snapshot ID must be a UUID","owners":["cli","cli-dev"],"placeholders":[]},{"id":"completions_machine_mode","text":"completions writes shell code; do not combine it with --json or --output ndjson","owners":["cli","cli-dev"],"placeholders":[]},{"id":"token_stdin_empty","text":"no token on standard input; pipe one in: `kiste login --with-token < token.txt`","owners":["cli"],"placeholders":[]},{"id":"browser_sign_in_denied","text":"it was denied in the browser","owners":["cli","cli-dev"],"placeholders":[]},{"id":"browser_answer_unverified","text":"the answer from the browser could not be verified","owners":["cli","cli-dev"],"placeholders":[]},{"id":"ssh_owns_terminal","text":"`{cli} ssh` owns the terminal; use `--print-command` or `{cli} exec NAME -- COMMAND` in machine mode","owners":["cli","cli-dev"],"placeholders":["cli"]},{"id":"no_input_shell","text":"--no-input never attaches a shell; run a command with `kiste ssh NAME -- COMMAND` or `kiste exec NAME -- COMMAND`","owners":["cli"],"placeholders":[]},{"id":"links_need_name","text":"name a Kiste to revoke its links","owners":["cli","cli-dev"],"placeholders":[]},{"id":"status_filter_empty","text":"--status must not be empty","owners":["cli","cli-dev"],"placeholders":[]},{"id":"watch_is_stream","text":"watch is a stream; use `--output ndjson` or human output","owners":["cli","cli-dev"],"placeholders":[]},{"id":"event_follow_is_stream","text":"event follow is a stream; use `--output ndjson` or human output","owners":["cli","cli-dev"],"placeholders":[]},{"id":"scp_needs_endpoints","text":"scp needs at least one source and a destination","owners":["cli"],"placeholders":[]},{"id":"scp_download_one_kiste","text":"every source of a download must be in the same Kiste","owners":["cli"],"placeholders":[]},{"id":"scp_one_remote","text":"exactly one scp endpoint may be remote","owners":["cli","cli-dev"],"placeholders":[]},{"id":"forward_arguments","text":"use positional LOCAL_PORT GUEST_PORT, a Kiste name followed by PORT or LOCAL:GUEST pairs, or --remote PORT with optional --local PORT","owners":["cli","cli-dev"],"placeholders":[]},{"id":"forward_long_lived","text":"foreground forwarding is long-lived; use `--background` or `--output ndjson`","owners":["cli","cli-dev"],"placeholders":[]},{"id":"stream_needs_port","text":"name the port to publish, e.g. `kiste stream 8888`, or use `kiste stream ls`","owners":["cli"],"placeholders":[]},{"id":"budget_claude_only","text":"only the claude provider honors --max-budget-usd","owners":["cli","cli-dev"],"placeholders":[]},{"id":"budget_range","text":"max budget must be a positive amount in US dollars up to 10000","owners":["cli","cli-dev"],"placeholders":[]},{"id":"prompt_empty","text":"prompt must contain at least one non-whitespace character","owners":["cli","cli-dev"],"placeholders":[]},{"id":"model_name_format","text":"model must be 1-256 identifier characters and may not begin with a dash","owners":["cli","cli-dev"],"placeholders":[]},{"id":"ssh_stdin_refused","text":"it refused a stdin pipe","owners":["cli"],"placeholders":[]},{"id":"no_kiste_running","text":"no Kiste is running; `{cli} start NAME` brings one back, `{cli} new` creates one","owners":["cli-dev"],"placeholders":["cli"]},{"id":"trace_needs_filter","text":"name a request ID, or filter with --code, --account or --kiste","owners":["cli-dev"],"placeholders":[]},{"id":"trace_no_match","text":"no log line matches; widen --since or check the request ID","owners":["cli-dev"],"placeholders":[]},{"id":"env_duplicate","text":"environment variable {key} was supplied more than once","owners":["cli","cli-dev"],"placeholders":["key"]},{"id":"header_value_format","text":"the {label} must be 1-200 visible ASCII characters without quotes or backslashes","owners":["cli","cli-dev"],"placeholders":["label"]},{"id":"credential_too_deep","text":"it nests deeper than {depth} levels","owners":["cli","cli-dev"],"placeholders":["depth"]},{"id":"credential_too_large","text":"it holds more than {files} files or {bytes} bytes","owners":["cli","cli-dev"],"placeholders":["files","bytes"]},{"id":"credential_unknown","text":"unknown credential `{id}`; see `{cli} credentials list`","owners":["cli","cli-dev"],"placeholders":["id","cli"]},{"id":"credential_path_missing","text":"{path} is missing","owners":["cli","cli-dev"],"placeholders":["path"]},{"id":"credential_path_empty","text":"{path} is empty","owners":["cli","cli-dev"],"placeholders":["path"]},{"id":"credential_path_not_utf8","text":"{path} has a file name that is not UTF-8","owners":["cli","cli-dev"],"placeholders":["path"]},{"id":"credential_path_not_file","text":"{path} is not a regular file","owners":["cli","cli-dev"],"placeholders":["path"]},{"id":"carry_selection_too_large","text":"the selection is {total} bytes; one push carries at most {max} bytes","owners":["cli","cli-dev"],"placeholders":["total","max"]},{"id":"prompt_too_long","text":"prompt exceeds the {bytes}-byte limit","owners":["cli","cli-dev"],"placeholders":["bytes"]},{"id":"reasoning_effort_values","text":"{provider} reasoning effort must be {allowed}","owners":["cli","cli-dev"],"placeholders":["provider","allowed"]},{"id":"program_exit_status","text":"it exited with status {code}","owners":["cli","cli-dev"],"placeholders":["code"]},{"id":"remote_file_missing","text":"the file or directory does not exist","owners":["cli","cli-dev"],"placeholders":[]},{"id":"remote_file_denied","text":"access to the file was denied","owners":["cli","cli-dev"],"placeholders":[]},{"id":"creation_only_flags","text":"{name} already exists, and these flags only shape a new Kiste: {flags}; start it without them, or create one under another name","owners":["cli","cli-dev"],"placeholders":["name","flags"]},{"id":"manifest_unreadable","text":"{path} could not be read","owners":["cli"],"placeholders":["path"]},{"id":"manifest_invalid","text":"{path} is not a valid environment manifest","owners":["cli"],"placeholders":["path"]},{"id":"snapshot_name_ambiguous","text":"{count} snapshots are named `{reference}`; pass one of their IDs: {ids}","owners":["cli"],"placeholders":["count","reference","ids"]},{"id":"kiste_name_invalid","text":"`{name}` is not a valid name: use 1–32 lowercase letters, digits, or hyphens","owners":["cli"],"placeholders":["name"]},{"id":"browser_no_display","text":"there is no graphical session to open a browser in; open {url}","owners":["cli"],"placeholders":["url"]},{"id":"browser_not_started","text":"the browser could not be started; open {url}","owners":["cli"],"placeholders":["url"]},{"id":"since_format","text":"--since must be a duration such as 30m, 24h or 7d, not `{value}`","owners":["cli-dev"],"placeholders":["value"]},{"id":"since_unit","text":"--since must end in m, h or d, not `{value}`","owners":["cli-dev"],"placeholders":["value"]},{"id":"trace_host_access_missing","text":"--host needs the host-logs Access service token in KISTE_ACCESS_CLIENT_ID and KISTE_ACCESS_CLIENT_SECRET","owners":["cli-dev"],"placeholders":[]},{"id":"unknown_option","text":"unknown option {argument}","owners":["cli","cli-dev"],"placeholders":["argument"]},{"id":"unknown_option_suggested","text":"unknown option {argument} (did you mean {suggestion})","owners":["cli","cli-dev"],"placeholders":["argument","suggestion"]},{"id":"unknown_command","text":"unknown command {command}","owners":["cli","cli-dev"],"placeholders":["command"]},{"id":"unknown_command_suggested","text":"unknown command {command} (did you mean {suggestion})","owners":["cli","cli-dev"],"placeholders":["command","suggestion"]},{"id":"option_value_invalid","text":"{value} is not a valid value for {argument}","owners":["cli","cli-dev"],"placeholders":["value","argument"]},{"id":"argument_missing","text":"a required argument is missing: {argument}","owners":["cli","cli-dev"],"placeholders":["argument"]},{"id":"command_missing","text":"a command is missing; see --help","owners":["cli","cli-dev"],"placeholders":[]},{"id":"options_conflict","text":"{argument} cannot be used with {other}","owners":["cli","cli-dev"],"placeholders":["argument","other"]},{"id":"option_value_count","text":"{argument} got the wrong number of values","owners":["cli","cli-dev"],"placeholders":["argument"]},{"id":"arguments_invalid","text":"the arguments are not valid; see --help","owners":["cli","cli-dev"],"placeholders":[]}],"notices":[{"id":"alert_auto_refill_failed_title","kind":"warning","text":"Auto-refill payment failed","owners":["backend"],"placeholders":[]},{"id":"alert_auto_refill_failed_detail","kind":"warning","text":"Your saved card was declined. Update it in Billing or buy credit to keep machines running.","owners":["backend"],"placeholders":[]},{"id":"alert_auto_refill_charged_title","kind":"info","text":"Auto-refill charged your card","owners":["backend"],"placeholders":[]},{"id":"alert_auto_refill_charged_detail","kind":"info","text":"Your saved card was charged for {pack}. Auto-refill charges at most {limit} times a day; change it in Billing.","owners":["backend"],"placeholders":["pack","limit"]},{"id":"alert_account_locked_title","kind":"warning","text":"Password sign-in locked","owners":["backend"],"placeholders":[]},{"id":"alert_account_locked_detail","kind":"warning","text":"Too many wrong passwords were tried for your account, so new browsers can't sign in for {minutes} minutes. If that wasn't you, someone is guessing your password.","owners":["backend"],"placeholders":["minutes"]},{"id":"alert_wallet_empty_title","kind":"warning","text":"Your Kiste credit is used up","owners":["backend"],"placeholders":[]},{"id":"alert_wallet_empty_detail","kind":"warning","text":"Running machines are parked in {hours} hours unless you buy credit or choose a plan. Nothing is deleted.","owners":["backend"],"placeholders":["hours"]},{"id":"alert_machines_parked_title","kind":"warning","text":"Machines parked: credit used up","owners":["backend"],"placeholders":[]},{"id":"alert_machines_parked_detail","kind":"warning","text":"{count} running machine(s) were parked with their session kept. Buy credit or choose a plan to start them again.","owners":["backend"],"placeholders":["count"]},{"id":"ledger_trial_credit","kind":"info","text":"Trial credit","owners":["backend"],"placeholders":[]},{"id":"ledger_plan_credit","kind":"info","text":"{plan} plan credit","owners":["backend"],"placeholders":["plan"]},{"id":"ledger_plan_credit_expired","kind":"info","text":"Plan credit expired","owners":["backend"],"placeholders":[]},{"id":"ledger_plan_credit_replaced","kind":"info","text":"Plan credit replaced by the new period","owners":["backend"],"placeholders":[]},{"id":"ledger_pack","kind":"info","text":"{pack}","owners":["backend"],"placeholders":["pack"]},{"id":"ledger_pack_auto_refill","kind":"info","text":"{pack} (auto-refill)","owners":["backend"],"placeholders":["pack"]},{"id":"ledger_running_time","kind":"info","text":"Running time","owners":["backend"],"placeholders":[]},{"id":"logout_cli_token","kind":"success","text":"Logged out and revoked the CLI token.","owners":["backend"],"placeholders":[]},{"id":"logout_api_token","kind":"success","text":"Logged out and revoked the API token.","owners":["backend"],"placeholders":[]},{"id":"logout_revocation_deferred","kind":"info","text":"Not every service could be told right away; the token stays revoked and expires on its own schedule.","owners":["backend"],"placeholders":[]},{"id":"alert_disk_almost_full_title","kind":"warning","text":"{name} is at {percent}% disk","owners":["worker"],"placeholders":["name","percent"]},{"id":"alert_disk_almost_full_detail","kind":"warning","text":"{used} of {total} used. Snapshots start failing once the disk is full; free space or delete the machine's build caches.","owners":["worker"],"placeholders":["used","total"]},{"id":"alert_snapshot_failed_title","kind":"warning","text":"Snapshot `{snapshot}` of {name} failed","owners":["worker"],"placeholders":["snapshot","name"]},{"id":"alert_failure_detail","kind":"warning","text":"{message} {hint}","owners":["worker"],"placeholders":["message","hint"]},{"id":"alert_checkpoints_paused_title","kind":"warning","text":"Automatic checkpoints of {name} are paused","owners":["worker"],"placeholders":["name"]},{"id":"alert_webhook_created_title","kind":"info","text":"Webhook endpoint `{name}` was created","owners":["worker"],"placeholders":["name"]},{"id":"alert_webhook_created_detail","kind":"info","text":"Events will be delivered to {host}. If you did not create this, delete it on the Webhooks page and rotate your API keys.","owners":["worker"],"placeholders":["host"]},{"id":"alert_webhook_repointed_title","kind":"info","text":"Webhook endpoint `{name}` now delivers to another host","owners":["worker"],"placeholders":["name"]},{"id":"alert_webhook_repointed_detail","kind":"info","text":"Events will be delivered to {host} instead of {previous}. If you did not change this, fix it on the Webhooks page and rotate your API keys.","owners":["worker"],"placeholders":["host","previous"]},{"id":"alert_webhook_failing_title","kind":"warning","text":"Webhook `{name}` is failing","owners":["worker"],"placeholders":["name"]},{"id":"alert_webhook_failing_detail","kind":"warning","text":"Delivery of {event} gave up after {attempts} attempts: {outcome}","owners":["worker"],"placeholders":["event","attempts","outcome"]},{"id":"alert_instance_error_title","kind":"warning","text":"{name} entered an error state","owners":["worker"],"placeholders":["name"]},{"id":"alert_instance_error_detail","kind":"warning","text":"The machine stopped unexpectedly or failed to start. Its disk is kept; start it again from the console or run `kiste start`.","owners":["worker"],"placeholders":[]},{"id":"alert_session_not_restored_title","kind":"warning","text":"{name} started without its saved session","owners":["worker"],"placeholders":["name"]},{"id":"alert_session_not_restored_detail","kind":"warning","text":"The saved session could not be restored, so the machine started fresh from its disk. Everything on the disk is kept; programs that were open and unsaved work in memory are gone.","owners":["worker"],"placeholders":[]},{"id":"alert_log_lines_dropped_title","kind":"warning","text":"Host {host} dropped {count} log lines","owners":["worker"],"placeholders":["host","count"]},{"id":"alert_log_lines_dropped_detail","kind":"warning","text":"Operator: the host's journal fell so far behind that kiste-server could not queue {count} log lines; lines from that time are missing (log.dropped). Look for disk saturation on {host}.","owners":["worker"],"placeholders":["count","host"]},{"id":"alert_setup_failed_title","kind":"warning","text":"Environment setup failed on {name}","owners":["worker"],"placeholders":["name"]},{"id":"alert_setup_failed_detail","kind":"warning","text":"{message} The script's output is on the machine's Overview tab and in `kiste status {name}`.","owners":["worker"],"placeholders":["message","name"]},{"id":"webhook_delivery_refused","kind":"warning","text":"The delivery was refused: {reason}","owners":["worker"],"placeholders":["reason"]},{"id":"webhook_delivery_not_prepared","kind":"warning","text":"The delivery could not be prepared; it is retried.","owners":["worker"],"placeholders":[]},{"id":"webhook_delivery_receiver_status","kind":"warning","text":"The receiver answered with status {status}.","owners":["worker"],"placeholders":["status"]},{"id":"webhook_delivery_timeout","kind":"warning","text":"The receiver did not answer in time.","owners":["worker"],"placeholders":[]},{"id":"webhook_delivery_unreachable","kind":"warning","text":"The receiver could not be reached.","owners":["worker"],"placeholders":[]},{"id":"webhook_delivery_no_answer","kind":"warning","text":"no answer","owners":["worker"],"placeholders":[]},{"id":"command_result_lost","kind":"warning","text":"This command ran longer than its result is kept for; its outcome is unknown.","owners":["worker"],"placeholders":[]},{"id":"alert_email_subject","kind":"info","text":"[Kiste] {title}","owners":["worker"],"placeholders":["title"]},{"id":"alert_email_body","kind":"info","text":"{title}\n\n{detail}\n\nKind: {kind}\nRaised: {raised}\n\nOpen the console: https://kiste.run/app/alerts\n\nYou receive this because the alert kind is enabled for your account. Turn it off at https://kiste.run/app/alerts.\n","owners":["worker"],"placeholders":["title","detail","kind","raised"]},{"id":"trace_edge_skipped","kind":"warning","text":"edge: CLOUDFLARE_API_TOKEN and CLOUDFLARE_ACCOUNT_ID are not set; skipped","owners":["cli-dev"],"placeholders":[]},{"id":"trace_edge_refused","kind":"warning","text":"edge: the telemetry query was refused (status {status}); skipped","owners":["cli-dev"],"placeholders":["status"]},{"id":"toast_named","kind":"info","text":"{name}","owners":["frontend"],"placeholders":["name"]},{"id":"toast_image_deleted","kind":"success","text":"Image deleted","owners":["frontend"],"placeholders":[]},{"id":"toast_delete_failed","kind":"warning","text":"Delete failed","owners":["frontend"],"placeholders":[]},{"id":"toast_image_built","kind":"success","text":"Image built","owners":["frontend"],"placeholders":[]},{"id":"toast_image_built_detail","kind":"info","text":"{name} is {status}.","owners":["frontend"],"placeholders":["name","status"]},{"id":"toast_snapshot_restored","kind":"success","text":"Snapshot restored","owners":["frontend"],"placeholders":[]},{"id":"toast_machine_starting_detail","kind":"info","text":"{name} is starting.","owners":["frontend"],"placeholders":["name"]},{"id":"toast_restore_failed","kind":"warning","text":"Restore failed","owners":["frontend"],"placeholders":[]},{"id":"toast_snapshot_deleted","kind":"success","text":"Snapshot deleted","owners":["frontend"],"placeholders":[]},{"id":"toast_event_stream_stopped","kind":"warning","text":"Event stream stopped","owners":["frontend"],"placeholders":[]},{"id":"toast_interrupt_requested","kind":"info","text":"Interrupt requested","owners":["frontend"],"placeholders":[]},{"id":"toast_interrupt_failed","kind":"warning","text":"Interrupt failed","owners":["frontend"],"placeholders":[]},{"id":"toast_stopped_streaming","kind":"success","text":"Stopped streaming","owners":["frontend"],"placeholders":[]},{"id":"toast_unpublish_failed","kind":"warning","text":"Unpublish failed","owners":["frontend"],"placeholders":[]},{"id":"toast_terminal_unavailable","kind":"warning","text":"Web terminal unavailable","owners":["frontend"],"placeholders":[]},{"id":"toast_terminal_unavailable_detail","kind":"warning","text":"The browser terminal is not available here; use kiste ssh.","owners":["frontend"],"placeholders":[]},{"id":"toast_terminal_failed","kind":"warning","text":"Terminal failed","owners":["frontend"],"placeholders":[]},{"id":"toast_environment_saved","kind":"success","text":"Environment saved","owners":["frontend"],"placeholders":[]},{"id":"toast_environment_created","kind":"success","text":"Environment created","owners":["frontend"],"placeholders":[]},{"id":"toast_key_create_failed","kind":"warning","text":"Could not create the key","owners":["frontend"],"placeholders":[]},{"id":"toast_key_revoked","kind":"success","text":"Key revoked","owners":["frontend"],"placeholders":[]},{"id":"toast_revoke_failed","kind":"warning","text":"Revoke failed","owners":["frontend"],"placeholders":[]},{"id":"toast_preference_failed","kind":"warning","text":"Could not update the preference","owners":["frontend"],"placeholders":[]},{"id":"toast_acknowledge_failed","kind":"warning","text":"Could not acknowledge","owners":["frontend"],"placeholders":[]},{"id":"toast_sign_out_failed","kind":"warning","text":"Sign out failed","owners":["frontend"],"placeholders":[]},{"id":"toast_test_delivered","kind":"success","text":"Test delivered","owners":["frontend"],"placeholders":[]},{"id":"toast_test_queued","kind":"info","text":"Test queued","owners":["frontend"],"placeholders":[]},{"id":"toast_test_answered","kind":"info","text":"{name} answered {status}.","owners":["frontend"],"placeholders":["name","status"]},{"id":"toast_test_retried","kind":"info","text":"{name} will be retried if it does not answer.","owners":["frontend"],"placeholders":["name"]},{"id":"toast_test_failed","kind":"warning","text":"Test failed","owners":["frontend"],"placeholders":[]},{"id":"toast_update_failed","kind":"warning","text":"Update failed","owners":["frontend"],"placeholders":[]},{"id":"toast_endpoint_saved","kind":"success","text":"Endpoint saved","owners":["frontend"],"placeholders":[]},{"id":"toast_endpoint_deleted","kind":"success","text":"Endpoint deleted","owners":["frontend"],"placeholders":[]},{"id":"toast_machine_starting","kind":"success","text":"Machine starting","owners":["frontend"],"placeholders":[]},{"id":"toast_machine_booting_detail","kind":"info","text":"{name} is booting.","owners":["frontend"],"placeholders":["name"]},{"id":"toast_desktop_failed","kind":"warning","text":"Desktop session failed","owners":["frontend"],"placeholders":[]},{"id":"toast_snapshot_created","kind":"success","text":"Snapshot created","owners":["frontend"],"placeholders":[]},{"id":"toast_snapshot_failed","kind":"warning","text":"Snapshot failed","owners":["frontend"],"placeholders":[]},{"id":"toast_machine_renamed","kind":"success","text":"Machine renamed","owners":["frontend"],"placeholders":[]},{"id":"toast_renamed_detail","kind":"info","text":"{from} → {to}","owners":["frontend"],"placeholders":["from","to"]},{"id":"toast_rename_failed","kind":"warning","text":"Rename failed","owners":["frontend"],"placeholders":[]},{"id":"toast_machine_forked","kind":"success","text":"Machine forked","owners":["frontend"],"placeholders":[]},{"id":"toast_fork_failed","kind":"warning","text":"Fork failed","owners":["frontend"],"placeholders":[]},{"id":"toast_streaming","kind":"success","text":"Streaming","owners":["frontend"],"placeholders":[]},{"id":"toast_publish_failed","kind":"warning","text":"Publish failed","owners":["frontend"],"placeholders":[]},{"id":"toast_session_sign_out_failed","kind":"warning","text":"Could not sign that session out","owners":["frontend"],"placeholders":[]},{"id":"toast_sign_out_everywhere_failed","kind":"warning","text":"Could not sign out everywhere","owners":["frontend"],"placeholders":[]},{"id":"toast_usage_unavailable","kind":"warning","text":"Usage not available","owners":["frontend"],"placeholders":[]},{"id":"toast_payment_received","kind":"success","text":"Payment received","owners":["frontend"],"placeholders":[]},{"id":"toast_payment_received_detail","kind":"info","text":"Your credit shows up here within a few seconds.","owners":["frontend"],"placeholders":[]},{"id":"toast_billing_failed","kind":"warning","text":"Billing","owners":["frontend"],"placeholders":[]},{"id":"toast_auto_refill","kind":"warning","text":"Auto-refill","owners":["frontend"],"placeholders":[]},{"id":"toast_auto_refill_needs_balance","kind":"warning","text":"Enter the balance to refill below.","owners":["frontend"],"placeholders":[]},{"id":"toast_auto_refill_on","kind":"success","text":"Auto-refill on","owners":["frontend"],"placeholders":[]},{"id":"toast_auto_refill_off","kind":"success","text":"Auto-refill off","owners":["frontend"],"placeholders":[]},{"id":"toast_machine_resumed","kind":"success","text":"Machine resumed","owners":["frontend"],"placeholders":[]},{"id":"toast_resume_failed","kind":"warning","text":"Resume failed","owners":["frontend"],"placeholders":[]},{"id":"toast_machine_stopped","kind":"success","text":"Machine stopped","owners":["frontend"],"placeholders":[]},{"id":"toast_stop_failed","kind":"warning","text":"Stop failed","owners":["frontend"],"placeholders":[]},{"id":"toast_session_snapshotted","kind":"info","text":"The running session was snapshotted first.","owners":["frontend"],"placeholders":[]},{"id":"toast_disk_kept","kind":"info","text":"The disk is kept.","owners":["frontend"],"placeholders":[]},{"id":"toast_machine_restarted","kind":"success","text":"Machine restarted","owners":["frontend"],"placeholders":[]},{"id":"toast_restart_failed","kind":"warning","text":"Restart failed","owners":["frontend"],"placeholders":[]},{"id":"toast_machine_deleted","kind":"success","text":"Machine deleted","owners":["frontend"],"placeholders":[]},{"id":"toast_lifetime_extended","kind":"success","text":"Lifetime extended","owners":["frontend"],"placeholders":[]},{"id":"toast_extend_failed","kind":"warning","text":"Extending the lifetime failed","owners":["frontend"],"placeholders":[]},{"id":"toast_session_discarded","kind":"success","text":"Saved session discarded","owners":["frontend"],"placeholders":[]},{"id":"toast_discard_failed","kind":"warning","text":"Discarding the session failed","owners":["frontend"],"placeholders":[]},{"id":"toast_machine_upgraded","kind":"success","text":"Machine upgraded","owners":["frontend"],"placeholders":[]},{"id":"toast_upgrade_failed","kind":"warning","text":"Upgrade failed","owners":["frontend"],"placeholders":[]},{"id":"viewer_status_live","kind":"status","text":"LIVE / {name}","owners":["frontend"],"placeholders":["name"]},{"id":"viewer_status_linking","kind":"status","text":"LINKING / {name}","owners":["frontend"],"placeholders":["name"]},{"id":"viewer_status_no_decoder","kind":"status","text":"NO H.264 DECODER","owners":["frontend"],"placeholders":[]},{"id":"viewer_status_link_stalled","kind":"status","text":"LINK STALLED / {name}","owners":["frontend"],"placeholders":["name"]},{"id":"viewer_status_relinking","kind":"status","text":"RELINKING / {name}","owners":["frontend"],"placeholders":["name"]},{"id":"viewer_status_signing_in","kind":"status","text":"SIGNING IN","owners":["frontend"],"placeholders":[]},{"id":"viewer_status_sign_in_required","kind":"status","text":"SIGN IN REQUIRED","owners":["frontend"],"placeholders":[]},{"id":"viewer_status_interrupted","kind":"status","text":"SESSION INTERRUPTED","owners":["frontend"],"placeholders":[]},{"id":"viewer_status_booting","kind":"status","text":"BOOTING DESKTOP / {name}","owners":["frontend"],"placeholders":["name"]},{"id":"viewer_status_authorizing","kind":"status","text":"AUTHORIZING / {name}","owners":["frontend"],"placeholders":["name"]},{"id":"viewer_status_recovery","kind":"status","text":"RECOVERY / {name}","owners":["frontend"],"placeholders":["name"]},{"id":"viewer_status_recovery_live","kind":"status","text":"RECOVERY LIVE / {name}","owners":["frontend"],"placeholders":["name"]},{"id":"viewer_view_rtc_live","kind":"status","text":"RTC LIVE","owners":["frontend"],"placeholders":[]},{"id":"viewer_view_negotiating","kind":"status","text":"NEGOTIATING","owners":["frontend"],"placeholders":[]},{"id":"viewer_view_signaling","kind":"status","text":"SIGNALING","owners":["frontend"],"placeholders":[]},{"id":"viewer_view_connecting_media","kind":"status","text":"CONNECTING MEDIA","owners":["frontend"],"placeholders":[]},{"id":"viewer_view_link_stalled","kind":"status","text":"LINK STALLED","owners":["frontend"],"placeholders":[]},{"id":"viewer_view_relinking","kind":"status","text":"RELINKING","owners":["frontend"],"placeholders":[]},{"id":"viewer_view_guest_starting","kind":"status","text":"GUEST STARTING","owners":["frontend"],"placeholders":[]},{"id":"viewer_view_emergency","kind":"status","text":"EMERGENCY","owners":["frontend"],"placeholders":[]},{"id":"viewer_view_fps_live","kind":"status","text":"{fps} FPS LIVE","owners":["frontend"],"placeholders":["fps"]},{"id":"viewer_view_still","kind":"status","text":"STILL","owners":["frontend"],"placeholders":[]},{"id":"viewer_view_video_idle","kind":"status","text":"VIDEO IDLE","owners":["frontend"],"placeholders":[]},{"id":"viewer_security_note","kind":"info","text":"The link is gone from the address bar; this browser now holds its own short-lived session.","owners":["frontend"],"placeholders":[]},{"id":"viewer_gesture_step","kind":"status","text":"05—GESTURE","owners":["frontend"],"placeholders":[]},{"id":"viewer_gesture_title","kind":"status","text":"TAP TO","owners":["frontend"],"placeholders":[]},{"id":"viewer_gesture_emphasis","kind":"status","text":"START.","owners":["frontend"],"placeholders":[]},{"id":"viewer_gesture_detail","kind":"info","text":"This browser wants a click before it will play the live desktop.","owners":["frontend"],"placeholders":[]},{"id":"viewer_starting_step","kind":"status","text":"03—STREAM","owners":["frontend"],"placeholders":[]},{"id":"viewer_starting_title","kind":"status","text":"STARTING","owners":["frontend"],"placeholders":[]},{"id":"viewer_starting_emphasis","kind":"status","text":"DISPLAY.","owners":["frontend"],"placeholders":[]},{"id":"viewer_starting_detail","kind":"info","text":"Negotiating one connection to the Kiste: hardware H.264 video, Opus audio, input on its own channel. Direct when its computer is reachable, relayed otherwise.","owners":["frontend"],"placeholders":[]},{"id":"viewer_no_decoder_title","kind":"status","text":"NO VIDEO","owners":["frontend"],"placeholders":[]},{"id":"viewer_no_decoder_emphasis","kind":"status","text":"DECODER.","owners":["frontend"],"placeholders":[]},{"id":"viewer_relink_step","kind":"status","text":"03—RELINK","owners":["frontend"],"placeholders":[]},{"id":"viewer_relink_title","kind":"status","text":"LINK","owners":["frontend"],"placeholders":[]},{"id":"viewer_relink_emphasis","kind":"status","text":"LOST.","owners":["frontend"],"placeholders":[]},{"id":"viewer_relink_detail","kind":"info","text":"{reason} Trying again every {seconds} seconds, {waited}s so far. The desktop keeps running meanwhile.","owners":["frontend"],"placeholders":["reason","seconds","waited"]},{"id":"viewer_sign_in_step","kind":"status","text":"01—ACCOUNT","owners":["frontend"],"placeholders":[]},{"id":"viewer_sign_in_title","kind":"status","text":"SIGN IN","owners":["frontend"],"placeholders":[]},{"id":"viewer_sign_in_emphasis","kind":"status","text":"FIRST.","owners":["frontend"],"placeholders":[]},{"id":"viewer_sign_in_detail","kind":"info","text":"This link only works alongside your Kiste account. Sign in at kiste.run in this browser, then retry — the link stays valid.","owners":["frontend"],"placeholders":[]},{"id":"viewer_closed_step","kind":"status","text":"99—CLOSED","owners":["frontend"],"placeholders":[]},{"id":"viewer_closed_title","kind":"status","text":"STREAM","owners":["frontend"],"placeholders":[]},{"id":"viewer_closed_emphasis","kind":"status","text":"INTERRUPTED.","owners":["frontend"],"placeholders":[]},{"id":"viewer_authorize_step","kind":"status","text":"02—AUTHORIZE","owners":["frontend"],"placeholders":[]},{"id":"viewer_authorize_title","kind":"status","text":"OPENING","owners":["frontend"],"placeholders":[]},{"id":"viewer_authorize_emphasis","kind":"status","text":"THE BOX.","owners":["frontend"],"placeholders":[]},{"id":"viewer_authorize_renewing_title","kind":"status","text":"RE-ENTERING","owners":["frontend"],"placeholders":[]},{"id":"viewer_authorize_renewing_detail","kind":"info","text":"Re-entering with this browser's own session — a reload does not spend the link.","owners":["frontend"],"placeholders":[]},{"id":"viewer_authorize_detail","kind":"info","text":"Exchanging the desktop link for this browser's own session.","owners":["frontend"],"placeholders":[]},{"id":"viewer_recovery_step","kind":"status","text":"04—RECOVERY","owners":["frontend"],"placeholders":[]},{"id":"viewer_recovery_title","kind":"status","text":"OPENING","owners":["frontend"],"placeholders":[]},{"id":"viewer_recovery_emphasis","kind":"status","text":"RECOVERY.","owners":["frontend"],"placeholders":[]},{"id":"viewer_recovery_detail","kind":"info","text":"{reason} Opening the recovery display instead.","owners":["frontend"],"placeholders":["reason"]},{"id":"viewer_media_path_failed","kind":"warning","text":"The media path failed.","owners":["frontend"],"placeholders":[]},{"id":"viewer_media_path_failed_final","kind":"warning","text":"The direct media path failed.","owners":["frontend"],"placeholders":[]},{"id":"viewer_recovery_guest_closed","kind":"warning","text":"The guest closed the emergency display.","owners":["frontend"],"placeholders":[]},{"id":"viewer_recovery_interrupted","kind":"warning","text":"The recovery display was interrupted. Retry the desktop, or open it again from the console or with kiste desktop.","owners":["frontend"],"placeholders":[]},{"id":"viewer_recovery_refused","kind":"warning","text":"The recovery display was refused or has expired. Open the desktop again from the console or with kiste desktop.","owners":["frontend"],"placeholders":[]},{"id":"viewer_recovery_unavailable","kind":"warning","text":"The emergency recovery viewer could not be loaded.","owners":["frontend"],"placeholders":[]},{"id":"viewer_recovery_offer","kind":"info","text":"{reason} Select RECOVER to open the separately authorized emergency viewer.","owners":["frontend"],"placeholders":["reason"]},{"id":"viewer_failure","kind":"warning","text":"{sentence} {hint} Code {code}, request {request}. {docs}","owners":["frontend"],"placeholders":["sentence","hint","code","request","docs"]},{"id":"viewer_failure_no_request","kind":"warning","text":"{sentence} {hint} Code {code}. {docs}","owners":["frontend"],"placeholders":["sentence","hint","code","docs"]},{"id":"viewer_codec_firefox","kind":"info","text":"Firefox has not enabled its H.264 video plugin yet. Open about:addons → Plugins, set \"OpenH264 Video Codec provided by Cisco Systems, Inc.\" to Always Activate (a fresh Firefox downloads it within a minute or two of starting), or in about:config set media.gmp-gmpopenh264.enabled to true. Then select TRY AGAIN.","owners":["frontend"],"placeholders":[]},{"id":"viewer_codec_missing","kind":"info","text":"This browser offers no H.264 or HEVC video decoder for live video, which the desktop stream needs. Use a current Chrome, Edge, Safari or Firefox, or enable the browser's H.264 support, then select TRY AGAIN.","owners":["frontend"],"placeholders":[]},{"id":"viewer_recovery_manual","kind":"info","text":"Manual emergency recovery selected.","owners":["frontend"],"placeholders":[]},{"id":"cli_opened_the_desktop_in_your_browser","kind":"success","text":"Opened the {name} desktop in your browser.","owners":["cli","cli-dev"],"placeholders":["name"]},{"id":"cli_update_available_for_run","kind":"info","text":"update available for {updatable} — run {command}","owners":["cli","cli-dev"],"placeholders":["updatable","command"]},{"id":"cli_ssh_root_over_kiste_run","kind":"info","text":"ssh://root@{host} (over kiste.run)","owners":["cli","cli-dev"],"placeholders":["host"]},{"id":"cli_saved_the_next_start_resumes_it","kind":"info","text":"saved; the next start resumes it","owners":["cli","cli-dev"],"placeholders":[]},{"id":"cli_watch_interrupted","kind":"info","text":"Watch interrupted.","owners":["cli","cli-dev"],"placeholders":[]},{"id":"cli_event_stream_interrupted_at_cursor","kind":"info","text":"Event stream interrupted at cursor {after}.","owners":["cli","cli-dev"],"placeholders":["after"]},{"id":"cli_no_command_given_run_help_for","kind":"info","text":"{program}: no command given; run `{program} --help` for the overview","owners":["cli"],"placeholders":["program"]},{"id":"cli_logged_in_as","kind":"success","text":"Logged in as {auth}.","owners":["cli","cli-dev"],"placeholders":["auth"]},{"id":"cli_kiste_ssh_config_ssh_config_sets","kind":"hint","text":"`kiste ssh-config >> ~/.ssh/config` sets up plain `ssh NAME.kiste` by hand","owners":["cli"],"placeholders":[]},{"id":"cli_kiste_ssh_adds_it_on_first","kind":"hint","text":"`kiste ssh` adds it on first use","owners":["cli"],"placeholders":[]},{"id":"cli_not_signed_in_nothing_to_sign","kind":"info","text":"Not signed in; nothing to sign out of.","owners":["cli","cli-dev"],"placeholders":[]},{"id":"cli_removed_the_local_token_its_remote","kind":"info","text":"Removed the local token; its remote session was not revoked.","owners":["cli","cli-dev"],"placeholders":[]},{"id":"cli_logged_out_and_revoked_the_remote","kind":"info","text":"Logged out and revoked the remote session.","owners":["cli","cli-dev"],"placeholders":[]},{"id":"cli_waiting_for_browser_authorization","kind":"info","text":"Waiting for browser authorization…","owners":["cli","cli-dev"],"placeholders":[]},{"id":"cli_open_this_url_to_authorize_kiste","kind":"info","text":"Open this URL to authorize Kiste:\n{authorization}","owners":["cli","cli-dev"],"placeholders":["authorization"]},{"id":"cli_kiste_cli_is_available_you_have","kind":"info","text":"Kiste CLI {latest} is available (you have {current}); run `kiste self-update` to install it.","owners":["cli"],"placeholders":["latest","current"]},{"id":"cli_kiste_cli_is_the_latest_version","kind":"success","text":"Kiste CLI {current} is the latest version.","owners":["cli"],"placeholders":["current"]},{"id":"cli_kiste_cli_is_installed_at","kind":"success","text":"Kiste CLI {latest} is installed at {executable}.","owners":["cli","cli-dev"],"placeholders":["latest","executable"]},{"id":"cli_kiste_credentials_pick_interactively","kind":"hint","text":"kiste credentials             pick interactively","owners":["cli"],"placeholders":[]},{"id":"cli_kiste_credentials_show_id_see_exactly","kind":"hint","text":"kiste credentials show <id>   see exactly what would be read","owners":["cli"],"placeholders":[]},{"id":"cli_kiste_new_name_auth_create_a","kind":"hint","text":"kiste new NAME --auth         create a Kiste carrying the selection","owners":["cli"],"placeholders":[]},{"id":"cli_secrets_are_masked_pass_reveal_to","kind":"hint","text":"secrets are masked — pass --reveal to print them verbatim","owners":["cli","cli-dev"],"placeholders":[]},{"id":"cli_none_of_the_catalogue_s_credentials","kind":"info","text":"none of the catalogue's credentials exist on this machine yet","owners":["cli","cli-dev"],"placeholders":[]},{"id":"cli_nothing_changed","kind":"info","text":"nothing changed","owners":["cli","cli-dev"],"placeholders":[]},{"id":"cli_no_credentials_will_be_carried","kind":"success","text":"no credentials will be carried","owners":["cli","cli-dev"],"placeholders":[]},{"id":"cli_will_travel_when_you_ask","kind":"success","text":"{chosen_count} will travel when you ask: {chosen}","owners":["cli","cli-dev"],"placeholders":["chosen_count","chosen"]},{"id":"cli_kiste_new_name_auth_carry_them","kind":"hint","text":"kiste new NAME --auth      carry them into a new Kiste","owners":["cli"],"placeholders":[]},{"id":"cli_kiste_credentials_push_carry_them_into","kind":"hint","text":"kiste credentials push     carry them into a running one","owners":["cli"],"placeholders":[]},{"id":"cli_no_credentials_selected_run_kiste_credentials","kind":"info","text":"no credentials selected — run `kiste credentials` to choose some","owners":["cli"],"placeholders":[]},{"id":"cli_carried_file_s_into_for","kind":"success","text":"carried {injected_count} file(s) into {name} for {homes}","owners":["cli","cli-dev"],"placeholders":["injected_count","name","homes"]},{"id":"cli_nothing_was_stored_by_kiste_the","kind":"hint","text":"nothing was stored by Kiste; the files came straight from this machine","owners":["cli","cli-dev"],"placeholders":[]},{"id":"cli_not_installed_in","kind":"info","text":"not installed in {name}: {names}","owners":["cli","cli-dev"],"placeholders":["name","names"]},{"id":"cli_those_files_are_in_place_but","kind":"hint","text":"those files are in place but do nothing until the programs are installed","owners":["cli","cli-dev"],"placeholders":[]},{"id":"cli_connecting_to_ssh_over_kiste_run","kind":"info","text":"Connecting to {name} (ssh://{user}@{host} over kiste.run). Escape with ~.","owners":["cli"],"placeholders":["name","user","host"]},{"id":"cli_no_kisten_yet_start_one_with","kind":"info","text":"No Kisten yet. Start one with `kiste new`.","owners":["cli"],"placeholders":[]},{"id":"cli_every_kiste_is_on","kind":"success","text":"Every Kiste is on {latest}.","owners":["cli","cli-dev"],"placeholders":["latest"]},{"id":"cli_is_already_on","kind":"success","text":"{name} is already on {latest}.","owners":["cli","cli-dev"],"placeholders":["name","latest"]},{"id":"cli_update_to","kind":"info","text":"Update {join_names} to {latest}? {capitalize}.","owners":["cli","cli-dev"],"placeholders":["join_names","latest","capitalize"]},{"id":"cli_s_saved_session_is_discarded_it","kind":"success","text":"{name}'s saved session is discarded; it stays stopped and starts on {latest} next time.","owners":["cli","cli-dev"],"placeholders":["name","latest"]},{"id":"cli_interrupt_for_accepted_status","kind":"info","text":"Interrupt {id} for {instance_name}: accepted={accepted} status={status}","owners":["cli","cli-dev"],"placeholders":["id","instance_name","accepted","status"]},{"id":"cli_no_native_commands_recorded_for","kind":"info","text":"No native commands recorded for {name}.","owners":["cli","cli-dev"],"placeholders":["name"]},{"id":"cli_revoked_desktop_link_s_of","kind":"success","text":"Revoked {revoked} desktop link(s) of {name}.","owners":["cli","cli-dev"],"placeholders":["revoked","name"]},{"id":"cli_no_browser_is_opened_without_a","kind":"info","text":"No browser is opened without a terminal; the link above works in any browser signed in to your account until {expires_at}.","owners":["cli"],"placeholders":["expires_at"]},{"id":"cli_no_kisten_match_status","kind":"info","text":"No Kisten match status {requested_statuses}.","owners":["cli","cli-dev"],"placeholders":["requested_statuses"]},{"id":"cli_no_current_kiste_selected","kind":"info","text":"No current Kiste selected.","owners":["cli","cli-dev"],"placeholders":[]},{"id":"cli_this_computer_s_shared_connection_to","kind":"hint","text":"this computer's shared connection to it closed, with any background forwards; start them again after resume","owners":["cli"],"placeholders":[]},{"id":"cli_stopped_with_its_session_saved_kiste","kind":"success","text":"Stopped {name} with its session saved. `kiste resume {name}` brings it back in about a second.","owners":["cli"],"placeholders":["name"]},{"id":"cli_stopped_kiste_resume_boots_it_fresh","kind":"success","text":"Stopped {name}. `kiste resume {name}` boots it fresh{onto}.","owners":["cli"],"placeholders":["name","onto"]},{"id":"cli_extended_until","kind":"success","text":"Extended {name} until {expires_at}.","owners":["cli","cli-dev"],"placeholders":["name","expires_at"]},{"id":"cli_is_now_the_current_kiste_it","kind":"hint","text":"{name} is now the current Kiste; it has {source}'s disk, its processes start fresh","owners":["cli"],"placeholders":["name","source"]},{"id":"cli_copied_to","kind":"success","text":"Copied {sources} to {destination}.","owners":["cli"],"placeholders":["sources","destination"]},{"id":"cli_stopped_forwarding","kind":"info","text":"Stopped forwarding 127.0.0.1:{local_port} → {name}:{guest_port}.","owners":["cli"],"placeholders":["local_port","name","guest_port"]},{"id":"cli_stop_it_with_kiste_forward_stop","kind":"hint","text":"stop it with `kiste forward {name} {specs} --stop`","owners":["cli"],"placeholders":["name","specs"]},{"id":"cli_start_it_with_kiste_start_name","kind":"info","text":"Start it with `kiste start NAME --image {id}`.","owners":["cli"],"placeholders":["id"]},{"id":"cli_delete_image","kind":"info","text":"Delete image {name}?","owners":["cli","cli-dev"],"placeholders":["name"]},{"id":"cli_deleted_image","kind":"success","text":"Deleted image {id}.","owners":["cli","cli-dev"],"placeholders":["id"]},{"id":"cli_no_snapshots_yet_capture_one_with","kind":"info","text":"No snapshots yet. Capture one with `kiste snapshot create KISTE [--name NAME]`.","owners":["cli"],"placeholders":[]},{"id":"cli_delete_snapshot_forever","kind":"info","text":"Delete snapshot {id} forever?","owners":["cli","cli-dev"],"placeholders":["id"]},{"id":"cli_updated_to_v","kind":"success","text":"Updated {environment_name} to v{version}.","owners":["cli","cli-dev"],"placeholders":["environment_name","version"]},{"id":"cli_streams_nothing_publish_a_port_with","kind":"info","text":"{instance} streams nothing. Publish a port with `kiste stream PORT`.","owners":["cli"],"placeholders":["instance"]},{"id":"cli_stopped_streaming_port_of","kind":"success","text":"Stopped streaming port {port} of {instance}.","owners":["cli"],"placeholders":["port","instance"]},{"id":"cli_created_token_expires_this_plaintext_is","kind":"info","text":"Created token {label} ({id}), expires {expires_at}. This plaintext is shown once.","owners":["cli","cli-dev"],"placeholders":["label","id","expires_at"]},{"id":"cli_revoked_token","kind":"success","text":"Revoked token {id}.","owners":["cli","cli-dev"],"placeholders":["id"]},{"id":"cli_no_computers_are_registered_yet_kiste","kind":"info","text":"No computers are registered yet. `kiste login` adds this one.","owners":["cli"],"placeholders":[]},{"id":"cli_removed_device","kind":"success","text":"Removed device {id}.","owners":["cli"],"placeholders":["id"]},{"id":"cli_run_kiste_login_to_sign_in","kind":"hint","text":"Run `kiste login` to sign in again.","owners":["cli"],"placeholders":[]},{"id":"cli_run_kiste_login_to_authenticate_this","kind":"hint","text":"Run `kiste login` to authenticate this CLI.","owners":["cli"],"placeholders":[]},{"id":"cli_the_kiste_is_running_fix_the","kind":"hint","text":"the Kiste is running; fix the cause and run `kiste credentials push`","owners":["cli"],"placeholders":[]},{"id":"cli_on_latest_one","kind":"success","text":"{name} is on {version}.","owners":["cli","cli-dev"],"placeholders":["name","version"]},{"id":"cli_on_latest_many","kind":"success","text":"{names} are on {version}.","owners":["cli","cli-dev"],"placeholders":["names","version"]},{"id":"cli_update_restarts","kind":"info","text":"{name}: {target} — updating restarts it and ends its session","owners":["cli","cli-dev"],"placeholders":["name","target"]},{"id":"cli_update_discards_session","kind":"info","text":"{name}: {target} — stopped with a saved session; updating discards the session","owners":["cli","cli-dev"],"placeholders":["name","target"]},{"id":"cli_update_run_one","kind":"hint","text":"run `kiste update {name} --yes`","owners":["cli"],"placeholders":["name"]},{"id":"cli_update_run_many","kind":"hint","text":"run `kiste update NAME --yes`, or `kiste update --all --yes` for all of them","owners":["cli"],"placeholders":[]},{"id":"cli_update_partial","kind":"warning","text":"{failed} of {total} not updated: {names}","owners":["cli","cli-dev"],"placeholders":["failed","total","names"]},{"id":"cli_next_start_one","kind":"info","text":"{name} is stopped and starts on {version} next time; nothing to do now.","owners":["cli","cli-dev"],"placeholders":["name","version"]},{"id":"cli_next_start_many","kind":"info","text":"{names} are stopped and start on {version} next time; nothing to do now.","owners":["cli","cli-dev"],"placeholders":["names","version"]},{"id":"cli_forwarding","kind":"info","text":"Forwarding 127.0.0.1:{local} → {name}:{guest}","owners":["cli","cli-dev"],"placeholders":["local","name","guest"]},{"id":"cli_forwarding_background","kind":"info","text":"Forwarding 127.0.0.1:{local} → {name}:{guest} in the background","owners":["cli","cli-dev"],"placeholders":["local","name","guest"]},{"id":"cli_environment_created","kind":"success","text":"Created {name} v{version}.","owners":["cli","cli-dev"],"placeholders":["name","version"]},{"id":"cli_config_unset","kind":"success","text":"Unset {key}.","owners":["cli","cli-dev"],"placeholders":["key"]},{"id":"cli_usage_while_running","kind":"info","text":"usage is reported while the Kiste is running","owners":["cli"],"placeholders":[]},{"id":"cli_renamed","kind":"success","text":"{old} is now {new}.","owners":["cli"],"placeholders":["old","new"]},{"id":"cli_whats_new","kind":"info","text":"What's new in {version}","owners":["cli","cli-dev"],"placeholders":["version"]},{"id":"cli_version_update_restarts","kind":"warning","text":"↑ {target} available — `kiste update {name}` restarts it","owners":["cli"],"placeholders":["target","name"]},{"id":"cli_version_update_discards","kind":"warning","text":"↑ {target} available — resuming keeps the saved session on {version}; `kiste update {name}` discards it","owners":["cli"],"placeholders":["target","version","name"]},{"id":"cli_version_next_start","kind":"info","text":"→ {target} when it next starts","owners":["cli","cli-dev"],"placeholders":["target"]},{"id":"cli_device_registered","kind":"info","text":"This computer ({name}) can now open SSH to every Kiste of your account.","owners":["cli"],"placeholders":["name"]},{"id":"cli_ssh_include_failed","kind":"warning","text":"plain `ssh NAME.kiste` is not set up on this computer","owners":["cli"],"placeholders":[]},{"id":"cli_device_key_failed","kind":"warning","text":"this computer's SSH key was not added to your account","owners":["cli"],"placeholders":[]},{"id":"cli_ssh_include_left","kind":"warning","text":"~/.ssh/config still includes the Kisten entry","owners":["cli"],"placeholders":[]},{"id":"cli_credential_skipped","kind":"warning","text":"skipped {credential}: {reason}","owners":["cli","cli-dev"],"placeholders":["credential","reason"]},{"id":"cli_carrying","kind":"progress","text":"carrying {count} file(s) into {name}","owners":["cli","cli-dev"],"placeholders":["count","name"]},{"id":"cli_retrying","kind":"progress","text":"kiste.run is not answering yet, retrying…","owners":["cli"],"placeholders":[]},{"id":"cli_waiting_state","kind":"progress","text":"{name} is {state}; waiting until it is done…","owners":["cli","cli-dev"],"placeholders":["name","state"]},{"id":"cli_delete_one","kind":"info","text":"Delete {name} and its disk forever?","owners":["cli","cli-dev"],"placeholders":["name"]},{"id":"cli_delete_many","kind":"info","text":"Delete {names} and their disks forever?","owners":["cli"],"placeholders":["names"]},{"id":"cli_progress_resuming","kind":"progress","text":"Resuming {name}…","owners":["cli","cli-dev"],"placeholders":["name"]},{"id":"cli_progress_creating","kind":"progress","text":"Creating Kiste…","owners":["cli","cli-dev"],"placeholders":[]},{"id":"cli_progress_restarting","kind":"progress","text":"Restarting {name}…","owners":["cli","cli-dev"],"placeholders":["name"]},{"id":"cli_progress_forking","kind":"progress","text":"Forking {source} as {name}…","owners":["cli","cli-dev"],"placeholders":["source","name"]},{"id":"cli_progress_capturing","kind":"progress","text":"Capturing {name}…","owners":["cli","cli-dev"],"placeholders":["name"]},{"id":"cli_progress_restoring","kind":"progress","text":"Restoring snapshot as {name}…","owners":["cli","cli-dev"],"placeholders":["name"]},{"id":"cli_progress_downloading","kind":"progress","text":"Downloading Kiste CLI {version}…","owners":["cli"],"placeholders":["version"]},{"id":"cli_progress_discarding","kind":"progress","text":"Discarding the saved session of {name}…","owners":["cli","cli-dev"],"placeholders":["name"]},{"id":"cli_progress_updating","kind":"progress","text":"Updating {name} to {version} — restarting it…","owners":["cli","cli-dev"],"placeholders":["name","version"]},{"id":"cli_progress_stopping_session","kind":"progress","text":"Stopping {name} — preserving the session (memory snapshot)…","owners":["cli","cli-dev"],"placeholders":["name"]},{"id":"cli_progress_stopping","kind":"progress","text":"Stopping {name} (clean shutdown)…","owners":["cli","cli-dev"],"placeholders":["name"]},{"id":"cli_session_not_saved","kind":"warning","text":"{name} did not answer, so its session could not be saved","owners":["cli","cli-dev"],"placeholders":["name"]},{"id":"cli_credentials_not_carried_now","kind":"warning","text":"credentials were not carried: {reason}","owners":["cli","cli-dev"],"placeholders":["reason"]},{"id":"cli_fleet_member_failed","kind":"warning","text":"{name}: {reason}","owners":["cli","cli-dev"],"placeholders":["name","reason"]},{"id":"cli_unrecognized_server_text","kind":"info","text":"kiste.run sent a note this version doesn't recognize; `kiste update` may help.","owners":["cli"],"placeholders":[]},{"id":"dbg_connecting_to_ssh_root_over_kiste","kind":"info","text":"Connecting to {name} (ssh://root@{host} over kiste.run). Escape with ~.","owners":["cli-dev"],"placeholders":["name","host"]},{"id":"dbg_copied_to","kind":"success","text":"Copied {source} to {destination}.","owners":["cli-dev"],"placeholders":["source","destination"]},{"id":"dbg_kiste_debug_credentials_pick_interactively","kind":"hint","text":"kiste-debug credentials             pick interactively","owners":["cli-dev"],"placeholders":[]},{"id":"dbg_kiste_debug_credentials_push_carry_them","kind":"hint","text":"kiste-debug credentials push     carry them into a running one","owners":["cli-dev"],"placeholders":[]},{"id":"dbg_kiste_debug_credentials_show_id_see","kind":"hint","text":"kiste-debug credentials show <id>   see exactly what would be read","owners":["cli-dev"],"placeholders":[]},{"id":"dbg_kiste_debug_new_name_auth_carry","kind":"hint","text":"kiste-debug new NAME --auth      carry them into a new Kiste","owners":["cli-dev"],"placeholders":[]},{"id":"dbg_kiste_debug_new_name_auth_create","kind":"hint","text":"kiste-debug new NAME --auth         create a Kiste carrying the selection","owners":["cli-dev"],"placeholders":[]},{"id":"dbg_no_credentials_selected_run_kiste_debug","kind":"info","text":"no credentials selected — run `kiste-debug credentials` to choose some","owners":["cli-dev"],"placeholders":[]},{"id":"dbg_no_kisten_yet_start_one_with","kind":"info","text":"No Kisten yet. Start one with `kiste-debug new`.","owners":["cli-dev"],"placeholders":[]},{"id":"dbg_no_snapshots_yet_capture_one_with","kind":"info","text":"No snapshots yet. Capture one with `kiste-debug snapshot create NAME`.","owners":["cli-dev"],"placeholders":[]},{"id":"dbg_run_kiste_debug_login_to_authenticate","kind":"hint","text":"Run `kiste-debug login` to authenticate this CLI.","owners":["cli-dev"],"placeholders":[]},{"id":"dbg_start_it_with_kiste_debug_start","kind":"info","text":"Start it with `kiste-debug start NAME --image {id}`.","owners":["cli-dev"],"placeholders":["id"]},{"id":"dbg_stopped_kiste_debug_start_boots_it","kind":"success","text":"Stopped {name}. `kiste-debug start {name}` boots it fresh{onto}.","owners":["cli-dev"],"placeholders":["name","onto"]},{"id":"dbg_stopped_with_its_session_saved_kiste","kind":"success","text":"Stopped {name} with its session saved. `kiste-debug start {name}` resumes it in about a second.","owners":["cli-dev"],"placeholders":["name"]},{"id":"dbg_the_kiste_is_running_fix_the","kind":"hint","text":"the Kiste is running; fix the cause and run `kiste-debug credentials push`","owners":["cli-dev"],"placeholders":[]},{"id":"dbg_unrecognized_server_text","kind":"info","text":"kiste.run sent a note this version doesn't recognize; `kiste-debug update` may help.","owners":["cli-dev"],"placeholders":[]},{"id":"dbg_update_run_many","kind":"hint","text":"run `kiste-debug update NAME --yes`, or `kiste-debug update --all --yes` for all of them","owners":["cli-dev"],"placeholders":[]},{"id":"dbg_update_run_one","kind":"hint","text":"run `kiste-debug update {name} --yes`","owners":["cli-dev"],"placeholders":["name"]},{"id":"dbg_version_update_discards","kind":"warning","text":"↑ {target} available — resuming keeps the saved session on {version}; `kiste-debug update {name}` discards it","owners":["cli-dev"],"placeholders":["target","version","name"]},{"id":"dbg_version_update_restarts","kind":"warning","text":"↑ {target} available — `kiste-debug update {name}` restarts it","owners":["cli-dev"],"placeholders":["target","name"]},{"id":"machine_deleted","kind":"success","text":"Deleted {name}.","owners":["worker"],"placeholders":["name"]},{"id":"machine_deleting","kind":"info","text":"Deleting {name}; it is gone in a moment.","owners":["worker"],"placeholders":["name"]},{"id":"sessions_revoked","kind":"success","text":"Token, desktop and terminal sessions revoked.","owners":["worker"],"placeholders":[]},{"id":"snapshot_deleted","kind":"success","text":"Deleted snapshot {snapshot}.","owners":["worker"],"placeholders":["snapshot"]},{"id":"service_unpublished","kind":"success","text":"Unpublished {service}.","owners":["worker"],"placeholders":["service"]},{"id":"command_cancelled","kind":"success","text":"Cancelled {command}.","owners":["worker"],"placeholders":["command"]},{"id":"image_memory_below_recommendation","kind":"warning","text":"{memory} MiB memory is below the {recommended} MiB recommendation for this toolchain","owners":["worker"],"placeholders":["memory","recommended"]},{"id":"terminal_size_unsupported","kind":"warning","text":"The terminal size is outside the supported range.","owners":["worker"],"placeholders":[]},{"id":"terminal_control_expected","kind":"warning","text":"Text frames must contain a terminal control message.","owners":["worker"],"placeholders":[]},{"id":"alert_closed_world_title","kind":"warning","text":"An answer ({status}) left a component outside the error registry","owners":["backend"],"placeholders":["status"]},{"id":"alert_closed_world_detail","kind":"warning","text":"{method} {path} answered {status} outside the registry ({violation}). kiste.run replaced it with a registered error; the original is in the log under request {request} (closed_world.violation). Fix it where it came from.","owners":["backend"],"placeholders":["method","path","status","violation","request"]},{"id":"status_component_edge","kind":"status","text":"kiste.run (sign-in, console and API)","owners":["backend"],"placeholders":[]},{"id":"status_component_compute","kind":"status","text":"Compute {index}","owners":["backend"],"placeholders":["index"]},{"id":"status_component_backups","kind":"status","text":"Off-site checkpoints","owners":["backend"],"placeholders":[]},{"id":"status_component_storage","kind":"status","text":"Machine storage","owners":["backend"],"placeholders":[]},{"id":"status_state_operational","kind":"status","text":"Operational","owners":["frontend"],"placeholders":[]},{"id":"status_state_degraded","kind":"status","text":"Degraded","owners":["frontend"],"placeholders":[]},{"id":"status_state_outage","kind":"status","text":"Outage","owners":["frontend"],"placeholders":[]},{"id":"status_state_unknown","kind":"status","text":"No data yet","owners":["frontend"],"placeholders":[]},{"id":"status_overall_operational","kind":"status","text":"All systems operational","owners":["frontend"],"placeholders":[]},{"id":"status_overall_degraded","kind":"status","text":"Some systems are degraded","owners":["frontend"],"placeholders":[]},{"id":"status_overall_outage","kind":"status","text":"Some systems are down","owners":["frontend"],"placeholders":[]},{"id":"status_state_maintenance","kind":"status","text":"Maintenance","owners":["frontend"],"placeholders":[]},{"id":"status_overall_maintenance","kind":"status","text":"Planned maintenance in progress","owners":["frontend"],"placeholders":[]},{"id":"status_maintenance_planned_shutdown","kind":"status","text":"Planned shutdown","owners":["backend"],"placeholders":[]},{"id":"status_maintenance_planned","kind":"status","text":"Planned maintenance","owners":["backend"],"placeholders":[]},{"id":"status_incident_compute_unreachable","kind":"warning","text":"Compute {index} is not reachable","owners":["backend"],"placeholders":["index"]},{"id":"status_incident_compute_unreachable_detail","kind":"warning","text":"kiste.run cannot reach this compute host. Requests to the Kisten on it fail until it is back; their disks are kept.","owners":["backend"],"placeholders":[]},{"id":"status_incident_error_rate","kind":"warning","text":"More requests than usual are failing","owners":["backend"],"placeholders":[]},{"id":"status_incident_error_rate_detail","kind":"warning","text":"{count} requests failed in the last 15 minutes.","owners":["backend"],"placeholders":["count"]},{"id":"status_incident_uploads","kind":"warning","text":"Off-site checkpoints are failing on compute {index}","owners":["backend"],"placeholders":["index"]},{"id":"status_incident_uploads_detail","kind":"warning","text":"{failed} checkpoint uploads failed and the oldest waiting one is {minutes} minutes old. Local checkpoints are not affected.","owners":["backend"],"placeholders":["failed","minutes"]},{"id":"status_incident_disk","kind":"warning","text":"Machine storage on compute {index} is almost full","owners":["backend"],"placeholders":["index"]},{"id":"status_incident_disk_detail","kind":"warning","text":"{percent}% of the machine storage is in use.","owners":["backend"],"placeholders":["percent"]},{"id":"status_incident_logs","kind":"warning","text":"Log shipping is falling behind on compute {index}","owners":["backend"],"placeholders":["index"]},{"id":"status_incident_logs_detail","kind":"warning","text":"{dropped} log lines were dropped or the host log store did not answer.","owners":["backend"],"placeholders":["dropped"]},{"id":"alert_incident_opened_subject","kind":"warning","text":"Kiste incident: {title}","owners":["backend"],"placeholders":["title"]},{"id":"alert_incident_resolved_subject","kind":"success","text":"Resolved: {title}","owners":["backend"],"placeholders":["title"]},{"id":"alert_incident_opened_body","kind":"warning","text":"{detail}\n\nStarted {started} (UTC). Status page: https://kiste.run/status","owners":["backend"],"placeholders":["detail","started"]},{"id":"alert_incident_resolved_body","kind":"success","text":"{title}\n\nResolved after {minutes} minutes. Status page: https://kiste.run/status","owners":["backend"],"placeholders":["title","minutes"]},{"id":"account_deletion_started","kind":"success","text":"Your account is being deleted. Its machines, snapshots and data are removed within minutes, and every sign-in has ended.","owners":["backend"],"placeholders":[]},{"id":"account_export_link","kind":"info","text":"Your data export is ready. The download link works for {minutes} minutes.","owners":["backend"],"placeholders":["minutes"]},{"id":"account_delete_warning","kind":"warning","text":"Deleting your account removes every machine with its disk, every snapshot including off-site copies, your API keys, webhooks, environments, images and account data. It cannot be undone. We keep the payment records the law requires, without your e-mail address.","owners":["frontend","cli","cli-dev"],"placeholders":[]},{"id":"account_export_hint","kind":"info","text":"The export holds everything Kiste stores about your account as JSON. Files inside your machines are yours to copy out directly.","owners":["frontend","cli","cli-dev"],"placeholders":[]},{"id":"toast_account_export_failed","kind":"warning","text":"Data export failed","owners":["frontend"],"placeholders":[]},{"id":"toast_account_delete_failed","kind":"warning","text":"Account deletion failed","owners":["frontend"],"placeholders":[]},{"id":"cli_account_delete_confirm_prompt","kind":"hint","text":"Type your account's e-mail address ({email}) to confirm","owners":["cli","cli-dev"],"placeholders":["email"]},{"id":"cli_account_password_prompt","kind":"hint","text":"Password of {email}","owners":["cli","cli-dev"],"placeholders":["email"]},{"id":"cli_account_export_saved","kind":"success","text":"Saved your data export to {path}.","owners":["cli","cli-dev"],"placeholders":["path"]},{"id":"alert_account_deletion_stuck_subject","kind":"warning","text":"Account erasure {id} keeps failing","owners":["backend"],"placeholders":["id"]},{"id":"alert_account_deletion_stuck_body","kind":"warning","text":"Erasure {id} has failed {failures} times at step {step}: {error}\n\nIt keeps retrying (at most hourly). An operator can see every pending erasure and re-run one (docs/RUNBOOK.md, Account erasures).","owners":["backend"],"placeholders":["id","failures","step","error"]}]}