pub struct Config {Show 35 fields
pub database_path: PathBuf,
pub full_network: bool,
pub ephemeral: bool,
pub ephemeral_ttl: Duration,
pub relays: Vec<FirehoseSource>,
pub plc_urls: Vec<Url>,
pub enable_firehose: bool,
pub firehose_workers: usize,
pub cursor_save_interval: Duration,
pub repo_fetch_timeout: Duration,
pub backfill_concurrency_limit: usize,
pub enable_crawler: Option<bool>,
pub crawler_max_pending_repos: usize,
pub crawler_resume_pending_repos: usize,
pub crawler_sources: Vec<CrawlerSource>,
pub verify_signatures: SignatureVerification,
pub identity_cache_size: u64,
pub verify_mst: bool,
pub rev_clock_skew_secs: i64,
pub filter_signals: Option<Vec<String>>,
pub filter_collections: Option<Vec<String>>,
pub filter_excludes: Option<Vec<String>>,
pub enable_backlinks: bool,
pub seed_hosts: Vec<Url>,
pub trusted_hosts: Vec<String>,
pub rate_tiers: HashMap<String, RateTier>,
pub cache_size: u64,
pub data_compression: Compression,
pub journal_compression: Compression,
pub db_worker_threads: usize,
pub db_max_journaling_size_mb: u64,
pub db_blocks_memtable_size_mb: u64,
pub db_repos_memtable_size_mb: u64,
pub db_events_memtable_size_mb: u64,
pub db_records_memtable_size_mb: u64,
}Fields§
§database_path: PathBufpath to the database folder. set via HYDRANT_DATABASE_PATH.
full_network: boolif true, discovers and indexes all repositories in the network.
set via HYDRANT_FULL_NETWORK.
ephemeral: boolif true, no records are stored; events are deleted after ephemeral_ttl.
set via HYDRANT_EPHEMERAL.
ephemeral_ttl: Durationhow long events are retained in ephemeral mode before deletion.
set via HYDRANT_EPHEMERAL_TTL (humantime duration, e.g. 60min).
relays: Vec<FirehoseSource>firehose sources for ingestion. set via HYDRANT_RELAY_HOST (single)
or HYDRANT_RELAY_HOSTS (comma-separated; takes precedence).
prefix a URL with pds:: to mark it as a direct PDS connection.
plc_urls: Vec<Url>base URL(s) of the PLC directory (comma-separated for multiple).
defaults to https://plc.wtf, or https://plc.directory in full-network mode.
set via HYDRANT_PLC_URL.
enable_firehose: boolwhether to ingest events from relay firehose subscriptions.
set via HYDRANT_ENABLE_FIREHOSE.
firehose_workers: usizenumber of concurrent workers processing firehose events.
set via HYDRANT_FIREHOSE_WORKERS.
cursor_save_interval: Durationhow often the firehose cursor is persisted to disk.
set via HYDRANT_CURSOR_SAVE_INTERVAL (humantime duration, e.g. 3sec).
repo_fetch_timeout: Durationtimeout for fetching a full repository CAR during backfill.
set via HYDRANT_REPO_FETCH_TIMEOUT (humantime duration, e.g. 5min).
backfill_concurrency_limit: usizemaximum number of concurrent backfill tasks.
set via HYDRANT_BACKFILL_CONCURRENCY_LIMIT.
enable_crawler: Option<bool>whether to run the network crawler. None defers to the default for the current mode.
set via HYDRANT_ENABLE_CRAWLER.
crawler_max_pending_repos: usizemaximum number of repos allowed in the backfill pending queue before the crawler pauses.
set via HYDRANT_CRAWLER_MAX_PENDING_REPOS.
crawler_resume_pending_repos: usizepending queue size at which the crawler resumes after being paused.
set via HYDRANT_CRAWLER_RESUME_PENDING_REPOS.
crawler_sources: Vec<CrawlerSource>crawler sources: each entry pairs a URL with a discovery mode.
set via HYDRANT_CRAWLER_URLS as a comma-separated list of [mode::]url entries,
e.g. relay::wss://bsky.network,by_collection::https://lightrail.microcosm.blue.
a bare URL without a mode:: prefix uses the default mode (relay for full-network,
by_collection otherwise). defaults to the relay hosts with the default mode.
set to an empty string to disable crawling entirely.
verify_signatures: SignatureVerificationsignature verification level for incoming commits.
set via HYDRANT_VERIFY_SIGNATURES (full, backfill-only, or none).
identity_cache_size: u64number of resolved identities to keep in the in-memory LRU cache.
set via HYDRANT_IDENTITY_CACHE_SIZE.
verify_mst: boolenable MST inversion validation on incoming commits (expensive).
set via HYDRANT_VERIFY_MST.
rev_clock_skew_secs: i64clock drift window for future-rev rejection, in seconds.
commits with a rev timestamp more than this many seconds in the future are rejected.
set via HYDRANT_REV_CLOCK_SKEW. default: 300 (5 minutes).
filter_signals: Option<Vec<String>>NSID patterns that trigger auto-discovery in filter mode (e.g. app.bsky.feed.post).
set via HYDRANT_FILTER_SIGNALS as a comma-separated list.
filter_collections: Option<Vec<String>>NSID patterns used to filter which record collections are stored.
if None, all collections are stored. set via HYDRANT_FILTER_COLLECTIONS.
filter_excludes: Option<Vec<String>>DIDs that are always skipped, regardless of mode.
set via HYDRANT_FILTER_EXCLUDES as a comma-separated list.
enable_backlinks: boolenable backlinks indexing (only meaningful in non-ephemeral mode).
set via HYDRANT_ENABLE_BACKLINKS=true.
seed_hosts: Vec<Url>base URL(s) of relay or aggregator services to seed firehose PDS sources from at startup.
hydrant calls com.atproto.sync.listHosts on each URL and adds the returned PDSes
as firehose sources (with is_pds = true). account counts from the response are
applied to newly-seen hosts to initialise rate-limiting immediately.
set via HYDRANT_SEED_HOSTS as a comma-separated list of base URLs.
trusted_hosts: Vec<String>list of trusted PDS/relay hosts to pre-assign to the “trusted” rate tier at startup.
set via HYDRANT_TRUSTED_HOSTS as a comma-separated list of hostnames.
hosts not present in this list use the “default” tier unless assigned via the API.
rate_tiers: HashMap<String, RateTier>named rate tier definitions for PDS rate limiting.
built-in tiers (“default” and “trusted”) are always present and may be overridden.
set via HYDRANT_RATE_TIERS as a comma-separated list of name:base/mul/hourly/daily entries,
e.g. trusted:5000/10.0/18000000/432000000,custom:100/1.0/7200000/172800000.
cache_size: u64db internals, tune only if you know what you’re doing.
size of the fjall block cache in MB. set via HYDRANT_CACHE_SIZE.
data_compression: Compressiondb internals, tune only if you know what you’re doing.
compression algorithm for data keyspaces (blocks, records, repos, events).
set via HYDRANT_DATA_COMPRESSION (lz4, zstd, or none).
journal_compression: Compressiondb internals, tune only if you know what you’re doing.
compression algorithm for the fjall journal.
set via HYDRANT_JOURNAL_COMPRESSION (lz4, zstd, or none).
db_worker_threads: usizedb internals, tune only if you know what you’re doing.
number of background threads used by the fjall storage engine.
set via HYDRANT_DB_WORKER_THREADS.
db_max_journaling_size_mb: u64db internals, tune only if you know what you’re doing.
maximum total size of the fjall journal in MB before a flush is forced.
set via HYDRANT_DB_MAX_JOURNALING_SIZE_MB.
db_blocks_memtable_size_mb: u64db internals, tune only if you know what you’re doing.
in-memory write buffer (memtable) size for the blocks keyspace in MB.
set via HYDRANT_DB_BLOCKS_MEMTABLE_SIZE_MB.
db_repos_memtable_size_mb: u64db internals, tune only if you know what you’re doing.
in-memory write buffer (memtable) size for the repos keyspace in MB.
set via HYDRANT_DB_REPOS_MEMTABLE_SIZE_MB.
db_events_memtable_size_mb: u64db internals, tune only if you know what you’re doing.
in-memory write buffer (memtable) size for the events keyspace in MB.
set via HYDRANT_DB_EVENTS_MEMTABLE_SIZE_MB.
db_records_memtable_size_mb: u64db internals, tune only if you know what you’re doing.
in-memory write buffer (memtable) size for the records keyspace in MB.
set via HYDRANT_DB_RECORDS_MEMTABLE_SIZE_MB.
Implementations§
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Config
impl RefUnwindSafe for Config
impl Send for Config
impl Sync for Config
impl Unpin for Config
impl UnwindSafe for Config
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<D> OwoColorize for D
impl<D> OwoColorize for D
§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg] or
a color-specific method, such as [OwoColorize::green], Read more§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg] or
a color-specific method, such as [OwoColorize::on_yellow], Read more§fn fg_rgb<const R: u8, const G: u8, const B: u8>(
&self,
) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>
fn fg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>
§fn bg_rgb<const R: u8, const G: u8, const B: u8>(
&self,
) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>
fn bg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>
§fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>
fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>
§fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>
fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>
§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§impl<T> ToCowStr for T
impl<T> ToCowStr for T
§impl<T> ToSmolStr for T
impl<T> ToSmolStr for T
fn to_smolstr(&self) -> SmolStr
§impl<T> ToStringFallible for Twhere
T: Display,
impl<T> ToStringFallible for Twhere
T: Display,
§fn try_to_string(&self) -> Result<String, TryReserveError>
fn try_to_string(&self) -> Result<String, TryReserveError>
ToString::to_string, but without panic on OOM.