Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Slidge logo

woodpecker CI status coverage Chat

Slidge is an XMPP (puppeteer) gateway library in python. It makes writing gateways to other chat networks (legacy modules) as frictionless as possible. It supports fancy IM features, such as (emoji) reactions, replies, and retractions. The full list of supported XEPs in on xmpp.org.

Status

Slidge is beta-grade software. It support groups and 1:1 chats. Try slidge and give us some feedback, through the MUC or the issue tracker. Don't be shy!

Usage

A minimal (and fictional!) slidge-powered "legacy module" looks like this:

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
from slidge.util.types import XMPPMessage


class Session(BaseSession):
    async def login(self, user: GatewayUser) -> None:
        self.legacy_client = CoolClient(
            login=user.legacy_module_data["username"],
            password=user.legacy_module_data["password"],
        )
        await self.legacy_client.login()


class Gateway(BaseGateway[Session]):
    # 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 Contact(LegacyContact):
    async def on_message(self, msg: XMPPMessage) -> str:
        """
        Triggered when the slidge user sends an XMPP message through the gateway
        """
        sent = self.session.legacy_client.send_message(
            text=text, destination=self.legacy_id
        )
        return str(sent.message_id)

There's more in the tutorial!

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. or the slidge-debian bundle.

pypi version

Packaging status

Slidge is available on codeberg and pypi. Refer to the docs 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

Thank you, Trung, for the slidge logo!

Metadata

Release files for slidge 0.5.0a1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for slidge 0.5.0a1
File Size Uploaded
slidge-0.5.0a1.tar.gz 523.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for slidge 0.5.0a1
File Interpreter ABI Platform
slidge-0.5.0a1-py3-none-any.whl Python 3 none any Details

Total release size: 737.1 kB

Release files / slidge-0.5.0a1.tar.gz

Download URL slidge-0.5.0a1.tar.gz
Size 523.6 kB
Tags Source
SHA-256 checksum
How to use checksums
b7e17b6ceae9e50367ba140c4238b598504b57a10ac9950ae7c0cd0e3c154a2a
BLAKE2b-256 checksum
How to use checksums
369c6346cb3e9e331c1fb0b6497f095b6e3838fb6128e280eadcefc8d6313676
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / slidge-0.5.0a1-py3-none-any.whl

Download URL slidge-0.5.0a1-py3-none-any.whl
Size 213.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
32fd0936c2abf22b5173778e478d040748c9941cc3187701c328097109c2caa6
BLAKE2b-256 checksum
How to use checksums
a9b811d7261dbf8fc1a1502d18455746e3edde9ef8e2ff6e97b81fccad3f69a5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

This release

0.5.0a1 This release

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.9

2 release files

0.3.8

2 release files

0.3.7

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.12

2 release files

0.2.11

2 release files

0.2.10

2 release files

0.2.9

2 release files

0.2.8

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page