An open protocol for algorithmic feeds.
CommonFeed is a JSON-over-HTTPS protocol for algorithmic feeds. Providers compute and rank content; consumers (servers, native clients, or web apps) query one or more providers and assemble the feed they show users. Requests carry no user identifiers.
v0.1 (prototype). Breaking changes are expected before v1.0.
Reference implementations:
- Provider: fediway/feeds
- Client: fediway/fediway
| Section | Description |
|---|---|
| Overview | Protocol flow, transport, and privacy |
| Discovery | Discovery document at /.well-known/commonfeed |
| Registration | Instance registration, verification, and key management |
| Queries | Query endpoint, filters, and pagination |
| Lookups | Post lookup, replies, and quotes |
| Responses | Top-level response envelope |
| Posts | Post result items, media, link previews, and custom emojis |
| Tags | Tag result items |
| Links | Link result items |
| Errors | Error codes and rate limit headers |
| Embedding methods | Documented aggregation methods referenced by capability identifiers |
Request payloads carry no user identifiers, browsing history, or session data. Authentication is at the consumer level. Providers MUST NOT retain interest vectors beyond the request.
Anonymity properties scale with the consumer: multi-user consumers (e.g. fediverse servers) hide individual users in the consumer's traffic; single-user consumers (e.g. native clients) do not.
v0.x is exploratory: minor versions may include breaking changes. Each version is published at a stable path (v0.1/, v0.2/, …) so implementations can pin to a specific version. v1.0 will commit to backward-compatible evolution within the major version: new optional fields and endpoints only, no removals or semantic changes. Proposals are discussed in GitHub issues; accepted changes land in the next version directory.
CommonFeed sits alongside FASP (Fediverse Auxiliary Service Provider). FASP specifies integration between fediverse instances and auxiliary services; CommonFeed specifies a query protocol for ranked content. The two address different layers and can be implemented together.
Feedback and proposals are welcome via GitHub issues.
Specification text: CC-BY-4.0.