Monorepo for Tangled
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657[server]# Can also be specified via environment variable `KNOT_HOSTNAME`.# Required! This value must be specified.#hostname =
# Can also be specified via environment variable `KNOT_ADMINS`.# Required! This value must be specified.#admins =
# Can also be specified via environment variable `KNOT_LISTEN_ADDR`.# Default value: "[::]:5555"#listen_addr = "[::]:5555"
# Can also be specified via environment variable `KNOT_LISTEN_HEADER_TIMEOUT_MS`.# Default value: 10000#listen_header_timeout_ms = 10000
# Can also be specified via environment variable `KNOT_LISTEN_IDLE_TIMEOUT_MS`.# Default value: 60000#listen_idle_timeout_ms = 60000
# Can also be specified via environment variable `KNOT_LISTEN_MAX_CONNECTIONS`.# Default value: 1024#listen_max_connections = 1024
# Can also be specified via environment variable `KNOT_LISTEN_RATE_LIMIT_PER_SECOND`.# Default value: 50#listen_rate_limit_per_second = 50
# Can also be specified via environment variable `KNOT_LISTEN_RATE_LIMIT_BURST`.# Default value: 200#listen_rate_limit_burst = 200
# Can also be specified via environment variable `KNOT_LISTEN_MAX_INFLIGHT_REQUESTS`.# Default value: 1024#listen_max_inflight_requests = 1024
# Can also be specified via environment variable `KNOT_LISTEN_REQUEST_TIMEOUT_MS`.# Default value: 60000#listen_request_timeout_ms = 60000
# Can also be specified via environment variable `KNOT_LISTEN_BODY_TIMEOUT_MS`.# Default value: 30000#listen_body_timeout_ms = 30000
# Can also be specified via environment variable `KNOT_LISTEN_WRITE_REQUEST_TIMEOUT_MS`.# Default value: 1800000#listen_write_request_timeout_ms = 1800000
# Can also be specified via environment variable `KNOT_INTERNAL_LISTEN_ADDR`.# Default value: "[::1]:5444"#internal_listen_addr = "[::1]:5444"
# Can also be specified via environment variable `KNOT_SSH_LISTEN_ADDR`.# Default value: "[::]:2222"#ssh_listen_addr = "[::]:2222"
# Can also be specified via environment variable `KNOT_SSH_HOST_KEY_FILE`.# Required! This value must be specified.#ssh_host_key_file =
# Can also be specified via environment variable `KNOT_SSH_MAX_PACK_BYTES`.# Default value: 8589934592#ssh_max_pack_bytes = 8589934592
# Can also be specified via environment variable `KNOT_APPVIEW_ENDPOINT`.# Default value: "https://tangled.org"#appview_endpoint = "https://tangled.org"
[tls]# Can also be specified via environment variable `KNOT_TLS_CERT_PATH`.#cert_path =
# Can also be specified via environment variable `KNOT_TLS_KEY_PATH`.#key_path =
# Can also be specified via environment variable `KNOT_TLS_HTTP3`.# Default value: true#http3 = true
# Can also be specified via environment variable `KNOT_TLS_ACME_ENABLED`.# Default value: false#acme_enabled = false
# Can also be specified via environment variable `KNOT_TLS_ACME_CACHE_DIR`.#acme_cache_dir =
# Can also be specified via environment variable `KNOT_TLS_ACME_CONTACT`.#acme_contact =
# Can also be specified via environment variable `KNOT_TLS_ACME_STAGING`.# Default value: false#acme_staging = false
# Can also be specified via environment variable `KNOT_TLS_MTLS_ENABLED`.# Default value: false#mtls_enabled = false
# Can also be specified via environment variable `KNOT_TLS_MTLS_CLIENT_CA_PATH`.#mtls_client_ca_path =
# Can also be specified via environment variable `KNOT_TLS_MTLS_ADMIN_SPKI_PIN`.#mtls_admin_spki_pin =
[acl]# Can also be specified via environment variable `KNOT_ADMISSION`.# Default value: "closed"#admission = "closed"
# Can also be specified via environment variable `KNOT_LEGACY_ADMIN_SECRET_ENV`.#legacy_admin_secret_env =
[repo]# Can also be specified via environment variable `KNOT_SCAN_PATH`.# Required! This value must be specified.#scan_path =
# Can also be specified via environment variable `KNOT_DEFAULT_BRANCH`.# Default value: "main"#default_branch = "main"
[git]# Committer identity stamped on merge commits the knot creates.## Can also be specified via environment variable `KNOT_GIT_USER_NAME`.## Default value: "Tangled"#user_name = "Tangled"
# Can also be specified via environment variable `KNOT_GIT_USER_EMAIL`.# Default value: "noreply@tangled.sh"#user_email = "noreply@tangled.sh"
# Can also be specified via environment variable `KNOT_GIT_OBJECT_FORMAT`.# Default value: "sha256"#object_format = "sha256"
[secrets]# Can also be specified via environment variable `KNOT_SEALED_KEY_FILE`.# Required! This value must be specified.#sealed_key_file =
# Can also be specified via environment variable `KNOT_MASTER_KEY_ENV`.# Required! This value must be specified.#master_key_env =
[http]# Can also be specified via environment variable `KNOT_HTTP_CONNECT_TIMEOUT_MS`.# Default value: 5000#connect_timeout_ms = 5000
# Can also be specified via environment variable `KNOT_HTTP_READ_TIMEOUT_MS`.# Default value: 30000#read_timeout_ms = 30000
# Can also be specified via environment variable `KNOT_HTTP_REQUEST_TIMEOUT_MS`.# Default value: 60000#request_timeout_ms = 60000
# Can also be specified via environment variable `KNOT_HTTP_MAX_RESPONSE_BYTES`.# Default value: 16777216#max_response_bytes = 16777216
[atproto]# Can also be specified via environment variable `KNOT_PLC_DIRECTORY`.# Required! This value must be specified.#plc_directory =
[xrpc]# Can also be specified via environment variable `KNOT_XRPC_MAX_BODY_BYTES`.# Default value: 65536#max_body_bytes = 65536
# Can also be specified via environment variable `KNOT_XRPC_MAX_RESPONSE_BYTES`.# Default value: 5242880#max_response_bytes = 5242880
# Upper bound on bytes that a single archive spools,# across all our surfaces: the sh.tangled.repo.archive query,# `git archive --remote` over SSH,# and the smart HTTP archive route.# The knot will refuse writing smth that would blast an archive past this bound.## Can also be specified via environment variable `KNOT_XRPC_MAX_ARCHIVE_BYTES`.## Default value: 1073741824#max_archive_bytes = 1073741824
# Can also be specified via environment variable `KNOT_XRPC_TREE_LAST_COMMIT_BUDGET_MS`.# Default value: 300#tree_last_commit_budget_ms = 300
# Can also be specified via environment variable `KNOT_XRPC_BLOB_LAST_COMMIT_BUDGET_MS`.# Default value: 2000#blob_last_commit_budget_ms = 2000
# Can also be specified via environment variable `KNOT_XRPC_LANGUAGES_BUDGET_MS`.# Default value: 1000#languages_budget_ms = 1000
# Can also be specified via environment variable `KNOT_XRPC_LANGUAGES_PUSH_BUDGET_MS`.# Default value: 2000#languages_push_budget_ms = 2000
# Body limit for the merge and mergeCheck procedures, whose patch payloads# routinely exceed the general XRPC body limit.## Can also be specified via environment variable `KNOT_XRPC_MAX_PATCH_BYTES`.## Default value: 16777216#max_patch_bytes = 16777216
# Limit on the total decompressed size of a patch the merge procedures parse,# bounding binary-delta inflation and hunk expansion apart from the# compressed body limit above.## Can also be specified via environment variable `KNOT_XRPC_MAX_PATCH_DECOMPRESSED_BYTES`.## Default value: 134217728#max_patch_decompressed_bytes = 134217728
# Can also be specified via environment variable `KNOT_XRPC_PREAUTH_BURST`.# Default value: 20#preauth_burst = 20
# Can also be specified via environment variable `KNOT_XRPC_PREAUTH_REFILL_MS`.# Default value: 100#preauth_refill_ms = 100
# Can also be specified via environment variable `KNOT_XRPC_PER_PEER_INFLIGHT`.# Default value: 8#per_peer_inflight = 8
# Can also be specified via environment variable `KNOT_XRPC_GLOBAL_INFLIGHT`.# Default value: 64#global_inflight = 64
# Can also be specified via environment variable `KNOT_XRPC_MAX_PENDING_RESERVATIONS`.# Default value: 256#max_pending_reservations = 256
# Per-account limit on reserved repository keys awaiting creation, so one# account cannot consume the whole pending-reservation budget.## Can also be specified via environment variable `KNOT_XRPC_PER_ACTOR_RESERVATIONS`.## Default value: 32#per_actor_reservations = 32
# How long a reserved repository key is held before it lapses and its# sealed key is reclaimed, in seconds.## Can also be specified via environment variable `KNOT_XRPC_RESERVATION_TTL_SECS`.## Default value: 3600#reservation_ttl_secs = 3600
# Can also be specified via environment variable `KNOT_XRPC_FORK_MAX_PACK_BYTES`.# Default value: 1073741824#fork_max_pack_bytes = 1073741824
# Can also be specified via environment variable `KNOT_XRPC_FORK_FETCH_TIMEOUT_MS`.# Default value: 600000#fork_fetch_timeout_ms = 600000
# When the knot runs behind a trusted reverse proxy that terminates TLS,# set this to the header the proxy appends the client address to,# for example x-forwarded-for.# The knot will read the chain right -> left# and take the first entry that `trusted_proxies` doesn't cover.# Leave unset when the knot is directly exposed so the socket peer address is used.# Only set this when a trusted proxy overwrites or appends the header,# since a client can forge it otherwise.## Can also be specified via environment variable `KNOT_XRPC_TRUSTED_PROXY_HEADER`.#trusted_proxy_header =
# Addresses whose `trusted_proxy_header` the knot honors,# each a bare IP without a port or a CIDR block such as 173.245.48.0/20,# for ex the loopback address of a reverse proxy on the same host.# The knot will rate-limit a request from any other address# by its own socket address and ignore the header.# These same addresses are hops the knot will iterate over when it reads# the header, so list every proxy you control in the path.# A proxy that the knot doesn't know about becomes the entry it keys on,# and everyone that proxy serves will then share one rate-limit bucket.# The knot will read the last 32 entries of the chain, at most.# When the list covers all 32, the knot# will rate-limit by the address the request connected from.# Leave empty to honor the header from every peer and take its rightmost# entry, which is safe *only* while every route to this knot passes# through the proxy.## Can also be specified via environment variable `KNOT_XRPC_TRUSTED_PROXIES`.## Default value: []#trusted_proxies = []
# Can also be specified via environment variable `KNOT_XRPC_EVENTS_REPLAY_BUFFER`.# Default value: 4096#events_replay_buffer = 4096
# Can also be specified via environment variable `KNOT_XRPC_EVENTS_REPLAY_BYTES`.# Default value: 67108864#events_replay_bytes = 67108864
# Can also be specified via environment variable `KNOT_XRPC_EVENTS_MAX_SUBSCRIBERS`.# Default value: 256#events_max_subscribers = 256
# Can also be specified via environment variable `KNOT_XRPC_EVENTS_MAX_PER_PEER`.# Default value: 8#events_max_per_peer = 8
[maintenance]# Can also be specified via environment variable `KNOT_MAINTENANCE_ENABLED`.# Default value: true#enabled = true
# Can also be specified via environment variable `KNOT_MAINTENANCE_COMMIT_GRAPH`.# Default value: true#commit_graph = true
# Can also be specified via environment variable `KNOT_MAINTENANCE_MULTI_PACK_INDEX`.# Default value: true#multi_pack_index = true
# Can also be specified via environment variable `KNOT_MAINTENANCE_BITMAP`.# Default value: true#bitmap = true
# Can also be specified via environment variable `KNOT_MAINTENANCE_INTERVAL_SECS`.# Default value: 21600#interval_secs = 21600
# Can also be specified via environment variable `KNOT_MAINTENANCE_REPACK_MAX_OBJECTS`.# Default value: 16000000#repack_max_objects = 16000000
# Can also be specified via environment variable `KNOT_MAINTENANCE_REPACK_GEOMETRIC_FACTOR`.# Default value: 2#repack_geometric_factor = 2
# Can also be specified via environment variable `KNOT_MAINTENANCE_PRUNE_GRACE_SECS`.# Default value: 1209600#prune_grace_secs = 1209600
# Can also be specified via environment variable `KNOT_MAINTENANCE_REFLOG_EXPIRE_SECS`.# Default value: 7776000#reflog_expire_secs = 7776000
# Can also be specified via environment variable `KNOT_MAINTENANCE_LARGE_PUSH_BYTES`.# Default value: 52428800#large_push_bytes = 52428800
[pack_cache]# Can also be specified via environment variable `KNOT_PACK_CACHE_ENABLED`.# Default value: true#enabled = true
# Can also be specified via environment variable `KNOT_PACK_CACHE_TTL_SECS`.# Default value: 60#ttl_secs = 60
# Can also be specified via environment variable `KNOT_PACK_CACHE_MAX_ENTRY_BYTES`.# Default value: 67108864#max_entry_bytes = 67108864
# Can also be specified via environment variable `KNOT_PACK_CACHE_MAX_TOTAL_BYTES`.# Default value: 2147483648#max_total_bytes = 2147483648
[pack]# Can also be specified via environment variable `KNOT_PACK_MAX_OBJECTS`.# Default value: 16000000#max_objects = 16000000
# Can also be specified via environment variable `KNOT_PACK_MAX_TOTAL_BYTES`.# Default value: 68719476736#max_total_bytes = 68719476736
# Can also be specified via environment variable `KNOT_PACK_SELECTION_MAX_OBJECTS`.# Default value: 16000000#selection_max_objects = 16000000
# Can also be specified via environment variable `KNOT_PACK_SELECTION_TIME_BUDGET_SECS`.# Default value: 600#selection_time_budget_secs = 600
[lfs]# Can also be specified via environment variable `KNOT_LFS_STORE_PATH`.#store_path =
# Can also be specified via environment variable `KNOT_LFS_MAX_OBJECT_BYTES`.# Default value: 5368709120#max_object_bytes = 5368709120
# Can also be specified via environment variable `KNOT_LFS_FREE_SPACE_FLOOR_BYTES`.# Default value: 1073741824#free_space_floor_bytes = 1073741824
# Can also be specified via environment variable `KNOT_LFS_GC_GRACE_SECS`.# Default value: 1209600#gc_grace_secs = 1209600
# Can also be specified via environment variable `KNOT_LFS_GC_INTERVAL_SECS`.# Default value: 21600#gc_interval_secs = 21600
# Can also be specified via environment variable `KNOT_LFS_MAX_SSH_TRANSFERS`.# Default value: 16#max_ssh_transfers = 16
# Can also be specified via environment variable `KNOT_LFS_MAX_HTTP_DOWNLOADS`.# Default value: 64#max_http_downloads = 64
[keyfill]# Can also be specified via environment variable `KNOT_KEYFILL_KEY_BUDGET_MIB`.# Default value: 64#key_budget_mib = 64
# Can also be specified via environment variable `KNOT_KEYFILL_TTL_SECS`.# Default value: 3600#ttl_secs = 3600
# Can also be specified via environment variable `KNOT_KEYFILL_REPRIEVE_RETRY_SECS`.# Default value: 300#reprieve_retry_secs = 300
# Can also be specified via environment variable `KNOT_KEYFILL_REPRIEVE_BUDGET_SECS`.# Default value: 21600#reprieve_budget_secs = 21600
[resources]# Can also be specified via environment variable `KNOT_MAX_THREADS`.# Default value: 0#max_threads = 0
# Can also be specified via environment variable `KNOT_MAX_MEMORY_BYTES`.# Default value: 0#max_memory_bytes = 0
[homepage]# Can also be specified via environment variable `KNOT_HOMEPAGE_ENABLED`.# Default value: true#enabled = true
# Can also be specified via environment variable `KNOT_HOMEPAGE_PATH`.#path =
[ci]# Can also be specified via environment variable `KNOT_CI_LOGS_ADDR`.#logs_addr =
[messages][messages.push]# Default value: ["{knot} received {refs}."]#ack = ["{knot} received {refs}."]
# Default value: ["", "-> Open stinky pull request for this branch:", " {url}", ""]#pull_request = ["", "-> Open stinky pull request for this branch:", " {url}", ""]
# Default value: ["pipeline compiled with no diagnostics"]#pipeline_clean = ["pipeline compiled with no diagnostics"]
# Default value: ["no pipelines to compile"]#pipeline_none = ["no pipelines to compile"]
# Default value: ["-> Browse CI logs in your terminal:", " ssh -t -p {port} {host} {repo} {sha}"]#ci_logs = ["-> Browse CI logs in your terminal:", " ssh -t -p {port} {host} {repo} {sha}"]
[messages.fetch]# Default value: ["Thanks for using {knot}!"]#motd = ["Thanks for using {knot}!"]
# Default value: ["Enumerating objects: {count}, done."]#enumerating = ["Enumerating objects: {count}, done."]
# Default value: ["Total {count}, done."]#total = ["Total {count}, done."]
# Default value: "knot: {error}"#fatal = "knot: {error}"
[messages.reject]# Default value: "refs/cobs/* and refs/hidden/* are reserved and cannot be pushed"#reserved_refs = "refs/cobs/* and refs/hidden/* are reserved and cannot be pushed"
# Default value: "existing refs/cobs/* object cannot be modified or deleted over the wire"#cob_create_only = "existing refs/cobs/* object cannot be modified or deleted over the wire"
# Default value: "refs/cobs/* stores append-only collaborative objects and cannot be deleted"#cob_delete = "refs/cobs/* stores append-only collaborative objects and cannot be deleted"
# Default value: "refs/hidden/* is reserved for server-side fork staging and cannot be pushed"#hidden_reserved = "refs/hidden/* is reserved for server-side fork staging and cannot be pushed"
# Default value: "collaborative-object verification failed: {error}"#cob_verification = "collaborative-object verification failed: {error}"
# Default value: "reference already exists"#ref_exists = "reference already exists"
# Default value: "stale info: old value doesn't match"#stale_old_value = "stale info: old value doesn't match"
# Default value: "missing necessary objects"#missing_objects = "missing necessary objects"
# Default value: "missing necessary objects for {ref}"#missing_objects_for = "missing necessary objects for {ref}"
# Default value: "atomic transaction failed"#atomic_failed = "atomic transaction failed"
# Default value: "atomic push aborted"#atomic_aborted = "atomic push aborted"
# Default value: "authorization unavailable"#authorization_unavailable = "authorization unavailable"
# Default value: "unpacker error"#unpacker_error = "unpacker error"
# Default value: "ref snapshot unavailable"#ref_snapshot_unavailable = "ref snapshot unavailable"
# Default value: "object migration failed"#object_migration_failed = "object migration failed"
[messages.ssh]# Default value: ["Hi {user}! You're authenticated to {knot} knot.", "This knot serves git over ssh, so there's no shell here. :P", "Clone repo with: git clone {knot}:<repoDID>"]#greeting = ["Hi {user}! You're authenticated to {knot} knot.", "This knot serves git over ssh, so there's no shell here. :P", "Clone repo with: git clone {knot}:<repoDID>"]
# Default value: ["Hi there! This is the {knot} knot.", "This knot serves git over ssh, so there's no shell here. :P", "Clone repo with: git clone {knot}:<repoDID>", "Publish your ssh key to your atproto account so this knot can identify your pushes.", "Put your handle in the url, as in yourhandle@{knot}:<repoDID>, so your ssh client can find your registered key on its own."]#greeting_unknown = ["Hi there! This is the {knot} knot.", "This knot serves git over ssh, so there's no shell here. :P", "Clone repo with: git clone {knot}:<repoDID>", "Publish your ssh key to your atproto account so this knot can identify your pushes.", "Put your handle in the url, as in yourhandle@{knot}:<repoDID>, so your ssh client can find your registered key on its own."]
# Default value: "knot: unsupported command"#unsupported_command = "knot: unsupported command"
# Default value: "knot: too many concurrent operations from your address, try again shortly"#too_many_operations = "knot: too many concurrent operations from your address, try again shortly"
# Default value: "knot: repository not found"#repo_not_found = "knot: repository not found"
# Default value: "knot: repository index is warming, retry shortly"#index_warming = "knot: repository index is warming, retry shortly"
# Default value: "knot: LFS isn't enabled on this knot"#lfs_disabled = "knot: LFS isn't enabled on this knot"
# Default value: "knot: this ssh key doesn't match any key published by the accounts that may push here. Authorized: {authorized}. If your agent offers several keys, add -o IdentitiesOnly=yes so it offers your registered key."#key_not_registered = "knot: this ssh key doesn't match any key published by the accounts that may push here. Authorized: {authorized}. If your agent offers several keys, add -o IdentitiesOnly=yes so it offers your registered key."
# Default value: "knot: couldn't read the account records needed to check your ssh key, retry shortly"#identity_unavailable = "knot: couldn't read the account records needed to check your ssh key, retry shortly"
# Default value: "knot: you aren't authorized to push to this repository."#push_denied = "knot: you aren't authorized to push to this repository."
# Default value: "knot: server is shutting down"#shutting_down = "knot: server is shutting down"
# Default value: "knot: malformed upload-archive request"#archive_malformed = "knot: malformed upload-archive request"
# Default value: "knot: upload-archive request timed out"#archive_timeout = "knot: upload-archive request timed out"
# Default value: "knot: upload-archive failed"#archive_failed = "knot: upload-archive failed"
# Default value: "knot: cannot advertise refs"#advertise_failed = "knot: cannot advertise refs"
# Default value: "knot: push exceeds configured size limit"#push_too_large = "knot: push exceeds configured size limit"
# Default value: "knot: receive exceeded its time budget"#receive_deadline = "knot: receive exceeded its time budget"
# Default value: "knot: malformed pack stream"#malformed_pack = "knot: malformed pack stream"
# Default value: "knot: receive read error"#receive_read_error = "knot: receive read error"
# Default value: "knot: receive stream ended early"#receive_ended_early = "knot: receive stream ended early"
# Default value: "knot: receive-pack failed"#receive_failed = "knot: receive-pack failed"
[messages.http]# Default value: "you aren't authorized to push to this repository"#push_denied = "you aren't authorized to push to this repository"
# Default value: "repository not found"#repo_not_found = "repository not found"
# Default value: "push exceeds the configured size limit"#push_too_large = "push exceeds the configured size limit"
# Default value: "malformed pack stream: {error}"#malformed_pack = "malformed pack stream: {error}"
# Default value: "receive stream ended early"#receive_ended_early = "receive stream ended early"
[messages.lfs]# Default value: "invalid LFS oid {value}"#invalid_oid = "invalid LFS oid {value}"
# Default value: "oid mismatch, declared {declared}, computed {computed}"#hash_mismatch = "oid mismatch, declared {declared}, computed {computed}"
# Default value: "size mismatch, declared {declared}, received {received}"#size_mismatch = "size mismatch, declared {declared}, received {received}"
# Default value: "object size {declared} exceeds limit {limit}"#size_limit_exceeded = "object size {declared} exceeds limit {limit}"
# Default value: "free space {free} below floor {floor}"#free_space_denied = "free space {free} below floor {floor}"
# Default value: "object {oid} not found"#not_found = "object {oid} not found"
# Default value: "protocol framing fault: {detail}"#framing = "protocol framing fault: {detail}"
# Default value: "too many {what} in one message, limit {limit}"#too_many = "too many {what} in one message, limit {limit}"
# Default value: "unknown command {command}"#unknown_command = "unknown command {command}"
# Default value: "unsupported version {version}"#unsupported_version = "unsupported version {version}"
# Default value: "unsupported hash algorithm {algorithm}"#unsupported_hash = "unsupported hash algorithm {algorithm}"
# Default value: "put-object isn't allowed on a download channel"#put_on_download = "put-object isn't allowed on a download channel"
# Default value: "verify-object isn't allowed on a download channel"#verify_on_download = "verify-object isn't allowed on a download channel"
# Default value: "get-object isn't allowed on an upload channel"#get_on_upload = "get-object isn't allowed on an upload channel"
# Default value: "put-object is missing its object body"#put_no_body = "put-object is missing its object body"