this repo has no description
Go 93.1%
Shell 2.6%
Python 1.4%
Dockerfile 1.3%
Just 0.9%
Other 0.6%
41 1 0

Clone this repository

https://tangled.org/hailey.at/vylet-go
git@knot.hailey.at:hailey.at/vylet-go

For self-hosted knots, clone URLs may differ based on your setup.

README.md

Vylet Go Monorepo#

Services#

CDN Service#

The CDN service tracks blob references from the ATProto firehose and stores them in the database for resolution and serving.

What it does#

  • Subscribes to the Kafka firehose topic
  • Extracts blob references from all records using atdata.ExtractBlobs()
  • Stores blob metadata in the blob_refs table with DID and CID as primary key
  • Tracks first seen time, processing time, and update time for each blob
  • Exposes Prometheus metrics for monitoring

Running locally#

# Using justfile
just run-cdn

# Or directly with go run
go run ./cmd/cdn

Configuration#

Environment variables:

  • VYLET_CDN_DATABASE_HOST - Database server address (default: 127.0.0.1:9090)
  • VYLET_BOOTSTRAP_SERVERS - Kafka bootstrap servers (default: localhost:9092)
  • VYLET_CDN_INPUT_TOPIC - Firehose topic to consume (default: firehose-events-prod)
  • VYLET_CDN_CONSUMER_GROUP - Kafka consumer group (required)

Metrics#

The CDN service exposes the following Prometheus metrics:

  • cdn_blobs_extracted_total - Total number of blobs extracted from records
  • cdn_db_operations_total{operation, status} - Database operations by type (create/update) and status (success/error)
  • cdn_records_processed_total{operation} - Records processed by operation type

API Integration#

Blob references tracked by the CDN service can be resolved via the API:

GET /xrpc/app.vylet.media.getBlob?did=<did>&cid=<cid>

This endpoint:

  1. Fetches blob metadata from blob_refs table
  2. Checks if the blob is taken down
  3. Resolves the PDS endpoint from the DID document
  4. Returns a 302 redirect to the blob on the user's PDS