A CommonFeed content provider.
Reference implementation of the CommonFeed protocol. Reads from ActivityPub, AT Protocol, and Nostr to serve feeds. Not a bridge: content is read, not republished across protocols.
cp .env.example .env
cargo run -p cli -- migrate
cargo run -p serverOpens at http://localhost:3000. Verify with curl localhost:3000/.well-known/commonfeed | jq.
| Method | Path | Description |
|---|---|---|
GET |
/.well-known/commonfeed |
Discovery document |
POST |
/api/v1/register |
Instance registration |
GET |
/api/v1/register/status |
Registration status |
POST |
/api/v1/posts/trending |
Trending posts |
POST |
/api/v1/posts/hot |
Hot posts (by tag or link) |
POST |
/api/v1/posts/recommended |
Recommended posts (embedding vector) |
POST |
/api/v1/tags/trending |
Trending tags |
POST |
/api/v1/links/trending |
Trending links |
See the CommonFeed specification for request/response schemas.
apps/
server/ HTTP API (Axum)
cli/ Instance management, feed computation
workers/
precompute/ Pre-ranked feed cache
nlp/ Language detection
scoring/ Engagement scoring
orbit/ Vector embeddings + recommendations
crates/
algorithms/ Feed ranking implementations
common/ Shared types, errors
commonfeed/ CommonFeed protocol types
config/ CLI args, env var config
db/ SQL queries, migrations (sqlx)
events/ Kafka event types
fasp/ Fediverse Auxiliary Service Provider
docker build -t feeds .
docker run -p 3000:3000 --env-file .env feeds feedsThe image includes all binaries: feeds, cli, precompute, nlp, scoring, orbit.
Indexes only public content. Authors can opt out per protocol: ActivityPub indexable profile settings, robots.txt, Nostr NIP-70 tags. See PRIVACY.md for retention and data-handling details.
See CONTRIBUTING.md for setup, conventions, and development workflow.