Monorepo for Tangled
tangled.org
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[repo]
111# Can also be specified via environment variable `KNOT_SCAN_PATH`.
112# Required! This value must be specified.
113#scan_path =
114
115# Can also be specified via environment variable `KNOT_DEFAULT_BRANCH`.
116# Default value: "main"
117#default_branch = "main"
118
119[git]
120# Committer identity stamped on merge commits the knot creates.
121#
122# Can also be specified via environment variable `KNOT_GIT_USER_NAME`.
123#
124# Default value: "Tangled"
125#user_name = "Tangled"
126
127# Can also be specified via environment variable `KNOT_GIT_USER_EMAIL`.
128# Default value: "noreply@tangled.sh"
129#user_email = "noreply@tangled.sh"
130
131# Can also be specified via environment variable `KNOT_GIT_OBJECT_FORMAT`.
132# Default value: "sha256"
133#object_format = "sha256"
134
135[secrets]
136# Can also be specified via environment variable `KNOT_SEALED_KEY_FILE`.
137# Required! This value must be specified.
138#sealed_key_file =
139
140# Can also be specified via environment variable `KNOT_MASTER_KEY_ENV`.
141# Required! This value must be specified.
142#master_key_env =
143
144[http]
145# Can also be specified via environment variable `KNOT_HTTP_CONNECT_TIMEOUT_MS`.
146# Default value: 5000
147#connect_timeout_ms = 5000
148
149# Can also be specified via environment variable `KNOT_HTTP_READ_TIMEOUT_MS`.
150# Default value: 30000
151#read_timeout_ms = 30000
152
153# Can also be specified via environment variable `KNOT_HTTP_REQUEST_TIMEOUT_MS`.
154# Default value: 60000
155#request_timeout_ms = 60000
156
157# Can also be specified via environment variable `KNOT_HTTP_MAX_RESPONSE_BYTES`.
158# Default value: 16777216
159#max_response_bytes = 16777216
160
161[atproto]
162# Can also be specified via environment variable `KNOT_PLC_DIRECTORY`.
163# Required! This value must be specified.
164#plc_directory =
165
166[xrpc]
167# Can also be specified via environment variable `KNOT_XRPC_MAX_BODY_BYTES`.
168# Default value: 65536
169#max_body_bytes = 65536
170
171# Can also be specified via environment variable `KNOT_XRPC_MAX_RESPONSE_BYTES`.
172# Default value: 5242880
173#max_response_bytes = 5242880
174
175# Can also be specified via environment variable `KNOT_XRPC_MAX_ARCHIVE_BYTES`.
176# Default value: 1073741824
177#max_archive_bytes = 1073741824
178
179# Can also be specified via environment variable `KNOT_XRPC_TREE_LAST_COMMIT_BUDGET_MS`.
180# Default value: 300
181#tree_last_commit_budget_ms = 300
182
183# Can also be specified via environment variable `KNOT_XRPC_BLOB_LAST_COMMIT_BUDGET_MS`.
184# Default value: 2000
185#blob_last_commit_budget_ms = 2000
186
187# Can also be specified via environment variable `KNOT_XRPC_LANGUAGES_BUDGET_MS`.
188# Default value: 1000
189#languages_budget_ms = 1000
190
191# Can also be specified via environment variable `KNOT_XRPC_LANGUAGES_PUSH_BUDGET_MS`.
192# Default value: 2000
193#languages_push_budget_ms = 2000
194
195# Body limit for the merge and mergeCheck procedures, whose patch payloads
196# routinely exceed the general XRPC body limit.
197#
198# Can also be specified via environment variable `KNOT_XRPC_MAX_PATCH_BYTES`.
199#
200# Default value: 16777216
201#max_patch_bytes = 16777216
202
203# Limit on the total decompressed size of a patch the merge procedures parse,
204# bounding binary-delta inflation and hunk expansion apart from the
205# compressed body limit above.
206#
207# Can also be specified via environment variable `KNOT_XRPC_MAX_PATCH_DECOMPRESSED_BYTES`.
208#
209# Default value: 134217728
210#max_patch_decompressed_bytes = 134217728
211
212# Can also be specified via environment variable `KNOT_XRPC_PREAUTH_BURST`.
213# Default value: 20
214#preauth_burst = 20
215
216# Can also be specified via environment variable `KNOT_XRPC_PREAUTH_REFILL_MS`.
217# Default value: 100
218#preauth_refill_ms = 100
219
220# Can also be specified via environment variable `KNOT_XRPC_PER_PEER_INFLIGHT`.
221# Default value: 8
222#per_peer_inflight = 8
223
224# Can also be specified via environment variable `KNOT_XRPC_GLOBAL_INFLIGHT`.
225# Default value: 64
226#global_inflight = 64
227
228# Can also be specified via environment variable `KNOT_XRPC_MAX_PENDING_RESERVATIONS`.
229# Default value: 256
230#max_pending_reservations = 256
231
232# Per-account limit on reserved repository keys awaiting creation, so one
233# account cannot consume the whole pending-reservation budget.
234#
235# Can also be specified via environment variable `KNOT_XRPC_PER_ACTOR_RESERVATIONS`.
236#
237# Default value: 32
238#per_actor_reservations = 32
239
240# How long a reserved repository key is held before it lapses and its
241# sealed key is reclaimed, in seconds.
242#
243# Can also be specified via environment variable `KNOT_XRPC_RESERVATION_TTL_SECS`.
244#
245# Default value: 3600
246#reservation_ttl_secs = 3600
247
248# Can also be specified via environment variable `KNOT_XRPC_FORK_MAX_PACK_BYTES`.
249# Default value: 1073741824
250#fork_max_pack_bytes = 1073741824
251
252# Can also be specified via environment variable `KNOT_XRPC_FORK_FETCH_TIMEOUT_MS`.
253# Default value: 600000
254#fork_fetch_timeout_ms = 600000
255
256# When the knot runs behind a trusted reverse proxy that terminates TLS,
257# set this to the header the proxy appends the client address to, for
258# example x-forwarded-for. The rightmost entry is used. Leave unset when
259# the knot is directly exposed so the socket peer address is used. Only set
260# this when a trusted proxy overwrites or appends the header, since a client
261# can forge it otherwise.
262#
263# Can also be specified via environment variable `KNOT_XRPC_TRUSTED_PROXY_HEADER`.
264#trusted_proxy_header =
265
266# Can also be specified via environment variable `KNOT_XRPC_EVENTS_REPLAY_BUFFER`.
267# Default value: 4096
268#events_replay_buffer = 4096
269
270# Can also be specified via environment variable `KNOT_XRPC_EVENTS_REPLAY_BYTES`.
271# Default value: 67108864
272#events_replay_bytes = 67108864
273
274# Can also be specified via environment variable `KNOT_XRPC_EVENTS_MAX_SUBSCRIBERS`.
275# Default value: 256
276#events_max_subscribers = 256
277
278# Can also be specified via environment variable `KNOT_XRPC_EVENTS_MAX_PER_PEER`.
279# Default value: 8
280#events_max_per_peer = 8
281
282[maintenance]
283# Can also be specified via environment variable `KNOT_MAINTENANCE_ENABLED`.
284# Default value: true
285#enabled = true
286
287# Can also be specified via environment variable `KNOT_MAINTENANCE_COMMIT_GRAPH`.
288# Default value: true
289#commit_graph = true
290
291# Can also be specified via environment variable `KNOT_MAINTENANCE_MULTI_PACK_INDEX`.
292# Default value: true
293#multi_pack_index = true
294
295# Can also be specified via environment variable `KNOT_MAINTENANCE_BITMAP`.
296# Default value: true
297#bitmap = true
298
299# Can also be specified via environment variable `KNOT_MAINTENANCE_INTERVAL_SECS`.
300# Default value: 21600
301#interval_secs = 21600
302
303# Can also be specified via environment variable `KNOT_MAINTENANCE_REPACK_MAX_OBJECTS`.
304# Default value: 16000000
305#repack_max_objects = 16000000
306
307# Can also be specified via environment variable `KNOT_MAINTENANCE_REPACK_GEOMETRIC_FACTOR`.
308# Default value: 2
309#repack_geometric_factor = 2
310
311# Can also be specified via environment variable `KNOT_MAINTENANCE_PRUNE_GRACE_SECS`.
312# Default value: 1209600
313#prune_grace_secs = 1209600
314
315# Can also be specified via environment variable `KNOT_MAINTENANCE_REFLOG_EXPIRE_SECS`.
316# Default value: 7776000
317#reflog_expire_secs = 7776000
318
319# Can also be specified via environment variable `KNOT_MAINTENANCE_LARGE_PUSH_BYTES`.
320# Default value: 52428800
321#large_push_bytes = 52428800
322
323[pack_cache]
324# Can also be specified via environment variable `KNOT_PACK_CACHE_ENABLED`.
325# Default value: true
326#enabled = true
327
328# Can also be specified via environment variable `KNOT_PACK_CACHE_TTL_SECS`.
329# Default value: 60
330#ttl_secs = 60
331
332# Can also be specified via environment variable `KNOT_PACK_CACHE_MAX_ENTRY_BYTES`.
333# Default value: 67108864
334#max_entry_bytes = 67108864
335
336# Can also be specified via environment variable `KNOT_PACK_CACHE_MAX_TOTAL_BYTES`.
337# Default value: 2147483648
338#max_total_bytes = 2147483648
339
340[pack]
341# Can also be specified via environment variable `KNOT_PACK_MAX_OBJECTS`.
342# Default value: 16000000
343#max_objects = 16000000
344
345# Can also be specified via environment variable `KNOT_PACK_MAX_TOTAL_BYTES`.
346# Default value: 68719476736
347#max_total_bytes = 68719476736
348
349# Can also be specified via environment variable `KNOT_PACK_SELECTION_MAX_OBJECTS`.
350# Default value: 16000000
351#selection_max_objects = 16000000
352
353# Can also be specified via environment variable `KNOT_PACK_SELECTION_TIME_BUDGET_SECS`.
354# Default value: 600
355#selection_time_budget_secs = 600
356
357[lfs]
358# Can also be specified via environment variable `KNOT_LFS_STORE_PATH`.
359#store_path =
360
361# Can also be specified via environment variable `KNOT_LFS_MAX_OBJECT_BYTES`.
362# Default value: 5368709120
363#max_object_bytes = 5368709120
364
365# Can also be specified via environment variable `KNOT_LFS_FREE_SPACE_FLOOR_BYTES`.
366# Default value: 1073741824
367#free_space_floor_bytes = 1073741824
368
369# Can also be specified via environment variable `KNOT_LFS_GC_GRACE_SECS`.
370# Default value: 1209600
371#gc_grace_secs = 1209600
372
373# Can also be specified via environment variable `KNOT_LFS_GC_INTERVAL_SECS`.
374# Default value: 21600
375#gc_interval_secs = 21600
376
377# Can also be specified via environment variable `KNOT_LFS_MAX_SSH_TRANSFERS`.
378# Default value: 16
379#max_ssh_transfers = 16
380
381# Can also be specified via environment variable `KNOT_LFS_MAX_HTTP_DOWNLOADS`.
382# Default value: 64
383#max_http_downloads = 64
384
385[resources]
386# Can also be specified via environment variable `KNOT_MAX_THREADS`.
387# Default value: 0
388#max_threads = 0
389
390# Can also be specified via environment variable `KNOT_MAX_MEMORY_BYTES`.
391# Default value: 0
392#max_memory_bytes = 0
393
394[homepage]
395# Can also be specified via environment variable `KNOT_HOMEPAGE_ENABLED`.
396# Default value: true
397#enabled = true
398
399# Can also be specified via environment variable `KNOT_HOMEPAGE_PATH`.
400#path =
401
402[ci]
403# Can also be specified via environment variable `KNOT_CI_LOGS_ADDR`.
404#logs_addr =
405
406[messages]
407[messages.push]
408# Default value: ["{knot} received {refs}."]
409#ack = ["{knot} received {refs}."]
410
411# Default value: ["", "-> Open stinky pull request for this branch:", " {url}", ""]
412#pull_request = ["", "-> Open stinky pull request for this branch:", " {url}", ""]
413
414# Default value: ["pipeline compiled with no diagnostics"]
415#pipeline_clean = ["pipeline compiled with no diagnostics"]
416
417# Default value: ["no pipelines to compile"]
418#pipeline_none = ["no pipelines to compile"]
419
420# Default value: ["-> Browse CI logs in your terminal:", " ssh -t -p {port} {host} {repo} {sha}"]
421#ci_logs = ["-> Browse CI logs in your terminal:", " ssh -t -p {port} {host} {repo} {sha}"]
422
423[messages.fetch]
424# Default value: ["Thanks for using {knot}!"]
425#motd = ["Thanks for using {knot}!"]
426
427# Default value: ["Enumerating objects: {count}, done."]
428#enumerating = ["Enumerating objects: {count}, done."]
429
430# Default value: ["Total {count}, done."]
431#total = ["Total {count}, done."]
432
433# Default value: "knot: {error}"
434#fatal = "knot: {error}"
435
436[messages.reject]
437# Default value: "refs/cobs/* and refs/hidden/* are reserved and cannot be pushed"
438#reserved_refs = "refs/cobs/* and refs/hidden/* are reserved and cannot be pushed"
439
440# Default value: "existing refs/cobs/* object cannot be modified or deleted over the wire"
441#cob_create_only = "existing refs/cobs/* object cannot be modified or deleted over the wire"
442
443# Default value: "refs/cobs/* stores append-only collaborative objects and cannot be deleted"
444#cob_delete = "refs/cobs/* stores append-only collaborative objects and cannot be deleted"
445
446# Default value: "refs/hidden/* is reserved for server-side fork staging and cannot be pushed"
447#hidden_reserved = "refs/hidden/* is reserved for server-side fork staging and cannot be pushed"
448
449# Default value: "collaborative-object verification failed: {error}"
450#cob_verification = "collaborative-object verification failed: {error}"
451
452# Default value: "reference already exists"
453#ref_exists = "reference already exists"
454
455# Default value: "stale info: old value doesn't match"
456#stale_old_value = "stale info: old value doesn't match"
457
458# Default value: "missing necessary objects"
459#missing_objects = "missing necessary objects"
460
461# Default value: "missing necessary objects for {ref}"
462#missing_objects_for = "missing necessary objects for {ref}"
463
464# Default value: "atomic transaction failed"
465#atomic_failed = "atomic transaction failed"
466
467# Default value: "atomic push aborted"
468#atomic_aborted = "atomic push aborted"
469
470# Default value: "authorization unavailable"
471#authorization_unavailable = "authorization unavailable"
472
473# Default value: "unpacker error"
474#unpacker_error = "unpacker error"
475
476# Default value: "ref snapshot unavailable"
477#ref_snapshot_unavailable = "ref snapshot unavailable"
478
479# Default value: "object migration failed"
480#object_migration_failed = "object migration failed"
481
482[messages.ssh]
483# 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>"]
484#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>"]
485
486# Default value: "knot: unsupported command"
487#unsupported_command = "knot: unsupported command"
488
489# Default value: "knot: too many concurrent operations from your address, try again shortly"
490#too_many_operations = "knot: too many concurrent operations from your address, try again shortly"
491
492# Default value: "knot: repository not found"
493#repo_not_found = "knot: repository not found"
494
495# Default value: "knot: repository index is warming, retry shortly"
496#index_warming = "knot: repository index is warming, retry shortly"
497
498# Default value: "knot: LFS isn't enabled on this knot"
499#lfs_disabled = "knot: LFS isn't enabled on this knot"
500
501# 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."
502#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."
503
504# Default value: "knot: you aren't authorized to push to this repository."
505#push_denied = "knot: you aren't authorized to push to this repository."
506
507# Default value: "knot: server is shutting down"
508#shutting_down = "knot: server is shutting down"
509
510# Default value: "knot: malformed upload-archive request"
511#archive_malformed = "knot: malformed upload-archive request"
512
513# Default value: "knot: upload-archive request timed out"
514#archive_timeout = "knot: upload-archive request timed out"
515
516# Default value: "knot: upload-archive failed"
517#archive_failed = "knot: upload-archive failed"
518
519# Default value: "knot: cannot advertise refs"
520#advertise_failed = "knot: cannot advertise refs"
521
522# Default value: "knot: push exceeds configured size limit"
523#push_too_large = "knot: push exceeds configured size limit"
524
525# Default value: "knot: receive exceeded its time budget"
526#receive_deadline = "knot: receive exceeded its time budget"
527
528# Default value: "knot: malformed pack stream"
529#malformed_pack = "knot: malformed pack stream"
530
531# Default value: "knot: receive read error"
532#receive_read_error = "knot: receive read error"
533
534# Default value: "knot: receive stream ended early"
535#receive_ended_early = "knot: receive stream ended early"
536
537# Default value: "knot: receive-pack failed"
538#receive_failed = "knot: receive-pack failed"
539
540[messages.http]
541# Default value: "you aren't authorized to push to this repository"
542#push_denied = "you aren't authorized to push to this repository"
543
544# Default value: "repository not found"
545#repo_not_found = "repository not found"
546
547# Default value: "push exceeds the configured size limit"
548#push_too_large = "push exceeds the configured size limit"
549
550# Default value: "malformed pack stream: {error}"
551#malformed_pack = "malformed pack stream: {error}"
552
553# Default value: "receive stream ended early"
554#receive_ended_early = "receive stream ended early"
555
556[messages.lfs]
557# Default value: "invalid LFS oid {value}"
558#invalid_oid = "invalid LFS oid {value}"
559
560# Default value: "oid mismatch, declared {declared}, computed {computed}"
561#hash_mismatch = "oid mismatch, declared {declared}, computed {computed}"
562
563# Default value: "size mismatch, declared {declared}, received {received}"
564#size_mismatch = "size mismatch, declared {declared}, received {received}"
565
566# Default value: "object size {declared} exceeds limit {limit}"
567#size_limit_exceeded = "object size {declared} exceeds limit {limit}"
568
569# Default value: "free space {free} below floor {floor}"
570#free_space_denied = "free space {free} below floor {floor}"
571
572# Default value: "object {oid} not found"
573#not_found = "object {oid} not found"
574
575# Default value: "protocol framing fault: {detail}"
576#framing = "protocol framing fault: {detail}"
577
578# Default value: "too many {what} in one message, limit {limit}"
579#too_many = "too many {what} in one message, limit {limit}"
580
581# Default value: "unknown command {command}"
582#unknown_command = "unknown command {command}"
583
584# Default value: "unsupported version {version}"
585#unsupported_version = "unsupported version {version}"
586
587# Default value: "unsupported hash algorithm {algorithm}"
588#unsupported_hash = "unsupported hash algorithm {algorithm}"
589
590# Default value: "put-object isn't allowed on a download channel"
591#put_on_download = "put-object isn't allowed on a download channel"
592
593# Default value: "verify-object isn't allowed on a download channel"
594#verify_on_download = "verify-object isn't allowed on a download channel"
595
596# Default value: "get-object isn't allowed on an upload channel"
597#get_on_upload = "get-object isn't allowed on an upload channel"
598
599# Default value: "put-object is missing its object body"
600#put_no_body = "put-object is missing its object body"