[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 # Maximum number of SSH git operations that one client address can run at the same time. # # Can also be specified via environment variable `KNOT_SSH_MAX_INFLIGHT_PER_PEER`. # # Default value: 4 #ssh_max_inflight_per_peer = 4 # Addresses allowed to prefix an ssh connection with a PROXY protocol v1 header, # each a bare IP without a port or a CIDR block, # for ex the address of a TCP proxy such as nginx `stream` with `proxy_protocol on`. # The knot will rate-limit the connection by the source address in the header. # The knot never reads the header from any other address. # # Can also be specified via environment variable `KNOT_SSH_PROXY_PROTOCOL_FROM`. # # Default value: [] #ssh_proxy_protocol_from = [] # 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" # Can also be specified via environment variable `KNOT_CONTRIBUTION_POLICY`. # Default value: "anyone" #contribution_policy = "anyone" # Can also be specified via environment variable `KNOT_REPO_WRITE_BURST`. # Default value: 30 #write_burst = 30 # Can also be specified via environment variable `KNOT_REPO_WRITE_REFILL_MS`. # Default value: 500 #write_refill_ms = 500 [git] # 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 # Can also be specified via environment variable `KNOT_HTTP_BLOCK_PRIVATE_ADDRESSES`. # Default value: true #block_private_addresses = true [atproto] # Can also be specified via environment variable `KNOT_PLC_DIRECTORY`. # Required! This value must be specified. #plc_directory = # How many PLC documents the reconciler sweep checks against the directory concurrently. # # Can also be specified via environment variable `KNOT_PLC_SWEEP_WIDTH`. # # Default value: 1 #plc_sweep_width = 1 # An archive of the per-repo signing keys, # that gotta get squished into the canonical key store here # at knot start time. # If unset, the knot will attempt just `repo-signing-keys.json` # next to `secrets.sealed_key_file` if that file exists too. # # Can also be specified via environment variable `KNOT_REPO_SIGNING_KEYS`. #repo_signing_keys = # Relays that get a com.atproto.sync.requestCrawl for this knot on startup. # # Can also be specified via environment variable `KNOT_CRAWLERS`. # # Default value: ["https://index.tangled.network", "https://relay.fire.hose.cam", "https://relay3.fr.hose.cam", "https://bsky.network", "https://northamerica.firehose.network", "https://europe.firehose.network", "https://asia.firehose.network", "https://atproto.africa", "https://relay.upcloud.world"] #crawlers = ["https://index.tangled.network", "https://relay.fire.hose.cam", "https://relay3.fr.hose.cam", "https://bsky.network", "https://northamerica.firehose.network", "https://europe.firehose.network", "https://asia.firehose.network", "https://atproto.africa", "https://relay.upcloud.world"] [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 org.tangled.git.getArchive 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 # Body limit for the seedRepo procedure, whose record batches 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_IMPORT_MAX_PACK_BYTES`. # Default value: 268435456 #import_max_pack_bytes = 268435456 # 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_REPACK_LOOSE_THRESHOLD`. # Default value: 6700 #repack_loose_threshold = 6700 # 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_FULL_REPACK_INTERVAL_SECS`. # Default value: 432000 #full_repack_interval_secs = 432000 # 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`. # Required! This value must be specified. #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 [social] # Byte budget over the live record versions of one repository, summed from every atproto collection in the projection. # An edit swaps the old version's bytes for the new one's, and a delete frees the record's bytes back out of the budget. # A write past the budget 429s. # # Can also be specified via environment variable `KNOT_SOCIAL_REPO_BUDGET_BYTES`. # # Default value: 1073741824 #repo_budget_bytes = 1073741824 # The "Foster Knot" from whom this knot will pull "shadowed" records from during a one-time upgrade, at boot time. # Defaults to the "Tangled production foster knot", # so there's not much use of it outside this one-time upgrade required # on 2026-10-28. # We are sorry for designing our distributed system # in such a way that warrants what Lewis would call # "phoning home" but the alternative is that each knot pings # the entire atproto dataset, trying to hunt down the social records # that it will be taking on as COBs starting 2026-10-28. # We have this "Foster Knot" that has not only done this for you # already, but also shadow-serves these social records on your knot's # behalf until you upgrade, so there's no perceived incompatibility-time # for reading on https://tangled.org . # If you're uncomfortable with this enough that you want to unset this, # please ping all of atproto to hunt down those social records # regarding the git repos on this knot, and add them here. # If this knot is being spun up for the first time and the current # day is *after* 2026-10-28, please disregard. This # setting will be gutted once all knots are upgraded. # # Can also be specified via environment variable `KNOT_SOCIAL_FOSTER_URL`. # # Default value: "https://knot2.mock.tangled.org" #foster_url = "https://knot2.mock.tangled.org" # How many handovers that the upgrade of a knot2 at boot-time from a foster knot pull will run concurrently. # # Can also be specified via environment variable `KNOT_SOCIAL_FOSTER_BOOT_WIDTH`. # # Default value: 4 #foster_boot_width = 4 # The following are for the "foster knot", you don't need to touch. # # Can also be specified via environment variable `KNOT_SOCIAL_FOSTER_ACK_SKIP_KNOT_SERVICE`. # # Default value: false #foster_ack_skip_knot_service = false # Can also be specified via environment variable `KNOT_SOCIAL_FOSTER_ACK_SKIP_ORIGIN_CHECKS`. # Default value: false #foster_ack_skip_origin_checks = false # Can also be specified via environment variable `KNOT_SOCIAL_FOSTER_LIAR_HYDRANT_URL`. # Default value: "" #foster_liar_hydrant_url = "" [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 = [links] # Can also be specified via environment variable `KNOT_LINKS_PRIVACY_POLICY`. #privacy_policy = # Can also be specified via environment variable `KNOT_LINKS_TERMS_OF_SERVICE`. #terms_of_service = [contact] # Can also be specified via environment variable `KNOT_CONTACT_EMAIL`. # Required! This value must be specified. #email = [messages] [messages.push] # Can also be specified via environment variable `KNOT_MESSAGES_PUSH_ACK`. # Default value: ["{knot} received {refs}."] #ack = ["{knot} received {refs}."] # Can also be specified via environment variable `KNOT_MESSAGES_PUSH_PULL_REQUEST`. # Default value: ["", "-> Open pull request for this branch:", " {url}", ""] #pull_request = ["", "-> Open pull request for this branch:", " {url}", ""] # Can also be specified via environment variable `KNOT_MESSAGES_PUSH_PIPELINE_CLEAN`. # Default value: ["pipeline compiled with no diagnostics"] #pipeline_clean = ["pipeline compiled with no diagnostics"] # Can also be specified via environment variable `KNOT_MESSAGES_PUSH_PIPELINE_NONE`. # Default value: ["no pipelines to compile"] #pipeline_none = ["no pipelines to compile"] [messages.fetch] # Can also be specified via environment variable `KNOT_MESSAGES_FETCH_MOTD`. # Default value: ["Thanks for using {knot}!"] #motd = ["Thanks for using {knot}!"] # Can also be specified via environment variable `KNOT_MESSAGES_FETCH_ENUMERATING`. # Default value: ["Enumerating objects: {count}, done."] #enumerating = ["Enumerating objects: {count}, done."] # Can also be specified via environment variable `KNOT_MESSAGES_FETCH_TOTAL`. # Default value: ["Total {count}, done."] #total = ["Total {count}, done."] # Can also be specified via environment variable `KNOT_MESSAGES_FETCH_FATAL`. # Default value: "knot: {error}" #fatal = "knot: {error}" [messages.reject] # Can also be specified via environment variable `KNOT_MESSAGES_REJECT_RESERVED_REFS`. # Default value: "refs/cobs/*, refs/cob-checkpoints/*, refs/hidden/*, refs/atproto/* and refs/tngl/* are reserved and can't be pushed" #reserved_refs = "refs/cobs/*, refs/cob-checkpoints/*, refs/hidden/*, refs/atproto/* and refs/tngl/* are reserved and can't be pushed" # Can also be specified via environment variable `KNOT_MESSAGES_REJECT_COB_CREATE_ONLY`. # 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" # Can also be specified via environment variable `KNOT_MESSAGES_REJECT_COB_DELETE`. # 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" # Can also be specified via environment variable `KNOT_MESSAGES_REJECT_HIDDEN_RESERVED`. # Default value: "refs/hidden/* is reserved and can't be pushed" #hidden_reserved = "refs/hidden/* is reserved and can't be pushed" # Can also be specified via environment variable `KNOT_MESSAGES_REJECT_ATPROTO_RESERVED`. # Default value: "refs/atproto/* is reserved for the knot's atproto commit chain and can't be pushed" #atproto_reserved = "refs/atproto/* is reserved for the knot's atproto commit chain and can't be pushed" # Can also be specified via environment variable `KNOT_MESSAGES_REJECT_TNGL_RESERVED`. # Default value: "refs/tngl/* is reserved for knot-written keep refs and can't be pushed" #tngl_reserved = "refs/tngl/* is reserved for knot-written keep refs and can't be pushed" # Can also be specified via environment variable `KNOT_MESSAGES_REJECT_CHECKPOINT_RESERVED`. # Default value: "refs/cob-checkpoints/* is reserved for knot-written collaborative-object snapshots and can't be pushed" #checkpoint_reserved = "refs/cob-checkpoints/* is reserved for knot-written collaborative-object snapshots and can't be pushed" # Can also be specified via environment variable `KNOT_MESSAGES_REJECT_COB_VERIFICATION`. # Default value: "collaborative-object verification failed: {error}" #cob_verification = "collaborative-object verification failed: {error}" # Can also be specified via environment variable `KNOT_MESSAGES_REJECT_REF_EXISTS`. # Default value: "reference already exists" #ref_exists = "reference already exists" # Can also be specified via environment variable `KNOT_MESSAGES_REJECT_STALE_OLD_VALUE`. # Default value: "stale info: old value doesn't match" #stale_old_value = "stale info: old value doesn't match" # Can also be specified via environment variable `KNOT_MESSAGES_REJECT_MISSING_OBJECTS`. # Default value: "missing necessary objects" #missing_objects = "missing necessary objects" # Can also be specified via environment variable `KNOT_MESSAGES_REJECT_MISSING_OBJECTS_FOR`. # Default value: "missing necessary objects for {ref}" #missing_objects_for = "missing necessary objects for {ref}" # Can also be specified via environment variable `KNOT_MESSAGES_REJECT_ATOMIC_FAILED`. # Default value: "atomic transaction failed" #atomic_failed = "atomic transaction failed" # Can also be specified via environment variable `KNOT_MESSAGES_REJECT_ATOMIC_ABORTED`. # Default value: "atomic push aborted" #atomic_aborted = "atomic push aborted" # Can also be specified via environment variable `KNOT_MESSAGES_REJECT_AUTHORIZATION_UNAVAILABLE`. # Default value: "authorization unavailable" #authorization_unavailable = "authorization unavailable" # Can also be specified via environment variable `KNOT_MESSAGES_REJECT_UNPACKER_ERROR`. # Default value: "unpacker error" #unpacker_error = "unpacker error" # Can also be specified via environment variable `KNOT_MESSAGES_REJECT_REF_SNAPSHOT_UNAVAILABLE`. # Default value: "ref snapshot unavailable" #ref_snapshot_unavailable = "ref snapshot unavailable" # Can also be specified via environment variable `KNOT_MESSAGES_REJECT_OBJECT_MIGRATION_FAILED`. # Default value: "object migration failed" #object_migration_failed = "object migration failed" [messages.ssh] # Can also be specified via environment variable `KNOT_MESSAGES_SSH_GREETING`. # 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}:"] #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}:"] # Can also be specified via environment variable `KNOT_MESSAGES_SSH_GREETING_UNKNOWN`. # 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}:", "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}:, 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}:", "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}:, so your ssh client can find your registered key on its own."] # Can also be specified via environment variable `KNOT_MESSAGES_SSH_UNSUPPORTED_COMMAND`. # Default value: "knot: unsupported command" #unsupported_command = "knot: unsupported command" # Can also be specified via environment variable `KNOT_MESSAGES_SSH_TOO_MANY_OPERATIONS`. # 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" # Can also be specified via environment variable `KNOT_MESSAGES_SSH_REPO_NOT_FOUND`. # Default value: "knot: repository not found" #repo_not_found = "knot: repository not found" # Can also be specified via environment variable `KNOT_MESSAGES_SSH_INDEX_WARMING`. # Default value: "knot: repository index is warming, retry shortly" #index_warming = "knot: repository index is warming, retry shortly" # Can also be specified via environment variable `KNOT_MESSAGES_SSH_KEY_NOT_REGISTERED`. # 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." # Can also be specified via environment variable `KNOT_MESSAGES_SSH_IDENTITY_UNAVAILABLE`. # 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" # Can also be specified via environment variable `KNOT_MESSAGES_SSH_PUSH_DENIED`. # Default value: "knot: you aren't authorized to push to this repository." #push_denied = "knot: you aren't authorized to push to this repository." # Can also be specified via environment variable `KNOT_MESSAGES_SSH_SHUTTING_DOWN`. # Default value: "knot: server is shutting down" #shutting_down = "knot: server is shutting down" # Can also be specified via environment variable `KNOT_MESSAGES_SSH_ARCHIVE_MALFORMED`. # Default value: "knot: malformed upload-archive request" #archive_malformed = "knot: malformed upload-archive request" # Can also be specified via environment variable `KNOT_MESSAGES_SSH_ARCHIVE_TIMEOUT`. # Default value: "knot: upload-archive request timed out" #archive_timeout = "knot: upload-archive request timed out" # Can also be specified via environment variable `KNOT_MESSAGES_SSH_ARCHIVE_FAILED`. # Default value: "knot: upload-archive failed" #archive_failed = "knot: upload-archive failed" # Can also be specified via environment variable `KNOT_MESSAGES_SSH_ADVERTISE_FAILED`. # Default value: "knot: cannot advertise refs" #advertise_failed = "knot: cannot advertise refs" # Can also be specified via environment variable `KNOT_MESSAGES_SSH_PUSH_TOO_LARGE`. # Default value: "knot: push exceeds configured size limit" #push_too_large = "knot: push exceeds configured size limit" # Can also be specified via environment variable `KNOT_MESSAGES_SSH_RECEIVE_DEADLINE`. # Default value: "knot: receive exceeded its time budget" #receive_deadline = "knot: receive exceeded its time budget" # Can also be specified via environment variable `KNOT_MESSAGES_SSH_MALFORMED_PACK`. # Default value: "knot: malformed pack stream" #malformed_pack = "knot: malformed pack stream" # Can also be specified via environment variable `KNOT_MESSAGES_SSH_RECEIVE_READ_ERROR`. # Default value: "knot: receive read error" #receive_read_error = "knot: receive read error" # Can also be specified via environment variable `KNOT_MESSAGES_SSH_RECEIVE_ENDED_EARLY`. # Default value: "knot: receive stream ended early" #receive_ended_early = "knot: receive stream ended early" # Can also be specified via environment variable `KNOT_MESSAGES_SSH_RECEIVE_FAILED`. # Default value: "knot: receive-pack failed" #receive_failed = "knot: receive-pack failed" [messages.http] # Can also be specified via environment variable `KNOT_MESSAGES_HTTP_PUSH_DENIED`. # Default value: "you aren't authorized to push to this repository" #push_denied = "you aren't authorized to push to this repository" # Can also be specified via environment variable `KNOT_MESSAGES_HTTP_REPO_NOT_FOUND`. # Default value: "repository not found" #repo_not_found = "repository not found" # Can also be specified via environment variable `KNOT_MESSAGES_HTTP_PUSH_TOO_LARGE`. # Default value: "push exceeds the configured size limit" #push_too_large = "push exceeds the configured size limit" # Can also be specified via environment variable `KNOT_MESSAGES_HTTP_MALFORMED_PACK`. # Default value: "malformed pack stream: {error}" #malformed_pack = "malformed pack stream: {error}" # Can also be specified via environment variable `KNOT_MESSAGES_HTTP_RECEIVE_ENDED_EARLY`. # Default value: "receive stream ended early" #receive_ended_early = "receive stream ended early" [messages.lfs] # Can also be specified via environment variable `KNOT_MESSAGES_LFS_INVALID_OID`. # Default value: "invalid LFS oid {value}" #invalid_oid = "invalid LFS oid {value}" # Can also be specified via environment variable `KNOT_MESSAGES_LFS_HASH_MISMATCH`. # Default value: "oid mismatch, declared {declared}, computed {computed}" #hash_mismatch = "oid mismatch, declared {declared}, computed {computed}" # Can also be specified via environment variable `KNOT_MESSAGES_LFS_SIZE_MISMATCH`. # Default value: "size mismatch, declared {declared}, received {received}" #size_mismatch = "size mismatch, declared {declared}, received {received}" # Can also be specified via environment variable `KNOT_MESSAGES_LFS_SIZE_LIMIT_EXCEEDED`. # Default value: "object size {declared} exceeds limit {limit}" #size_limit_exceeded = "object size {declared} exceeds limit {limit}" # Can also be specified via environment variable `KNOT_MESSAGES_LFS_FREE_SPACE_DENIED`. # Default value: "free space {free} below floor {floor}" #free_space_denied = "free space {free} below floor {floor}" # Can also be specified via environment variable `KNOT_MESSAGES_LFS_NOT_FOUND`. # Default value: "object {oid} not found" #not_found = "object {oid} not found" # Can also be specified via environment variable `KNOT_MESSAGES_LFS_FRAMING`. # Default value: "protocol framing fault: {detail}" #framing = "protocol framing fault: {detail}" # Can also be specified via environment variable `KNOT_MESSAGES_LFS_TOO_MANY`. # Default value: "too many {what} in one message, limit {limit}" #too_many = "too many {what} in one message, limit {limit}" # Can also be specified via environment variable `KNOT_MESSAGES_LFS_UNKNOWN_COMMAND`. # Default value: "unknown command {command}" #unknown_command = "unknown command {command}" # Can also be specified via environment variable `KNOT_MESSAGES_LFS_UNSUPPORTED_VERSION`. # Default value: "unsupported version {version}" #unsupported_version = "unsupported version {version}" # Can also be specified via environment variable `KNOT_MESSAGES_LFS_UNSUPPORTED_HASH`. # Default value: "unsupported hash algorithm {algorithm}" #unsupported_hash = "unsupported hash algorithm {algorithm}" # Can also be specified via environment variable `KNOT_MESSAGES_LFS_PUT_ON_DOWNLOAD`. # Default value: "put-object isn't allowed on a download channel" #put_on_download = "put-object isn't allowed on a download channel" # Can also be specified via environment variable `KNOT_MESSAGES_LFS_VERIFY_ON_DOWNLOAD`. # Default value: "verify-object isn't allowed on a download channel" #verify_on_download = "verify-object isn't allowed on a download channel" # Can also be specified via environment variable `KNOT_MESSAGES_LFS_GET_ON_UPLOAD`. # Default value: "get-object isn't allowed on an upload channel" #get_on_upload = "get-object isn't allowed on an upload channel" # Can also be specified via environment variable `KNOT_MESSAGES_LFS_PUT_NO_BODY`. # Default value: "put-object is missing its object body" #put_no_body = "put-object is missing its object body"