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