This repository has no description
1[server]
2# Addresses the XRPC server listens on. When using as an env var, comma-separated.
3#
4# Can also be specified via environment variable `BOBBIN_BIND`.
5#
6# Default value: ["127.0.0.1:8090", "[::1]:8090"]
7#binds = ["127.0.0.1:8090", "[::1]:8090"]
8
9# The amount of time in seconds to allow in-flight requests to drain after sigterm
10# before forcing the listener closed.
11#
12# Can also be specified via environment variable `BOBBIN_SHUTDOWN_GRACE_SECS`.
13#
14# Default value: 30
15#shutdown_grace_secs = 30
16
17# Address for the `/debug/mem` and `/debug/heap` introspection endpoints,
18# for example `127.0.0.1:8091`. Empty disables them so the debug surface is
19# never reachable on the public listener. Bind to loopback only.
20#
21# Can also be specified via environment variable `BOBBIN_DEBUG_BIND`.
22#
23# Default value: ""
24#debug_bind = ""
25
26# Reverse proxies in front of bobbin,
27# each a bare IP address without a port or a CIDR block such as `173.245.48.0/20`.
28# Bobbin will read the client address out of `x-forwarded-for`
29# and forward that one address to the knot
30# when a request arrives from a proxy on this list,
31# so a knot that lists bobbin under its own `xrpc.trusted_proxies`
32# can rate-limit per browser
33# instead of pooling everyone bobbin serves into a single bucket.
34# Bobbin will read the last 32 entries of the chain, at most.
35# Leave empty when bobbin takes connections directly,
36# since bobbin would otherwise believe a header any client can write.
37# When using as an env var, comma-separated.
38#
39# Can also be specified via environment variable `BOBBIN_TRUSTED_PROXIES`.
40#
41# Default value: []
42#trusted_proxies = []
43
44[hydrant]
45# Base URL of the hydrant instance - the cursor-replayable /stream lives
46# under this. Use `ws://` or `wss://` - `http://` and `https://`
47# are rewritten to the corresponding ws scheme at connection time!
48#
49# Can also be specified via environment variable `BOBBIN_HYDRANT_URL`.
50#
51# Default value: "http://127.0.0.1:13010"
52#url = "http://127.0.0.1:13010"
53
54# The cursor to request on first connect. Reconnects ignore this and resume
55# strictly after the last cursor seen internally.
56#
57# Can also be specified via environment variable `BOBBIN_START_CURSOR`.
58#
59# Default value: 0
60#start_cursor = 0
61
62[ingest]
63# Concurrent in-flight resolves during ingest. One slot per slingshot rtt.
64# Default 16 sits at the measured throughput
65# knee for cold replay against a healthy hydrant. The committer stays
66# serial so that like, cursor and Spur allocation order are preserved.
67#
68# Can also be specified via environment variable `BOBBIN_INGEST_PARALLELISM`.
69#
70# Default value: 16
71#parallelism = 16
72
73[backpressure]
74# Estimated peak transient anonymous bytes a single hydrating request holds:
75# roughly the page of decoded records plus its serialized copy. Combined with
76# the detected cgroup memory limit to size the in-flight cap on heavy
77# endpoints. Has no effect when no cgroup memory limit is present, the heavy
78# path stays unbounded exactly as before.
79#
80# Can also be specified via environment variable `BOBBIN_BACKPRESSURE_PER_REQUEST_ANON_BYTES`.
81#
82# Default value: 2097152
83#per_request_anon_bytes = 2097152
84
85# How often the adaptive watcher samples memory.current/memory.max and
86# adjusts the in-flight cap. Ignored when no cgroup memory limit is present.
87#
88# Can also be specified via environment variable `BOBBIN_BACKPRESSURE_ADJUST_INTERVAL_MS`.
89#
90# Default value: 500
91#adjust_interval_ms = 500
92
93# memory.current/memory.max ratio below which the watcher additively raises
94# the in-flight cap back toward its ceiling. Sits below the memory.high
95# throttle band so the kernel, not this loop, handles mild pressure.
96#
97# Can also be specified via environment variable `BOBBIN_BACKPRESSURE_RELIEVE_BELOW_RATIO`.
98#
99# Default value: 0.85
100#relieve_below_ratio = 0.85
101
102# memory.current/memory.max ratio above which the watcher multiplicatively
103# cuts the in-flight cap and purges jemalloc arenas. Set above the memory.high
104# watermark so this loop acts as the anti-OOM backstop, not a duplicate throttle.
105#
106# Can also be specified via environment variable `BOBBIN_BACKPRESSURE_TIGHTEN_ABOVE_RATIO`.
107#
108# Default value: 0.92
109#tighten_above_ratio = 0.92
110
111# Bytes held back for the edge index, state indexes, and other derived
112# state that grows after startup. Folded into the heavy-request reserve so
113# the static in-flight cap leaves the index room to fill. Has no effect when
114# no cgroup memory limit is present.
115#
116# Can also be specified via environment variable `BOBBIN_BACKPRESSURE_RESERVED_INDEX_BYTES`.
117#
118# Default value: 67108864
119#reserved_index_bytes = 67108864
120
121[slingshot]
122# Base URL of a slingshot instance. Used for record bodies and identity.
123#
124# Can also be specified via environment variable `BOBBIN_SLINGSHOT_URL`.
125#
126# Default value: "http://127.0.0.1:13011"
127#url = "http://127.0.0.1:13011"
128
129[record_cache]
130# Bound of bytes on the in-process record LRU. Records evict on a weighted
131# LRU policy keyed on URI plus payload length.
132#
133# Can also be specified via environment variable `BOBBIN_RECORD_LRU_BYTES`.
134#
135# Default value: 67108864
136#lru_bytes = 67108864
137
138[search]
139# The heap size in bytes for the in-mem tantivy writer. Larger values
140# trade RAM for fewer segment merges - the index itself lives in
141# `RamDirectory` and is rebuilt from hydrant replay on every restart.
142#
143# Can also be specified via environment variable `BOBBIN_SEARCH_HEAP_BYTES`.
144#
145# Default value: 50000000
146#heap_bytes = 50000000
147
148[knot]
149# Whether to allow the knot proxy to dial private/loopback addresses. Off in
150# production - on for local testing against a knotserver on localhost.
151#
152# Can also be specified via environment variable `BOBBIN_KNOT_ALLOW_PRIVATE`.
153#
154# Default value: false
155#allow_private = false
156
157# Require https on knot hosts. Disable only when proxying to a local
158# knot for development.
159#
160# Can also be specified via environment variable `BOBBIN_KNOT_REQUIRE_HTTPS`.
161#
162# Default value: true
163#require_https = true
164
165[log]
166# Log emitter format. `text` produces human-readable output for local
167# development. `json` emits one structured object per line for log
168# shippers in production.
169#
170# Can also be specified via environment variable `BOBBIN_LOG_FORMAT`.
171#
172# Default value: "text"
173#format = "text"
174
175# `tracing-subscriber` env-filter directive. Defaults to `info` across
176# every span - override with `BOBBIN_LOG=bobbin_xrpc=debug,info` etc.
177#
178# Can also be specified via environment variable `BOBBIN_LOG`.
179#
180# Default value: "info"
181#filter = "info"