This repository has no description
1[server]
2# Can also be specified via environment variable `KNOT_HOSTNAME`.
3# Required! This value must be specified.
4#hostname =
5
6# Can also be specified via environment variable `KNOT_ADMINS`.
7# Required! This value must be specified.
8#admins =
9
10# Can also be specified via environment variable `KNOT_LISTEN_ADDR`.
11# Default value: "[::]:5555"
12#listen_addr = "[::]:5555"
13
14# Can also be specified via environment variable `KNOT_LISTEN_HEADER_TIMEOUT_MS`.
15# Default value: 10000
16#listen_header_timeout_ms = 10000
17
18# Can also be specified via environment variable `KNOT_LISTEN_IDLE_TIMEOUT_MS`.
19# Default value: 60000
20#listen_idle_timeout_ms = 60000
21
22# Can also be specified via environment variable `KNOT_LISTEN_MAX_CONNECTIONS`.
23# Default value: 1024
24#listen_max_connections = 1024
25
26# Can also be specified via environment variable `KNOT_LISTEN_RATE_LIMIT_PER_SECOND`.
27# Default value: 50
28#listen_rate_limit_per_second = 50
29
30# Can also be specified via environment variable `KNOT_LISTEN_RATE_LIMIT_BURST`.
31# Default value: 200
32#listen_rate_limit_burst = 200
33
34# Can also be specified via environment variable `KNOT_LISTEN_MAX_INFLIGHT_REQUESTS`.
35# Default value: 1024
36#listen_max_inflight_requests = 1024
37
38# Can also be specified via environment variable `KNOT_LISTEN_REQUEST_TIMEOUT_MS`.
39# Default value: 60000
40#listen_request_timeout_ms = 60000
41
42# Can also be specified via environment variable `KNOT_LISTEN_BODY_TIMEOUT_MS`.
43# Default value: 30000
44#listen_body_timeout_ms = 30000
45
46# Can also be specified via environment variable `KNOT_LISTEN_WRITE_REQUEST_TIMEOUT_MS`.
47# Default value: 1800000
48#listen_write_request_timeout_ms = 1800000
49
50# Can also be specified via environment variable `KNOT_INTERNAL_LISTEN_ADDR`.
51# Default value: "[::1]:5444"
52#internal_listen_addr = "[::1]:5444"
53
54# Can also be specified via environment variable `KNOT_SSH_LISTEN_ADDR`.
55# Default value: "[::]:2222"
56#ssh_listen_addr = "[::]:2222"
57
58# Can also be specified via environment variable `KNOT_SSH_HOST_KEY_FILE`.
59# Required! This value must be specified.
60#ssh_host_key_file =
61
62# Can also be specified via environment variable `KNOT_SSH_MAX_PACK_BYTES`.
63# Default value: 8589934592
64#ssh_max_pack_bytes = 8589934592
65
66# Can also be specified via environment variable `KNOT_APPVIEW_ENDPOINT`.
67# Default value: "https://tangled.org"
68#appview_endpoint = "https://tangled.org"
69
70[tls]
71# Can also be specified via environment variable `KNOT_TLS_CERT_PATH`.
72#cert_path =
73
74# Can also be specified via environment variable `KNOT_TLS_KEY_PATH`.
75#key_path =
76
77# Can also be specified via environment variable `KNOT_TLS_HTTP3`.
78# Default value: true
79#http3 = true
80
81# Can also be specified via environment variable `KNOT_TLS_ACME_ENABLED`.
82# Default value: false
83#acme_enabled = false
84
85# Can also be specified via environment variable `KNOT_TLS_ACME_CACHE_DIR`.
86#acme_cache_dir =
87
88# Can also be specified via environment variable `KNOT_TLS_ACME_CONTACT`.
89#acme_contact =
90
91# Can also be specified via environment variable `KNOT_TLS_ACME_STAGING`.
92# Default value: false
93#acme_staging = false
94
95# Can also be specified via environment variable `KNOT_TLS_MTLS_ENABLED`.
96# Default value: false
97#mtls_enabled = false
98
99# Can also be specified via environment variable `KNOT_TLS_MTLS_CLIENT_CA_PATH`.
100#mtls_client_ca_path =
101
102# Can also be specified via environment variable `KNOT_TLS_MTLS_ADMIN_SPKI_PIN`.
103#mtls_admin_spki_pin =
104
105[acl]
106# Can also be specified via environment variable `KNOT_ADMISSION`.
107# Default value: "closed"
108#admission = "closed"
109
110# Can also be specified via environment variable `KNOT_LEGACY_ADMIN_SECRET_ENV`.
111#legacy_admin_secret_env =
112
113[repo]
114# Can also be specified via environment variable `KNOT_SCAN_PATH`.
115# Required! This value must be specified.
116#scan_path =
117
118# Can also be specified via environment variable `KNOT_DEFAULT_BRANCH`.
119# Default value: "main"
120#default_branch = "main"
121
122[git]
123# Committer identity stamped on merge commits the knot creates.
124#
125# Can also be specified via environment variable `KNOT_GIT_USER_NAME`.
126#
127# Default value: "Tangled"
128#user_name = "Tangled"
129
130# Can also be specified via environment variable `KNOT_GIT_USER_EMAIL`.
131# Default value: "noreply@tangled.sh"
132#user_email = "noreply@tangled.sh"
133
134# Can also be specified via environment variable `KNOT_GIT_OBJECT_FORMAT`.
135# Default value: "sha256"
136#object_format = "sha256"
137
138[secrets]
139# Can also be specified via environment variable `KNOT_SEALED_KEY_FILE`.
140# Required! This value must be specified.
141#sealed_key_file =
142
143# Can also be specified via environment variable `KNOT_MASTER_KEY_ENV`.
144# Required! This value must be specified.
145#master_key_env =
146
147[http]
148# Can also be specified via environment variable `KNOT_HTTP_CONNECT_TIMEOUT_MS`.
149# Default value: 5000
150#connect_timeout_ms = 5000
151
152# Can also be specified via environment variable `KNOT_HTTP_READ_TIMEOUT_MS`.
153# Default value: 30000
154#read_timeout_ms = 30000
155
156# Can also be specified via environment variable `KNOT_HTTP_REQUEST_TIMEOUT_MS`.
157# Default value: 60000
158#request_timeout_ms = 60000
159
160# Can also be specified via environment variable `KNOT_HTTP_MAX_RESPONSE_BYTES`.
161# Default value: 16777216
162#max_response_bytes = 16777216
163
164[atproto]
165# Can also be specified via environment variable `KNOT_PLC_DIRECTORY`.
166# Required! This value must be specified.
167#plc_directory =
168
169[xrpc]
170# Can also be specified via environment variable `KNOT_XRPC_MAX_BODY_BYTES`.
171# Default value: 65536
172#max_body_bytes = 65536
173
174# Can also be specified via environment variable `KNOT_XRPC_MAX_RESPONSE_BYTES`.
175# Default value: 5242880
176#max_response_bytes = 5242880
177
178# Upper bound on bytes that a single archive spools,
179# across all our surfaces: the sh.tangled.repo.archive query,
180# `git archive --remote` over SSH,
181# and the smart HTTP archive route.
182# The knot will refuse writing smth that would blast an archive past this bound.
183#
184# Can also be specified via environment variable `KNOT_XRPC_MAX_ARCHIVE_BYTES`.
185#
186# Default value: 1073741824
187#max_archive_bytes = 1073741824
188
189# Can also be specified via environment variable `KNOT_XRPC_TREE_LAST_COMMIT_BUDGET_MS`.
190# Default value: 300
191#tree_last_commit_budget_ms = 300
192
193# Can also be specified via environment variable `KNOT_XRPC_BLOB_LAST_COMMIT_BUDGET_MS`.
194# Default value: 2000
195#blob_last_commit_budget_ms = 2000
196
197# Can also be specified via environment variable `KNOT_XRPC_LANGUAGES_BUDGET_MS`.
198# Default value: 1000
199#languages_budget_ms = 1000
200
201# Can also be specified via environment variable `KNOT_XRPC_LANGUAGES_PUSH_BUDGET_MS`.
202# Default value: 2000
203#languages_push_budget_ms = 2000
204
205# Body limit for the merge and mergeCheck procedures, whose patch payloads
206# routinely exceed the general XRPC body limit.
207#
208# Can also be specified via environment variable `KNOT_XRPC_MAX_PATCH_BYTES`.
209#
210# Default value: 16777216
211#max_patch_bytes = 16777216
212
213# Limit on the total decompressed size of a patch the merge procedures parse,
214# bounding binary-delta inflation and hunk expansion apart from the
215# compressed body limit above.
216#
217# Can also be specified via environment variable `KNOT_XRPC_MAX_PATCH_DECOMPRESSED_BYTES`.
218#
219# Default value: 134217728
220#max_patch_decompressed_bytes = 134217728
221
222# Can also be specified via environment variable `KNOT_XRPC_PREAUTH_BURST`.
223# Default value: 20
224#preauth_burst = 20
225
226# Can also be specified via environment variable `KNOT_XRPC_PREAUTH_REFILL_MS`.
227# Default value: 100
228#preauth_refill_ms = 100
229
230# Can also be specified via environment variable `KNOT_XRPC_PER_PEER_INFLIGHT`.
231# Default value: 8
232#per_peer_inflight = 8
233
234# Can also be specified via environment variable `KNOT_XRPC_GLOBAL_INFLIGHT`.
235# Default value: 64
236#global_inflight = 64
237
238# Can also be specified via environment variable `KNOT_XRPC_MAX_PENDING_RESERVATIONS`.
239# Default value: 256
240#max_pending_reservations = 256
241
242# Per-account limit on reserved repository keys awaiting creation, so one
243# account cannot consume the whole pending-reservation budget.
244#
245# Can also be specified via environment variable `KNOT_XRPC_PER_ACTOR_RESERVATIONS`.
246#
247# Default value: 32
248#per_actor_reservations = 32
249
250# How long a reserved repository key is held before it lapses and its
251# sealed key is reclaimed, in seconds.
252#
253# Can also be specified via environment variable `KNOT_XRPC_RESERVATION_TTL_SECS`.
254#
255# Default value: 3600
256#reservation_ttl_secs = 3600
257
258# Can also be specified via environment variable `KNOT_XRPC_FORK_MAX_PACK_BYTES`.
259# Default value: 1073741824
260#fork_max_pack_bytes = 1073741824
261
262# Can also be specified via environment variable `KNOT_XRPC_FORK_FETCH_TIMEOUT_MS`.
263# Default value: 600000
264#fork_fetch_timeout_ms = 600000
265
266# When the knot runs behind a trusted reverse proxy that terminates TLS,
267# set this to the header the proxy appends the client address to, for
268# example x-forwarded-for. The rightmost entry is used. Leave unset when
269# the knot is directly exposed so the socket peer address is used. Only set
270# this when a trusted proxy overwrites or appends the header, since a client
271# can forge it otherwise.
272#
273# Can also be specified via environment variable `KNOT_XRPC_TRUSTED_PROXY_HEADER`.
274#trusted_proxy_header =
275
276# IP addresses whose `trusted_proxy_header` the knot honors,
277# without a port,
278# for ex the loopback address of a reverse proxy on the same host.
279# The knot rate-limits a request from any other address
280# by its own socket address and ignores the header.
281# Leave empty to honor the header from every peer,
282# which is safe *only* if nothing but the proxy can reach this knot.
283#
284# Can also be specified via environment variable `KNOT_XRPC_TRUSTED_PROXIES`.
285#
286# Default value: []
287#trusted_proxies = []
288
289# Can also be specified via environment variable `KNOT_XRPC_EVENTS_REPLAY_BUFFER`.
290# Default value: 4096
291#events_replay_buffer = 4096
292
293# Can also be specified via environment variable `KNOT_XRPC_EVENTS_REPLAY_BYTES`.
294# Default value: 67108864
295#events_replay_bytes = 67108864
296
297# Can also be specified via environment variable `KNOT_XRPC_EVENTS_MAX_SUBSCRIBERS`.
298# Default value: 256
299#events_max_subscribers = 256
300
301# Can also be specified via environment variable `KNOT_XRPC_EVENTS_MAX_PER_PEER`.
302# Default value: 8
303#events_max_per_peer = 8
304
305[maintenance]
306# Can also be specified via environment variable `KNOT_MAINTENANCE_ENABLED`.
307# Default value: true
308#enabled = true
309
310# Can also be specified via environment variable `KNOT_MAINTENANCE_COMMIT_GRAPH`.
311# Default value: true
312#commit_graph = true
313
314# Can also be specified via environment variable `KNOT_MAINTENANCE_MULTI_PACK_INDEX`.
315# Default value: true
316#multi_pack_index = true
317
318# Can also be specified via environment variable `KNOT_MAINTENANCE_BITMAP`.
319# Default value: true
320#bitmap = true
321
322# Can also be specified via environment variable `KNOT_MAINTENANCE_INTERVAL_SECS`.
323# Default value: 21600
324#interval_secs = 21600
325
326# Can also be specified via environment variable `KNOT_MAINTENANCE_REPACK_MAX_OBJECTS`.
327# Default value: 16000000
328#repack_max_objects = 16000000
329
330# Can also be specified via environment variable `KNOT_MAINTENANCE_REPACK_GEOMETRIC_FACTOR`.
331# Default value: 2
332#repack_geometric_factor = 2
333
334# Can also be specified via environment variable `KNOT_MAINTENANCE_PRUNE_GRACE_SECS`.
335# Default value: 1209600
336#prune_grace_secs = 1209600
337
338# Can also be specified via environment variable `KNOT_MAINTENANCE_REFLOG_EXPIRE_SECS`.
339# Default value: 7776000
340#reflog_expire_secs = 7776000
341
342# Can also be specified via environment variable `KNOT_MAINTENANCE_LARGE_PUSH_BYTES`.
343# Default value: 52428800
344#large_push_bytes = 52428800
345
346[pack_cache]
347# Can also be specified via environment variable `KNOT_PACK_CACHE_ENABLED`.
348# Default value: true
349#enabled = true
350
351# Can also be specified via environment variable `KNOT_PACK_CACHE_TTL_SECS`.
352# Default value: 60
353#ttl_secs = 60
354
355# Can also be specified via environment variable `KNOT_PACK_CACHE_MAX_ENTRY_BYTES`.
356# Default value: 67108864
357#max_entry_bytes = 67108864
358
359# Can also be specified via environment variable `KNOT_PACK_CACHE_MAX_TOTAL_BYTES`.
360# Default value: 2147483648
361#max_total_bytes = 2147483648
362
363[pack]
364# Can also be specified via environment variable `KNOT_PACK_MAX_OBJECTS`.
365# Default value: 16000000
366#max_objects = 16000000
367
368# Can also be specified via environment variable `KNOT_PACK_MAX_TOTAL_BYTES`.
369# Default value: 68719476736
370#max_total_bytes = 68719476736
371
372# Can also be specified via environment variable `KNOT_PACK_SELECTION_MAX_OBJECTS`.
373# Default value: 16000000
374#selection_max_objects = 16000000
375
376# Can also be specified via environment variable `KNOT_PACK_SELECTION_TIME_BUDGET_SECS`.
377# Default value: 600
378#selection_time_budget_secs = 600
379
380[lfs]
381# Can also be specified via environment variable `KNOT_LFS_STORE_PATH`.
382#store_path =
383
384# Can also be specified via environment variable `KNOT_LFS_MAX_OBJECT_BYTES`.
385# Default value: 5368709120
386#max_object_bytes = 5368709120
387
388# Can also be specified via environment variable `KNOT_LFS_FREE_SPACE_FLOOR_BYTES`.
389# Default value: 1073741824
390#free_space_floor_bytes = 1073741824
391
392# Can also be specified via environment variable `KNOT_LFS_GC_GRACE_SECS`.
393# Default value: 1209600
394#gc_grace_secs = 1209600
395
396# Can also be specified via environment variable `KNOT_LFS_GC_INTERVAL_SECS`.
397# Default value: 21600
398#gc_interval_secs = 21600
399
400# Can also be specified via environment variable `KNOT_LFS_MAX_SSH_TRANSFERS`.
401# Default value: 16
402#max_ssh_transfers = 16
403
404# Can also be specified via environment variable `KNOT_LFS_MAX_HTTP_DOWNLOADS`.
405# Default value: 64
406#max_http_downloads = 64
407
408[resources]
409# Can also be specified via environment variable `KNOT_MAX_THREADS`.
410# Default value: 0
411#max_threads = 0
412
413# Can also be specified via environment variable `KNOT_MAX_MEMORY_BYTES`.
414# Default value: 0
415#max_memory_bytes = 0
416
417[homepage]
418# Can also be specified via environment variable `KNOT_HOMEPAGE_ENABLED`.
419# Default value: true
420#enabled = true
421
422# Can also be specified via environment variable `KNOT_HOMEPAGE_PATH`.
423#path =
424
425[ci]
426# Can also be specified via environment variable `KNOT_CI_LOGS_ADDR`.
427#logs_addr =
428
429[messages]
430[messages.push]
431# Default value: ["{knot} received {refs}."]
432#ack = ["{knot} received {refs}."]
433
434# Default value: ["", "-> Open stinky pull request for this branch:", " {url}", ""]
435#pull_request = ["", "-> Open stinky pull request for this branch:", " {url}", ""]
436
437# Default value: ["pipeline compiled with no diagnostics"]
438#pipeline_clean = ["pipeline compiled with no diagnostics"]
439
440# Default value: ["no pipelines to compile"]
441#pipeline_none = ["no pipelines to compile"]
442
443# Default value: ["-> Browse CI logs in your terminal:", " ssh -t -p {port} {host} {repo} {sha}"]
444#ci_logs = ["-> Browse CI logs in your terminal:", " ssh -t -p {port} {host} {repo} {sha}"]
445
446[messages.fetch]
447# Default value: ["Thanks for using {knot}!"]
448#motd = ["Thanks for using {knot}!"]
449
450# Default value: ["Enumerating objects: {count}, done."]
451#enumerating = ["Enumerating objects: {count}, done."]
452
453# Default value: ["Total {count}, done."]
454#total = ["Total {count}, done."]
455
456# Default value: "knot: {error}"
457#fatal = "knot: {error}"
458
459[messages.reject]
460# Default value: "refs/cobs/* and refs/hidden/* are reserved and cannot be pushed"
461#reserved_refs = "refs/cobs/* and refs/hidden/* are reserved and cannot be pushed"
462
463# Default value: "existing refs/cobs/* object cannot be modified or deleted over the wire"
464#cob_create_only = "existing refs/cobs/* object cannot be modified or deleted over the wire"
465
466# Default value: "refs/cobs/* stores append-only collaborative objects and cannot be deleted"
467#cob_delete = "refs/cobs/* stores append-only collaborative objects and cannot be deleted"
468
469# Default value: "refs/hidden/* is reserved for server-side fork staging and cannot be pushed"
470#hidden_reserved = "refs/hidden/* is reserved for server-side fork staging and cannot be pushed"
471
472# Default value: "collaborative-object verification failed: {error}"
473#cob_verification = "collaborative-object verification failed: {error}"
474
475# Default value: "reference already exists"
476#ref_exists = "reference already exists"
477
478# Default value: "stale info: old value doesn't match"
479#stale_old_value = "stale info: old value doesn't match"
480
481# Default value: "missing necessary objects"
482#missing_objects = "missing necessary objects"
483
484# Default value: "missing necessary objects for {ref}"
485#missing_objects_for = "missing necessary objects for {ref}"
486
487# Default value: "atomic transaction failed"
488#atomic_failed = "atomic transaction failed"
489
490# Default value: "atomic push aborted"
491#atomic_aborted = "atomic push aborted"
492
493# Default value: "authorization unavailable"
494#authorization_unavailable = "authorization unavailable"
495
496# Default value: "unpacker error"
497#unpacker_error = "unpacker error"
498
499# Default value: "ref snapshot unavailable"
500#ref_snapshot_unavailable = "ref snapshot unavailable"
501
502# Default value: "object migration failed"
503#object_migration_failed = "object migration failed"
504
505[messages.ssh]
506# 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>"]
507#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>"]
508
509# Default value: "knot: unsupported command"
510#unsupported_command = "knot: unsupported command"
511
512# Default value: "knot: too many concurrent operations from your address, try again shortly"
513#too_many_operations = "knot: too many concurrent operations from your address, try again shortly"
514
515# Default value: "knot: repository not found"
516#repo_not_found = "knot: repository not found"
517
518# Default value: "knot: repository index is warming, retry shortly"
519#index_warming = "knot: repository index is warming, retry shortly"
520
521# Default value: "knot: LFS isn't enabled on this knot"
522#lfs_disabled = "knot: LFS isn't enabled on this knot"
523
524# Default value: "knot: your ssh key isn't registered to a user authorized to push here. If you offer several keys, make sure the registered one is offered first."
525#key_not_registered = "knot: your ssh key isn't registered to a user authorized to push here. If you offer several keys, make sure the registered one is offered first."
526
527# Default value: "knot: you aren't authorized to push to this repository."
528#push_denied = "knot: you aren't authorized to push to this repository."
529
530# Default value: "knot: server is shutting down"
531#shutting_down = "knot: server is shutting down"
532
533# Default value: "knot: malformed upload-archive request"
534#archive_malformed = "knot: malformed upload-archive request"
535
536# Default value: "knot: upload-archive request timed out"
537#archive_timeout = "knot: upload-archive request timed out"
538
539# Default value: "knot: upload-archive failed"
540#archive_failed = "knot: upload-archive failed"
541
542# Default value: "knot: cannot advertise refs"
543#advertise_failed = "knot: cannot advertise refs"
544
545# Default value: "knot: push exceeds configured size limit"
546#push_too_large = "knot: push exceeds configured size limit"
547
548# Default value: "knot: receive exceeded its time budget"
549#receive_deadline = "knot: receive exceeded its time budget"
550
551# Default value: "knot: malformed pack stream"
552#malformed_pack = "knot: malformed pack stream"
553
554# Default value: "knot: receive read error"
555#receive_read_error = "knot: receive read error"
556
557# Default value: "knot: receive stream ended early"
558#receive_ended_early = "knot: receive stream ended early"
559
560# Default value: "knot: receive-pack failed"
561#receive_failed = "knot: receive-pack failed"
562
563[messages.http]
564# Default value: "you aren't authorized to push to this repository"
565#push_denied = "you aren't authorized to push to this repository"
566
567# Default value: "repository not found"
568#repo_not_found = "repository not found"
569
570# Default value: "push exceeds the configured size limit"
571#push_too_large = "push exceeds the configured size limit"
572
573# Default value: "malformed pack stream: {error}"
574#malformed_pack = "malformed pack stream: {error}"
575
576# Default value: "receive stream ended early"
577#receive_ended_early = "receive stream ended early"
578
579[messages.lfs]
580# Default value: "invalid LFS oid {value}"
581#invalid_oid = "invalid LFS oid {value}"
582
583# Default value: "oid mismatch, declared {declared}, computed {computed}"
584#hash_mismatch = "oid mismatch, declared {declared}, computed {computed}"
585
586# Default value: "size mismatch, declared {declared}, received {received}"
587#size_mismatch = "size mismatch, declared {declared}, received {received}"
588
589# Default value: "object size {declared} exceeds limit {limit}"
590#size_limit_exceeded = "object size {declared} exceeds limit {limit}"
591
592# Default value: "free space {free} below floor {floor}"
593#free_space_denied = "free space {free} below floor {floor}"
594
595# Default value: "object {oid} not found"
596#not_found = "object {oid} not found"
597
598# Default value: "protocol framing fault: {detail}"
599#framing = "protocol framing fault: {detail}"
600
601# Default value: "too many {what} in one message, limit {limit}"
602#too_many = "too many {what} in one message, limit {limit}"
603
604# Default value: "unknown command {command}"
605#unknown_command = "unknown command {command}"
606
607# Default value: "unsupported version {version}"
608#unsupported_version = "unsupported version {version}"
609
610# Default value: "unsupported hash algorithm {algorithm}"
611#unsupported_hash = "unsupported hash algorithm {algorithm}"
612
613# Default value: "put-object isn't allowed on a download channel"
614#put_on_download = "put-object isn't allowed on a download channel"
615
616# Default value: "verify-object isn't allowed on a download channel"
617#verify_on_download = "verify-object isn't allowed on a download channel"
618
619# Default value: "get-object isn't allowed on an upload channel"
620#get_on_upload = "get-object isn't allowed on an upload channel"
621
622# Default value: "put-object is missing its object body"
623#put_no_body = "put-object is missing its object body"