Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Asyncronous Lightweight ActivityPub API / CMS

Implements both the client-to-server(C2S) API and the federated server-to-server(S2S) API.

  • S2S compatible with Mastodon, Pixelfed, Pleroma and

Can do create / delete / un-/follow users / share / like / undo

The idea is to develop PubGate as CMS, which could be used same as WordPress - easy install on cheap hosting with customization by installing plugins and choosing themes. As far as it based on asynchronous python framework, which provides non-blocking delivery of AP objects to other instances, it supposed to be light and fast.

Support extensions (collects blueprints and tasks):

API documentation

Overview swagger docs example

More details at Postman documenter or download latest Postman collection



Install Docker + Docker Compose


git clone
cp -r config/extensions_sample_conf.cfg config/conf.cfg
Check/Edit config/conf.cfg to change setup of your instance

(registration status, title and description for UI App)

Then, instance could be started docker-compose up -d

This will install PubGate with extensions (marked * in list ). For custom configuration edit requirements/extensions.txt and config/conf.cfg . To install federator without extensions, empty requirements/extensions.txt and use config/base_sample_conf.cfg

Manual deploy on Android device

Guide from @traumschule

Could be used for manual install on Ubuntu/Debian as well

Install dory mongodb server and termux

In termux:

pkg install git python make
git clone
pip install -r requirements/base.txt
pip install -r requirements/extensions.txt
cp config/extensions_sample_conf.cfg config/conf.cfg

edit config/conf.cfg and change to ip address and https to http (for dev instance)



python -m pytest tests/