Skip to content


bovine splits the typical Fediverse server into small, reusable chunks. This package contains the first chunk. The tutorials below illustrate how to use this package to perform the core functionality of a FediVerse application. The FediVerse is considered here to considered to consist of entities communicating through ActivityPub. Furthermore, this package contains methods for signing messages and looking up information through webfinger.

As mentioned above this package is meant to be the basis for other things. If one wants to build a Fediverse Server, one will need bovine_herd contained in the bovine repository linked above.


One can install the package from PyPI via

pip install bovine

Other parts of bovine

The libraries bovine-store, bovine-process, and bovine-herd build upon bovine to provide more features. Summarizing, bovine-store allows one to store actor objects owned by your server, and arbitrary ActivityPub objects in an SQL based database. bovine-process is the side effect logic, based on the BovineStoreActor interface. Finally, bovine-herd is the code necessary to build a full server.

Projects and tools using bovine

The following are a few things that have been build using bovine, that are meant to be independent tools.

The following are tools build using bovine that are meant to be part of a Fediverse application

  • cattle_grid provides an authentication middleware. This means that it takes care of validating incoming HTTP signatures


First, you are welcome to contribute to bovine. The list of current contributors is available here. The basic setup can be achieved by

git clone
cd bovine
poetry install --with dev,test,doc --all-extras
poetry run pytest # (2)
poetry run ruff check --fix . 
poetry run ruff format .
./ # (1)
  1. runs behavior driven tests, whose features are contained in fediverse-features.
  2. unit tests; contained in test_ files places along the code

If you know what you want to do, the simplest way is to open a pull request. Woodpecker will then run the test suite and the badge status-badge should stay green. Also code covered by tests is better than untested code. If you need to discuss things first, please open an issue.