very fast at protocol indexer with flexible filtering, xrpc queries, cursor-backed event stream, and more, built on fjall
rust fjall at-protocol atproto indexer
59
fork

Configure Feed

Select the types of activity you want to include in your feed.

[docs] move title headers into title frontmatter

dawn 6a639587 399592f4

+80 -40
+26 -22
docs/README.md
··· 1 - `hydrant` is an AT Protocol indexer built on the `fjall` database. it's built to be flexible, supporting both full-network indexing and filtered indexing (e.g., by DID), allowing querying with XRPCs (not only `com.atproto.*`!), providing an ordered event stream, etc. oh and it can also act as a relay! 2 - 3 - you can see [random.wisp.place](https://tangled.org/did:plc:dfl62fgb7wtjj3fcbb72naae/random.wisp.place) (standalone binary using http API) or the [statusphere example](https://tangled.org/did:plc:dfl62fgb7wtjj3fcbb72naae/hydrant/blob/main/examples/statusphere.rs) (hydrant-as-library) for examples. for rust docs look at https://hydrant.klbr.net/ for now. 4 - 5 - **WARNING: *the db format is only partially stable.*** we provide migrations in hydrant itself, so nothing should go wrong! you should still probably keep backups just in case! 6 - 7 - ## what's here 8 - 9 - - [getting started](getting-started.md): building, running, reverse proxying 10 - - [configuration](configuration.md): all environment variables 11 - - [build features](build-features.md): optional cargo features (`relay`, `backlinks`, etc.) 12 - - [concepts](concepts/README.md): how the stream works, relay comparison, multi-relay support 13 - - [rest api](api/README.md): management API reference 14 - - [xrpc](xrpc/README.md): data access via XRPC 15 - 16 - ## quick start 17 - 18 - ```bash 19 - cargo build --release 20 - export HYDRANT_DATABASE_PATH=./hydrant.db 21 - ./target/release/hydrant 22 - ``` 1 + --- 2 + title: hydrant 3 + --- 4 + 5 + `hydrant` is an AT Protocol indexer built on the `fjall` database. it's built to be flexible, supporting both full-network indexing and filtered indexing (e.g., by DID), allowing querying with XRPCs (not only `com.atproto.*`!), providing an ordered event stream, etc. oh and it can also act as a relay! 6 + 7 + you can see [random.wisp.place](https://tangled.org/did:plc:dfl62fgb7wtjj3fcbb72naae/random.wisp.place) (standalone binary using http API) or the [statusphere example](https://tangled.org/did:plc:dfl62fgb7wtjj3fcbb72naae/hydrant/blob/main/examples/statusphere.rs) (hydrant-as-library) for examples. for rust docs look at https://hydrant.klbr.net/ for now. 8 + 9 + **WARNING: *the db format is only partially stable.*** we provide migrations in hydrant itself, so nothing should go wrong! you should still probably keep backups just in case! 10 + 11 + ## what's here 12 + 13 + - [getting started](getting-started.md): building, running, reverse proxying 14 + - [configuration](configuration.md): all environment variables 15 + - [build features](build-features.md): optional cargo features (`relay`, `backlinks`, etc.) 16 + - [concepts](concepts/README.md): how the stream works, relay comparison, multi-relay support 17 + - [rest api](api/README.md): management API reference 18 + - [xrpc](xrpc/README.md): data access via XRPC 19 + 20 + ## quick start 21 + 22 + ```bash 23 + cargo build --release 24 + export HYDRANT_DATABASE_PATH=./hydrant.db 25 + ./target/release/hydrant 26 + ```
+3 -1
docs/api/README.md
··· 1 - # rest api 1 + --- 2 + title: rest api 3 + --- 2 4 3 5 hydrant's REST API is split into public endpoints (safe to expose) and management endpoints (keep private). see [getting started](../getting-started.md#reverse-proxying) for guidance on what to expose. 4 6
+3 -1
docs/api/crawler.md
··· 1 - # crawler management 1 + --- 2 + title: crawler management 3 + --- 2 4 3 5 ## GET /crawler/sources 4 6
+3 -1
docs/api/database.md
··· 1 - # database operations 1 + --- 2 + title: database operations 3 + --- 2 4 3 5 - `POST /db/train`: train zstd compression dictionaries for the `repos`, `blocks`, and `events` keyspaces. dictionaries are written to disk; a restart is required to apply them. the crawler, firehose, and backfill worker are paused for the duration and restored on completion. 4 6 - `POST /db/compact`: trigger a full major compaction of all database keyspaces in parallel. the crawler, firehose, and backfill worker are paused for the duration and restored on completion.
+3 -1
docs/api/filter.md
··· 1 - # filter management 1 + --- 2 + title: filter management 3 + --- 2 4 3 5 - `GET /filter`: get the current filter configuration. 4 6 - `PATCH /filter`: update the filter configuration.
+3 -1
docs/api/firehose.md
··· 1 - # firehose management 1 + --- 2 + title: firehose management 3 + --- 2 4 3 5 ## GET /firehose/sources 4 6
+3 -1
docs/api/ingestion.md
··· 1 - # ingestion control 1 + --- 2 + title: ingestion control 3 + --- 2 4 3 5 ## GET /ingestion 4 6
+3 -1
docs/api/pds.md
··· 1 - # PDS management 1 + --- 2 + title: PDS management 3 + --- 2 4 3 5 hydrant rate-limits firehose events per PDS. each PDS is assigned to a named rate tier that controls how aggressively hydrant limits events from it. two built-in tiers are always present: `default` (conservative limits for unknown operators) and `trusted` (higher limits for well-behaved operators). additional tiers can be defined via `RATE_TIERS`. 4 6
+3 -1
docs/api/repos.md
··· 1 - # repository management 1 + --- 2 + title: repository management 3 + --- 2 4 3 5 all `/repos` endpoints that return lists respond with NDJSON by default. send `Accept: application/json` or `Content-Type: application/json` to get a JSON array instead. 4 6
+3 -1
docs/build-features.md
··· 1 - # build features 1 + --- 2 + title: build features 3 + --- 2 4 3 5 `hydrant` has several optional compile-time features: 4 6
+3 -1
docs/concepts/README.md
··· 1 - # concepts 1 + --- 2 + title: concepts 3 + --- 2 4 3 5 - [hydrant vs tap](vs-tap.md): design comparison, stream behavior 4 6 - [relay & seeding](relay.md): multi-relay support, firehose seeding, crawler sources
+3 -1
docs/concepts/relay.md
··· 1 - # relay, seeding & crawler sources 1 + --- 2 + title: relay, seeding & crawler sources 3 + --- 2 4 3 5 ## multiple relay support 4 6
+3 -1
docs/concepts/vs-tap.md
··· 1 - # hydrant vs tap 1 + --- 2 + title: hydrant vs tap 3 + --- 2 4 3 5 while [`tap`](https://github.com/bluesky-social/indigo/tree/main/cmd/tap) is designed as a firehose consumer and simply just propagates events while handling sync, `hydrant` is flexible, it allows you to directly query the database for records, and it also provides an ordered view of events, allowing the use of a cursor to fetch events from a specific point. it can act as both an indexer or an ephemeral view of some window of events. 4 6
+3 -1
docs/configuration.md
··· 1 - # configuration 1 + --- 2 + title: configuration 3 + --- 2 4 3 5 hydrant is configured via environment variables, all prefixed with `HYDRANT_` (except `RUST_LOG`). a `.env` file in the working directory is loaded automatically. 4 6
+3 -1
docs/getting-started.md
··· 1 - # getting started 1 + --- 2 + title: getting started 3 + --- 2 4 3 5 ## requirements 4 6
+3 -1
docs/xrpc/README.md
··· 1 - # xrpc 1 + --- 2 + title: xrpc 3 + --- 2 4 3 5 `hydrant` implements the following XRPC endpoints under `/xrpc/`. only expose `/xrpc/*` publicly, see [getting started](../getting-started.md#reverse-proxying) for guidance. 4 6
+3 -1
docs/xrpc/atproto.md
··· 1 - # com.atproto.* 1 + --- 2 + title: com.atproto.* 3 + --- 2 4 3 5 these are standard atproto endpoints. you can look at [the atproto api reference](https://docs.bsky.app/docs/category/http-reference) for more info. 4 6
+3 -1
docs/xrpc/backlinks.md
··· 1 - # blue.microcosm.links.* 1 + --- 2 + title: blue.microcosm.links.* 3 + --- 2 4 3 5 hydrant implements a subset of [microcosm constellation](https://constellation.microcosm.blue/) when it's built with the `backlinks` cargo feature (`cargo build --features backlinks`). 4 6
+3 -1
docs/xrpc/hydrant.md
··· 1 - # systems.gaze.hydrant.* 1 + --- 2 + title: systems.gaze.hydrant.* 3 + --- 2 4 3 5 these are some non-standard XRPCs that might be useful. 4 6