Middleware for the Fediverse
Project description
cattle_grid
cattle_grid handles a few common tasks that plague Fediverse applications:
- Maintaining an actor document and associated endpoints like inbox
- Verifying HTTP signatures
- Determine if somebody is authorized to view something or not
- Manage follower collections
Furthermore with its muck_out extension it handles parsing ActivityPub objects.
cattle_grid relies on faststream and then RabbitMQ for message processing. If you want to use cattle_grid, you will be faced with using message queues.
cattle_grid has an internal account system.
Related links
Applications using cattle_grid
- comments allows one to add comments to a static site
- fedi-herds allows list management
- roboherd allows one to build automatic posting bots (these have no frontend)
Related projects / utilities
- almabtrieb implements one of the Client protocols used by cattle_grid
- console provides a light weight frontend.
Development
Testing
You can run the pytest tests via
uv run pytest
or in watch mode
uv run ptw .
Running behave tests
Build the container via
./update_docker.sh
This script uses the requirements from pyproject.toml via uv export to install
python dependencies in the container. This means this script needs to be rerun, if
you make changes to the dependencies. Startup the docker environment via
docker compose up
Open a runner container
docker compose run --rm --name runner cattle_grid_app /bin/sh
Inside this container, you now run
fediverse-features
behave
The first step downloads some features from fediverse-features and the second step runs the test suite.
Building end 2 end reports (as done by CI)
The process to build the end to end reports is described here. The reports should be published to this repository and then made available here.
Running as stand alone
Create a requirements.txt file and start a virgin docker container
uv export --no-editable --no-emit-project --no-hashes --no-dev > requirements.txt
docker run --rm -ti -p 8000:8000\
-v ./cattle_grid:/app/cattle_grid\
-v ./requirements.txt:/app/requirements.txt \
--workdir /app\
helgekr/bovine:python3.13 /bin/sh
Once inside the docker container install dependencies
pip intall -r requirements.txt
and run cattle_grid via
uvicorn cattle_grid:create_app --factory --host 0.0.0.0
This currently fails.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cattle_grid-0.5.21.tar.gz.
File metadata
- Download URL: cattle_grid-0.5.21.tar.gz
- Upload date:
- Size: 472.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Alpine Linux","version":"3.23.0","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d3f663afc63d4cfbfdc498595bb4548b8081de19822d01d27e43f81c10880099
|
|
| MD5 |
2f627770e5eb966315983022beccd914
|
|
| BLAKE2b-256 |
bdd75fa093802da71c044117e4617895a72faa613d78c820ef1c32ccecf62d96
|
File details
Details for the file cattle_grid-0.5.21-py3-none-any.whl.
File metadata
- Download URL: cattle_grid-0.5.21-py3-none-any.whl
- Upload date:
- Size: 254.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Alpine Linux","version":"3.23.0","id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eb9e8891c2767cb84a4ac903cac010d0456d40dc4cc02a35a77a75febfa93903
|
|
| MD5 |
6d6a1e69b74e0315897fdf3a6ab03cd4
|
|
| BLAKE2b-256 |
be35579d2de289b1efc87091e70d939c813ae27f33e4d0349d95744f3586caef
|