
[](https://ci.codeberg.org/repos/14027)
[](https://slidge.im/coverage/slidge/main)
[](https://conference.nicoco.fr:5281/muc_log/slidge/)
Slidge is an XMPP (puppeteer) gateway library in python.
It makes
[writing gateways to other chat networks](https://slidge.im/docs/slidge/main/dev/tutorial.html)
(*legacy modules*) as frictionless as possible.
It supports fancy IM features, such as
[(emoji) reactions](https://xmpp.org/extensions/xep-0444.html),
[replies](https://xmpp.org/extensions/xep-0461.html), and
[retractions](https://xmpp.org/extensions/xep-0424.html).
The full list of supported XEPs in on [xmpp.org](https://xmpp.org/software/slidge/).
Status
------
Slidge is **beta**-grade software. It support groups and 1:1 chats.
Try slidge and give us some
feedback, through the [MUC](xmpp:slidge@conference.nicoco.fr?join) or the
[issue tracker](https://codeberg.org/slidge/slidge/issues).
Don't be shy!
Usage
-----
A minimal (and fictional!) slidge-powered "legacy module" looks like this:
```python
from cool_chat_lib import CoolClient
from slidge import BaseGateway, BaseSession
from slidge.contact import LegacyContact
from slidge.group import LegacyMUC
from slidge.db import GatewayUser
class Gateway(BaseGateway):
# Various aspects of the gateway component are configured as class
# attributes of the concrete Gateway class
COMPONENT_NAME = "Gateway to the super duper chat network"
class Session(BaseSession):
def __init__(self, user: GatewayUser):
super().__init__(user)
self.legacy_client = CoolClient(
login=user.legacy_module_data["username"],
password=user.legacy_module_data["password"],
)
async def on_text(self, chat: LegacyContact | LegacyMUC, text: str, **kwargs):
"""
Triggered when the slidge user sends an XMPP message through the gateway
"""
self.legacy_client.send_message(text=text, destination=chat.legacy_id)
```
There's more in [the tutorial](https://slidge.im/docs/slidge/main/dev/tutorial.html)!
Installation
------------
⚠️ Slidge is a lib for gateway developers, if you are an XMPP server admin and
want to install gateways on your server, you are looking for a
[slidge-based gateway](https://codeberg.org/explore/repos?q=slidge&topic=1).
or the
[slidge-debian](https://git.sr.ht/~nicoco/slidge-debian)
bundle.
[](https://pypi.org/project/slidge/)
[](https://repology.org/project/slidge/versions)
Slidge is available on
[codeberg](https://codeberg.org/slidge/slidge/releases)
and [pypi](https://pypi.org/project/slidge/).
Refer to [the docs](https://slidge.im/docs/slidge/main/admin/install.html) for details.
About privacy
-------------
Slidge (and most if not all XMPP gateway that I know of) will break
end-to-end encryption, or more precisely one of the 'ends' become the
gateway itself. If privacy is a major concern for you, my advice would
be to:
- use XMPP + OMEMO
- self-host your gateways
- have your gateways hosted by someone you know AFK and trust
Related projects
----------------
- [Spectrum](https://www.spectrum.im/)
- [telegabber](https://dev.narayana.im/narayana/telegabber)
- [biboumi](https://biboumi.louiz.org/)
- [Bifröst](https://github.com/matrix-org/matrix-bifrost)
- [Mautrix](https://github.com/mautrix)
- [matterbridge](https://github.com/42wim/matterbridge)
Thank you, [Trung](https://trung.fun/), for the slidge logo!
Raw data
{
"_id": null,
"home_page": null,
"name": "slidge",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.11",
"maintainer_email": null,
"keywords": "xmpp, gateway, bridge, instant messaging",
"author": null,
"author_email": "Nicolas Cedilnik <nicoco@nicoco.fr>",
"download_url": "https://files.pythonhosted.org/packages/ec/42/e64c6d648d4307aa0f5e08d45e981bff329a473ac2508b66064eecd14a9b/slidge-0.3.0.tar.gz",
"platform": null,
"description": "\n\n[](https://ci.codeberg.org/repos/14027)\n[](https://slidge.im/coverage/slidge/main)\n[](https://conference.nicoco.fr:5281/muc_log/slidge/)\n\nSlidge is an XMPP (puppeteer) gateway library in python.\nIt makes\n[writing gateways to other chat networks](https://slidge.im/docs/slidge/main/dev/tutorial.html)\n(*legacy modules*) as frictionless as possible.\nIt supports fancy IM features, such as\n[(emoji) reactions](https://xmpp.org/extensions/xep-0444.html),\n[replies](https://xmpp.org/extensions/xep-0461.html), and\n[retractions](https://xmpp.org/extensions/xep-0424.html).\nThe full list of supported XEPs in on [xmpp.org](https://xmpp.org/software/slidge/).\n\nStatus\n------\n\nSlidge is **beta**-grade software. It support groups and 1:1 chats.\nTry slidge and give us some\nfeedback, through the [MUC](xmpp:slidge@conference.nicoco.fr?join) or the\n[issue tracker](https://codeberg.org/slidge/slidge/issues).\nDon't be shy!\n\nUsage\n-----\n\nA minimal (and fictional!) slidge-powered \"legacy module\" looks like this:\n\n```python\nfrom cool_chat_lib import CoolClient\nfrom slidge import BaseGateway, BaseSession\nfrom slidge.contact import LegacyContact\nfrom slidge.group import LegacyMUC\nfrom slidge.db import GatewayUser\n\n\nclass Gateway(BaseGateway):\n # Various aspects of the gateway component are configured as class\n # attributes of the concrete Gateway class\n COMPONENT_NAME = \"Gateway to the super duper chat network\"\n\n\nclass Session(BaseSession):\n def __init__(self, user: GatewayUser):\n super().__init__(user)\n self.legacy_client = CoolClient(\n login=user.legacy_module_data[\"username\"],\n password=user.legacy_module_data[\"password\"],\n )\n\n async def on_text(self, chat: LegacyContact | LegacyMUC, text: str, **kwargs):\n \"\"\"\n Triggered when the slidge user sends an XMPP message through the gateway\n \"\"\"\n self.legacy_client.send_message(text=text, destination=chat.legacy_id)\n```\n\nThere's more in [the tutorial](https://slidge.im/docs/slidge/main/dev/tutorial.html)!\n\nInstallation\n------------\n\n\u26a0\ufe0f Slidge is a lib for gateway developers, if you are an XMPP server admin and\nwant to install gateways on your server, you are looking for a\n[slidge-based gateway](https://codeberg.org/explore/repos?q=slidge&topic=1).\nor the\n[slidge-debian](https://git.sr.ht/~nicoco/slidge-debian)\nbundle.\n\n[](https://pypi.org/project/slidge/)\n\n[](https://repology.org/project/slidge/versions)\n\nSlidge is available on\n[codeberg](https://codeberg.org/slidge/slidge/releases)\nand [pypi](https://pypi.org/project/slidge/).\nRefer to [the docs](https://slidge.im/docs/slidge/main/admin/install.html) for details.\n\nAbout privacy\n-------------\n\nSlidge (and most if not all XMPP gateway that I know of) will break\nend-to-end encryption, or more precisely one of the 'ends' become the\ngateway itself. If privacy is a major concern for you, my advice would\nbe to:\n\n- use XMPP + OMEMO\n- self-host your gateways\n- have your gateways hosted by someone you know AFK and trust\n\nRelated projects\n----------------\n\n- [Spectrum](https://www.spectrum.im/)\n- [telegabber](https://dev.narayana.im/narayana/telegabber)\n- [biboumi](https://biboumi.louiz.org/)\n- [Bifr\u00f6st](https://github.com/matrix-org/matrix-bifrost)\n- [Mautrix](https://github.com/mautrix)\n- [matterbridge](https://github.com/42wim/matterbridge)\n\nThank you, [Trung](https://trung.fun/), for the slidge logo!\n",
"bugtrack_url": null,
"license": null,
"summary": "XMPP bridging framework",
"version": "0.3.0",
"project_urls": {
"Chat room": "https://conference.nicoco.fr:5281/muc_log/slidge/",
"Documentation": "https://slidge.im/docs/slidge/main",
"Homepage": "https://codeberg.org/slidge/",
"Issues": "https://codeberg.org/slidge/slidge/issues",
"Repository": "https://codeberg.org/slidge/slidge/",
"changelog": "https://codeberg.org/slidge/slidge/releases"
},
"split_keywords": [
"xmpp",
" gateway",
" bridge",
" instant messaging"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "593d8ed22124ee950c90bb9e545a1428a41836435a193863b6659a617dc610ae",
"md5": "9d7ce7c081d949f676c5d8cc07cc745a",
"sha256": "0fdc34b90ce4f49e6408d7ff62470c8dcd22f8f77da2228100538049aa281c9f"
},
"downloads": -1,
"filename": "slidge-0.3.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "9d7ce7c081d949f676c5d8cc07cc745a",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.11",
"size": 183059,
"upload_time": "2025-09-13T06:26:05",
"upload_time_iso_8601": "2025-09-13T06:26:05.904627Z",
"url": "https://files.pythonhosted.org/packages/59/3d/8ed22124ee950c90bb9e545a1428a41836435a193863b6659a617dc610ae/slidge-0.3.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "ec42e64c6d648d4307aa0f5e08d45e981bff329a473ac2508b66064eecd14a9b",
"md5": "dec4c1883a7c5896b468af2ba1f55004",
"sha256": "164588920930a35240c3270f27157834dd9785856ae5b4b12f9e85325d414050"
},
"downloads": -1,
"filename": "slidge-0.3.0.tar.gz",
"has_sig": false,
"md5_digest": "dec4c1883a7c5896b468af2ba1f55004",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.11",
"size": 2468411,
"upload_time": "2025-09-13T06:26:08",
"upload_time_iso_8601": "2025-09-13T06:26:08.183173Z",
"url": "https://files.pythonhosted.org/packages/ec/42/e64c6d648d4307aa0f5e08d45e981bff329a473ac2508b66064eecd14a9b/slidge-0.3.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-09-13 06:26:08",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": true,
"codeberg_user": "slidge",
"codeberg_project": "slidge",
"lcname": "slidge"
}