Scalable and distributed custom feed generator, ott - on that topic
1# OTT on that topic 2 3OTT is an over the top bluesky custom feed (in the making) 4 5The flow is as follows: 6 71. Two fluvio connector services consume wss streams, one for raw-posts and one for raw-likes. 82. ott-filter consumes the keyed posts and likes streams, and keeps count on likes and other filters. 9 It sends the passing posts to the fluvio topic posts. 103. ott-embed consumes the posts topic, embeds them with tei running on host and stores the vectors in a pg cluster 114. ott-xrpc listens to getFeedSkeleton requests, gets the users last liked post and gets similar posts from the pg db. 12 13Still work in progress, especially the ott-xrpc service isn't fleshed out yet. Also I intend to add a VIP stream so that all posts 14liked by a feed user are guaranteed to pass the filter. 15 16Then... The original intention was to use FASTopic to get topic vectors for every day in the semantic space and sample within the most relevant topics. 17This is still the intention. 18 19# Setup 20Note that the ott-helm currently assumes that you intend to deploy through a cloudflare zerotrust tunnel, and defaults to starting up a cloudflared daemon 21forwarding to the ott-xrpc service. If your DNS isn't configured like that and you have no tunnel simply disable cloudflare in your helm values. 22 23Also note that this should likely not be done at all just yet, this software is in early development. 24 25## Install dependencies 26 27```shell 28# Install k8s tooling 29brew install kind helm skaffold 30 31# Install fvm and fluvio cli 32curl -fsS https://hub.infinyon.cloud/install/install.sh | bash 33 34# Install rust 35curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh 36 37# Install tei 38cargo install --git https://github.com/huggingface/text-embeddings-inference 39 40``` 41 42## Create a cluster 43 44```shell 45kind create cluster --config kind-cluster.yaml 46``` 47 48# Run 49 50```shell 51skaffold run 52``` 53 54