Heisenbridge a bouncer-style Matrix IRC bridge

Overview

Heisenbridge

a bouncer-style Matrix IRC bridge.

Heisenbridge brings IRC to Matrix by creating an environment where every user connects to each network individually like they would with a traditional IRC bouncer. Simplicity is achieved by exposing IRC in the most straightforward way as possible where it makes sense so it feels familiar for long time IRC users and prevents hiding protocol level events to help diagnose integration issues.

These compromises also mean that some IRC or Matrix features are managed with text commands rather than using the Matrix UI directly and some Matrix features that may seem to match IRC are not available anyway. Users on IRC should not know you are using Matrix unless you send media that is linked from your homeserver.

Please file an issue when you find something is missing or isn't working that you'd like to see fixed. Also bear in mind this project is still in very early stages of development so many things are missing or outright broken. Pull requests are more than welcome!

Support and development discussion in #heisenbridge:vi.fi

Use matrix-appservice-irc instead if you need to plumb rooms between Matrix and IRC seamlessly or need to connect large amounts of users.

Features

  • "zero configuration" - no databases or storage required
  • brings IRC to Matrix rather than Matrix to IRC - not annoying to folks on IRC
  • completely managed through admin room - just DM @Heisenbridge!
  • channel management through bridge bot - type Heisenbridge: help to get started!
  • online help within Matrix
  • access control for local and federated users
  • fully puppeted users from IRC, they come and go as they would on Matrix
  • tested with up to 1600 users in a single channel
  • IRCnet !channels are supported, you're welcome
  • any number of IRC networks and users technically possible
  • channel customization by setting the name and avatar
  • TLS support for networks that have it
  • customizable ident support
  • long message splitting directly to IRC
  • automatic identify/auth with server password or command on connect

Docker

The master branch is automatically published to Docker Hub:

docker pull hif1/heisenbridge
docker run --rm hif1/heisenbridge -h

Usage

usage: python -m heisenbridge [-h] [-v] -c CONFIG [-l LISTEN_ADDRESS]
                              [-p LISTEN_PORT] [-u UID] [-g GID] [-i]
                              [--generate] [--reset] [-o OWNER]
                              [homeserver]

a Matrix IRC bridge

positional arguments:
  homeserver            URL of Matrix homeserver (default:
                        http://localhost:8008)

optional arguments:
  -h, --help            show this help message and exit
  -v, --verbose         logging verbosity level: once is info, twice is debug
                        (default: 0)
  -c CONFIG, --config CONFIG
                        registration YAML file path, must be writable if
                        generating (default: None)
  -l LISTEN_ADDRESS, --listen-address LISTEN_ADDRESS
                        bridge listen address (default: 127.0.0.1)
  -p LISTEN_PORT, --listen-port LISTEN_PORT
                        bridge listen port (default: 9898)
  -u UID, --uid UID     user id to run as (default: None)
  -g GID, --gid GID     group id to run as (default: None)
  -i, --identd          enable identd on TCP port 113, requires root (default:
                        False)
  --generate            generate registration YAML for Matrix homeserver
  --reset               reset ALL bridge configuration from homeserver and
                        exit
  -o OWNER, --owner OWNER
                        set owner MXID (eg: @user:homeserver) or first talking
                        local user will claim the bridge (default: None)

Install

  1. Install Python 3.6 or newer

  2. Install dependencies in virtualenv

    virtualenv venv
    source venv/bin/activate
    pip install git+https://github.com/hifi/heisenbridge
  3. Generate registration YAML

    python -m heisenbridge -c /path/to/synapse/config/heisenbridge.yaml --generate
  4. Add heisenbridge.yaml to Synapse appservice list

  5. (Re)start Synapse

  6. Start Heisenbridge

    python -m heisenbridge -c /path/to/synapse/config/heisenbridge.yaml
  7. Start a DM with @heisenbridge:your.homeserver to get online usage help

To update your installation, run pip install --upgrade git+https://github.com/hifi/heisenbridge

Develop

  1. Install Python 3.6 or newer

  2. Install dependencies

    virtualenv venv
    source venv/bin/activate
    pip install -e .[dev,test]
  3. (Optional) Set up pre-commit hooks

    pre-commit install

The pre-commit hooks are run by the CI as well.

Comments
  • Media URLs are incorrect

    Media URLs are incorrect

    Hi,

    This is similar to this issue https://github.com/matrix-org/matrix-appservice-irc/issues/154

    I'm running Heisenbridge in a container, and the address of the homeserver I pass to it is an internal URL http://synapse:8008/. When I upload media to IRC, the resulting URL starts with http://synapse:8008/.

    I'd like to have a way to specify an arbitrary domain instead, as is done with the upstream IRC appservice (media_url option).

    Thanks!

    opened by lenormf 11
  • @heisenbridge user not available on Conduit.rs

    @heisenbridge user not available on Conduit.rs

    Hello

    am trying to get this to work with the Conduit.rs homeserver.

    On the conduit side everything seems to be working and I added the content of the heisenbridge.yaml as described in the Conduit docu: https://gitlab.com/famedly/conduit/-/blob/master/APPSERVICES.md

    But when I start heisenbridge (connecting to http://localhost:6167 which is where Conduit runs) I just get the message about the version and the domain of my homeserver, but I can't start a DM with the @heisenbridge:myhomeserverdomain user.

    It just says that the user is invited to the room...

    As I am pretty new to this Matrix thing, I might be overlooking something, but it seems this might be a bug either in Heisenbridge or Conduit?

    opened by poVoq 10
  • Any way to set this up to connect to multiple servers?

    Any way to set this up to connect to multiple servers?

    I find the description to be very confusing. I currently use an IRC client connected to multiple servers through three separate ZNC instances. One network I am connected as X on ZNC X, another network I am connected as Y on ZNC Y, but both ZNC instances could also be connected to the same network, in some cases even joining the same channels. I would like to attach all these to the same Matrix user, so that I can access them all from within Element. The experience I am looking for would be to have a group per connection, so one group called X-server1, one group called X-server2, one group called Y-server1 etc, giving me that same separation between channels and PMs on various IRC networks as I have now.

    Is this possible? I would think that the bouncer mode would be correct for this, but can this map the same Matrix user to multiple different IRC users, or would this remove the separation I have going on?

    opened by IeuanK 7
  • Re-send edited messages

    Re-send edited messages

    Hi,

    I got the following message after editing a message:

    Editing messages is not supported on IRC, edited text was NOT sent.
    

    I think the right behaviour would be to simply re-send the edited message, if that's possible?

    Thanks!

    opened by lenormf 6
  • More mypy

    More mypy

    The init methods got removed and replaced by proper constructors, where possible. I don't really know if the code actually works, so handle with care ^^.

    opened by piegamesde 6
  • Strange blank notices from bot in control room

    Strange blank notices from bot in control room

    I'm getting a decent amount of strange, empty m.notice messages in one of my IRC network control rooms. I'm not sure what info might be useful here, primarily because I'm not exactly sure what is happening to try to reproduce it and only one of my networks is doing it. The network in question seems to be running UnrealIRCd-5.2.2-git.

    Here is a screenshot of the messages. They're blank so I guess not that interesting:

    Screen Shot 2022-03-29 at 16 46 50

    And here is the "view source" of one of the messages. I redacted the room_id and sender. I don't know if they're actually anything to worry about sharing, though.

    {
      "content": {
        "body": "",
        "msgtype": "m.notice"
      },
      "origin_server_ts": 1648585303893,
      "sender": "@heisenbridge:<redacted>",
      "type": "m.room.message",
      "unsigned": {
        "age": 80
      },
      "event_id": "$Kx6XKEfX4-rTZohjw7p_PPVKqOJ-GpzlJoX5wr1h6J0",
      "room_id": "<redacted>"
    }
    
    opened by ahanselka 5
  • Strips @ from URLs making it impossible to share many Mastodon URLs

    Strips @ from URLs making it impossible to share many Mastodon URLs

    We found this strange issue that the bridge (in plumb mode) seems to strip @ signs from URLs, which is a problem when sharing links to Mastodon posts.

    opened by poVoq 4
  • Don't touch my URLs!

    Don't touch my URLs!

    Heisenbridge should not do any processing with any tokens that might parse as URI. Currently, try sending an URL containing an @mention, and the '@' will disappear from the posted URL, rendering the link invalid.

    opened by piegamesde 4
  • Hide invites in a hidden room

    Hide invites in a hidden room

    Makes use of version 9 rooms ability to be restricted to allow users who are members of another rooms. Joins all puppeted users into the hidden room first, if one is set for the channel. Avoids invite spam in the actual rooms.

    Migration of existing rooms is possible via room level command, if they are first migrated to version 9 via external means (most Clients can do that with a simple command).

    opened by BtbN 4
  • RELAYMSG sending support

    RELAYMSG sending support

    We are now draft/relaymsg aware enough to send them and filter out our own relayed messages.

    The tag after relayed name defaults to "m" and is configurable with RELAYTAG plumbed room command.

    opened by hifi 4
  • Invalid JSON (Synapse)

    Invalid JSON (Synapse)

    Hi,

    Recently my bridge has stopped working - I think this coincides with the update to synapse 1.47.0, which manifests like this:

    Traceback (most recent call last):
      File "/root/heisenbridge/lib/python3.9/site-packages/heisenbridge/__main__.py", line 171, in _on_mx_event
        await room.on_mx_event(event)
      File "/root/heisenbridge/lib/python3.9/site-packages/heisenbridge/room.py", line 106, in on_mx_event
        await handler(event)
      File "/root/heisenbridge/lib/python3.9/site-packages/heisenbridge/private_room.py", line 628, in on_mx_message
        await self.serv.api.post_room_receipt(event["room_id"], event["event_id"])
      File "/root/heisenbridge/lib/python3.9/site-packages/heisenbridge/matrix.py", line 254, in post_room_receipt
        return await self.call("POST", f"/_matrix/client/r0/rooms/{room_id}/receipt/{receipt_type}/{event_id}")
      File "/root/heisenbridge/lib/python3.9/site-packages/heisenbridge/matrix.py", line 92, in call
        raise self._matrix_error(ret)
    heisenbridge.matrix.MatrixError: M_NOT_JSON
    

    and on synapse:

    2021-11-22 16:36:09,025 - synapse.http.servlet - 620 - WARNING - POST-69100 - Unable to parse JSON: Expecting value: line 1 column 1 (char 0) (b'')
    

    I'm not sure if I can dump the json easily, unless there is a heisenbridge flag I can pass to have it spew out debug?

    While control rooms work fine, any attempt to send (or receive) messages in joined irc channels/PMs cause the above

    opened by jwh 4
  • Allow quoting full messages when replying

    Allow quoting full messages when replying

    This adds a configuration option quote_messages which allows quoting full messages when replying to a message in Matrix.

    Disabled (default, and current behavior):

    <alice> hello
    <bob> alice: hi
    

    Enabled:

    <alice> hello
    <bob> > alice: hello
    <bob> hi
    

    I find that when there are a lot of people talking on a channel, or when answering an old message, quoting it fully makes more sense than just mentioning the author.

    Since I didn't want to change the behavior too much, I kept the current behavior as the default, but I suggest we change the default to the new behavior (or even remove the config option and make it the only behavior...?).

    opened by blastrock 5
  • Disable Heisenbridge reactions on relaybotted rooms (or add config key)

    Disable Heisenbridge reactions on relaybotted rooms (or add config key)

    When a room has hundreds of users and only fraction of them come from IRC, the reactions (scissors, chain, ...) just confuse users.

    image

    IRC bridge should remain silent when it's in relaybot mode or alternatively it should be a configuration option per channel.

    opened by zouppen 0
  • error with

    error with "status" command

    Aug 26 20:39:22 pandora.woodpeckersnest.space matrix-heisenbridge[4051808]: ERROR:root:Ignoring exception from room handler. This should be fixed.
    Aug 26 20:39:22 pandora.woodpeckersnest.space matrix-heisenbridge[4051808]: Traceback (most recent call last):
    Aug 26 20:39:22 pandora.woodpeckersnest.space matrix-heisenbridge[4051808]:   File "/opt/heisenbridge/heisenbridge/__main__.py", line 202, in _on_mx_event
    Aug 26 20:39:22 pandora.woodpeckersnest.space matrix-heisenbridge[4051808]:     await room.on_mx_event(event)
    Aug 26 20:39:22 pandora.woodpeckersnest.space matrix-heisenbridge[4051808]:   File "/opt/heisenbridge/heisenbridge/room.py", line 100, in on_mx_event
    Aug 26 20:39:22 pandora.woodpeckersnest.space matrix-heisenbridge[4051808]:     await handler(event)
    Aug 26 20:39:22 pandora.woodpeckersnest.space matrix-heisenbridge[4051808]:   File "/opt/heisenbridge/heisenbridge/control_room.py", line 240, in on_mx_message
    Aug 26 20:39:22 pandora.woodpeckersnest.space matrix-heisenbridge[4051808]:     await self.commands.trigger(command, tail)
    Aug 26 20:39:22 pandora.woodpeckersnest.space matrix-heisenbridge[4051808]:   File "/opt/heisenbridge/heisenbridge/command_parse.py", line 95, in trigger
    Aug 26 20:39:22 pandora.woodpeckersnest.space matrix-heisenbridge[4051808]:     await self.trigger_args(args, tail, allowed, forward)
    Aug 26 20:39:22 pandora.woodpeckersnest.space matrix-heisenbridge[4051808]:   File "/opt/heisenbridge/heisenbridge/command_parse.py", line 79, in trigger_args
    Aug 26 20:39:22 pandora.woodpeckersnest.space matrix-heisenbridge[4051808]:     await func(cmd_args)
    Aug 26 20:39:22 pandora.woodpeckersnest.space matrix-heisenbridge[4051808]:   File "/opt/heisenbridge/heisenbridge/control_room.py", line 412, in cmd_status
    Aug 26 20:39:22 pandora.woodpeckersnest.space matrix-heisenbridge[4051808]:     users.sort()
    Aug 26 20:39:22 pandora.woodpeckersnest.space matrix-heisenbridge[4051808]: TypeError: '<' not supported between instances of 'str' and 'NoneType'
    
    opened by roughnecks 0
  • Bot not working

    Bot not working

    Since a while now, the bridge bot is not working anymore, I'm not sure, but maybe since the last synapse update? Also tried installing it on a new instance of synapse but isn't working either. These are the verbose logs I got when starting the bridge and joining a room with it:

    (mautrix-irc) root@ChatMatrix:/opt/mautrix-irc# python -m heisenbridge -c /opt/mautrix-irc/registration.yaml --verbose
    Heisenbridge v1.13.1
    INFO:root:We are @heisenbridge:flowerhouse.at
    INFO:root:We (@heisenbridge:flowerhouse.at) are not a server admin, inviting puppets is required.
    INFO:aiohttp.access:127.0.0.1 [19/Aug/2022:17:57:48 +0000] "PUT /transactions/127?access_token=********* HTTP/1.1" 200 158 "-" "Synapse/1.65.0"
    INFO:root:Got an invite from @fabian:flowerhouse.at
    INFO:root:Whitelisted user @fabian:flowerhouse.at invited us, going to accept.
    ERROR:root:Failed to create control room.
    Traceback (most recent call last):
      File "/opt/mautrix-irc/lib/python3.9/site-packages/heisenbridge/__main__.py", line 268, in _on_mx_event
        await room.save()
      File "/opt/mautrix-irc/lib/python3.9/site-packages/heisenbridge/room.py", line 88, in save
        await self.az.intent.set_account_data("irc", config, self.id)
    AttributeError: 'ControlRoom' object has no attribute 'az'
    

    Version: {"server_version":"1.65.0","python_version":"3.9.2"} Heisenbridge version: 1.13.1

    opened by Tropaion 4
  • Can't join channels with non-ascii characters

    Can't join channels with non-ascii characters

    ...or at the very least channels with Japanese characters in them. For example, if I try to join #日本語 on euirc, I get the following:

    screenshot

    Is that an actual problem or am I just doing something dumb?

    bug 
    opened by Rouji 3
Releases(v1.14.0)
  • v1.13.0(May 18, 2022)

    • Read default port and listen address from config url (@BtbN)
    • Improvements to pillifying IRC nicks, again
    • Fixes for AUTOQUERY not always working correctly
    • Allow anyone to use STATUS command to get their own status
    • Filter control characters only for plumbs so people can send garbage to IRC if they wish from Matrix
    • Support for converting IRC color codes to Matrix (@tjaderxyz)
    • Fixed compose docker Synapse configuration for registration
    • Improved Python 3.10 compatibliy (@BtbN)
    • Hidden room to hide joins using restricted rooms join rule (@BtbN)

    Enabling hidden room functionality additionally requires either re-joining channels or having them already at v9 and using the UPGRADE command.

    Source code(tar.gz)
    Source code(zip)
    heisenbridge-1.13.0.tar.gz(66.58 KB)
  • v1.12.0(Apr 22, 2022)

    • Make MAXLINES and PASTEBIN option available to every room & global defaults (thanks @BtbN)
    • Fix 'NoneType' is not iterable error (thanks @BtbN)
    • Upgrade to Mautrix 0.16

    Not much to see here. A small contribution release which is always a nice thing when people come around and help 🤗.

    Source code(tar.gz)
    Source code(zip)
    heisenbridge-1.12.0.tar.gz(62.61 KB)
  • v1.11.0(Apr 3, 2022)

    • Fixed retry behavior on startup to wait for HS startup
    • Ignore TAGMSG messages from IRC server
    • Fixed HTML messages not working as commands
    • Fixed room aliases in messages dropping the message completely
    • Upgrade to Mautrix 0.15

    This release also breaks support for homeservers not supporting the "v3" API path so if you run Synapse 1.47 or older the bridge will not start.

    Source code(tar.gz)
    Source code(zip)
    heisenbridge-1.11.0.tar.gz(62.23 KB)
  • v1.10.0(Jan 14, 2022)

    • RELAYMSG sending support 🚀
    • Allow forwarding all IRC noise to network room
    • Support ZNC self-message caps ✅
    • Support CHGHOST caps (prevents leave+join on host change) ✅
    • Fix owner auto-registration (regression) 🐛
    • Upgrade to Mautrix 0.14 ⬆️

    Not a breaking change but the caps support will cause connections to networks that ignore CAP requests take a few seconds longer unless you remove all the default caps for said network and it will never try requesting them again.

    Mautrix 0.14 upgrade bumps the minimum version as well so packages beware.

    Source code(tar.gz)
    Source code(zip)
    heisenbridge-1.10.0.tar.gz(61.87 KB)
  • v1.9.0(Dec 29, 2021)

    • Spaces support 🌃
    • Proper SASL external with CertFP with mechanism override option (see notes)
    • Disconnect and cleanup from networks that have no rooms open ♻️
    • Reply (and reject) DM requests to ghosts with QUERY command ↪️
    • Try to keep IRC users in the room at all costs if they are on the IRC channel
    • Prevent accidental namespace changes to cause mayhem
    • Conduit support was broken in 1.8.x but fixed again in 1.9.0, sorry

    Upgrade warning: CertFP SASL has been updated to do SASL external flow by default. If you are upgrading and have used CertFP with OFTC you need to run SASL --mechanism=none for it to connect again.

    Source code(tar.gz)
    Source code(zip)
    heisenbridge-1.9.0.tar.gz(60.58 KB)
  • v1.8.1(Dec 24, 2021)

  • v1.8.0(Dec 20, 2021)

  • v1.7.1(Nov 22, 2021)

  • v1.7.0(Nov 18, 2021)

    • Implement "best effort" basic IRC moderation in plumbed rooms if bot has ops on IRC
    • Allow configuring topic sync for plumbs (IRC<->Matrix or one way)
    • Allow using forward slash (/) as MXID separator for IRC ghosts
    • Bump max mautrix version to <0.12

    The separator for IRC ghosts can now be changed to forward slash (/) from the default underscore (_). This happens by modifying the regex in the registration file. Only do this for new installations and it will cause all IRC users to duplicate in rooms who you can't remove and probably other bad side effects as well. The default may be changed in the future.

    Source code(tar.gz)
    Source code(zip)
    heisenbridge-1.7.0.tar.gz(59.23 KB)
  • v1.6.0(Nov 12, 2021)

  • v1.5.0(Nov 5, 2021)

    • Allow opening multiple simultaneous connections to the same network
    • New STOP/STAHP ROOM command to end a long paste flood
    • Clear channel send queue if the user gets kicked to prevent continuing flood on rejoin
    • New KB ROOM command to do a proper kick & ban (contributed by GitHub user @blastrock, thanks!)

    Upgrading from previous version to v1.5.0 will cause a small migration for every channel/pm that is open so it might take a little longer for the first startup to complete. If no multiple network connections are opened it is safe to downgrade but if someone uses the feature it will cause shenanigans for the duplicate networks in the older version.

    Source code(tar.gz)
    Source code(zip)
    heisenbridge-1.5.0.tar.gz(57.53 KB)
  • v1.4.1(Oct 30, 2021)

  • v1.4.0(Oct 28, 2021)

    • Free form AUTOCMD after joining a channel, per channel
    • Automatic rejoin on invite or kick (invite enabled by default)
    • AVATAR network room command to set avatars for IRC users (admin only)
    • WHOIS room command for PMs, PART for channels
    • Add ROOM command in network room to run channel room commands safely
    • Move PLUMBCFG stuff under ROOM command

    QoL stuff, remember to use ROOM command instead of PLUMBCFG now.

    Source code(tar.gz)
    Source code(zip)
    heisenbridge-1.4.0.tar.gz(56.53 KB)
  • v1.3.0(Oct 21, 2021)

  • v1.2.1(Sep 30, 2021)

  • v1.2.0(Sep 23, 2021)

    • Message formatting (from HTML to text) has been drastically improved
    • CTCP replies are now shown correctly but still ignored
    • Mentions/pills always honor room nick
    • Plumb notices don't loop around anymore
    • Self replies don't prefix with own nick
    • Single line truncation works when max lines is 1
    • Multiple fixes to displaynames or messages containing control characters leaking to IRC
    • New dependency: mautrix-python
    • Minimum Python version requirement has been bumped to 3.7

    PyPI: https://pypi.org/project/heisenbridge/1.2.0/

    Source code(tar.gz)
    Source code(zip)
    heisenbridge-1.2.0.tar.gz(50.39 KB)
  • v1.1.2(Sep 21, 2021)

  • v1.1.1(Sep 17, 2021)

  • v1.1.0(Sep 14, 2021)

    • Message edits are now supported and use stupid context aware "compact enough" edit format (+ - *)
    • Media will be quarantined if you redact them and the bridge is an admin on the HS
    • Public media URL can now be overridden in control room if auto-detection fails
    • New plumbs respect the default member sync setting
    • ; is included in pill separators
    Source code(tar.gz)
    Source code(zip)
    heisenbridge-v1.1.0.tar.gz(46.73 KB)
  • v1.0.1(Sep 3, 2021)

    Show part reason, fix emotes after refactoring just before 1.0.0, fix CTCP leaking on plumbs, show real errors when debugging connectivity issues in verbose mode.

    Source code(tar.gz)
    Source code(zip)
  • v1.0.0(Aug 17, 2021)

Owner
Toni Spets
🤔🤔🤔🤦
Toni Spets
Cobalt Strike Sleep Python Bridge

This project is 'bridge' between the sleep and python language. It allows the control of a Cobalt Strike teamserver through python without the need for for the standard GUI client. NOTE: This project is very much in BETA. The goal is to provide a playground for testing and is in no way an officially support feature. Perhaps this could be something added in the future to the core product.

Cobalt Strike 140 Jan 4, 2023
A wrapper script to make working with ADB (Android Debug Bridge) easier

Python-ADB-Wrapper A wrapper script to make working with ADB (Android Debug Bridge) easier This project was just a simple test to see if I could wrap

18iteration 1 Nov 25, 2021
A maubot plugin to invite users to Matrix rooms according to LDAP groups

LDAP Inviter Bot This is a maubot plugin that invites users to Matrix rooms according to their membership in LDAP groups.

David Mehren 14 Dec 9, 2022
A dot matrix rendered using braille characters.

⣿ dotmatrix A dot matrix rendered using braille characters. Description This library provides class called Matrix which represents a dot matrix that c

Tim Fischer 25 Dec 12, 2022
A Python wrapper for Matrix Synapse admin API

Synapse-admin-api-python A Python wrapper for Matrix Synapse admin API. Versioning This library now supports up to Synapse 1.45.0, any Admin API intro

Knugi 9 Sep 28, 2022
A module to prevent invites and joins to Matrix rooms by checking the involved server(s)' domain.

Synapse Domain Rule Checker A module to prevent invites and joins to Matrix rooms by checking the involved server(s)' domain. Installation From the vi

matrix.org 4 Oct 24, 2022
A Github Action for sending messages to a Matrix Room.

matrix-commit A Github Action for sending messages to a Matrix Room. Screenshot: Example Usage: # .github/workflows/matrix-commit.yml on: push:

null 3 Sep 11, 2022
Socorro is the Mozilla crash ingestion pipeline. It accepts and processes Breakpad-style crash reports. It provides analysis tools.

Socorro Socorro is a Mozilla-centric ingestion pipeline and analysis tools for crash reports using the Breakpad libraries. Support This is a Mozilla-s

Mozilla Services 552 Dec 19, 2022
Sublime Text 2/3 style auto completion for ST4

Hippie Autocompletion Sublime Text 2/3 style auto completion for ST4: cycle through words, do not show popup. Simply hit Tab to insert completion, hit

Alexander Schepanovski 20 May 19, 2022
Open source style Deep Dream project

DeepDream ⚠️ If you don't have a gpu with cuda, the style transfer execution time will be much longer Prerequisites Python >=3.8.10 How to Install sud

Patrick martins de lima 7 May 17, 2022
Paimon is a pixie (or script) who was made for anyone from {EPITECH} who are struggling with the Coding Style.

Paimon Paimon is a pixie (or script) who was made for anyone from {EPITECH} who are struggling with the Coding Style. Her goal is to assist you in you

Lyy 2 Oct 17, 2021
A module to develop and apply old-style links

Old-Linkage-Dev (OLD) Old Linkage Development is a module to develop and apply old-style links. Old-style links stand for some traditional or conventi

Tarcadia 2 Dec 4, 2021
WordPress-style shortcodes for Python

Python Shortcodes WordPress-style shortcodes for Python Create and use WordPress-style shortcodes in your Python based app. Example # static output de

Bob 1 Dec 22, 2021
Generates images with semantic content from distribution A in the style of distribution B

A2B Generates images with semantic content from distribution A in the style of d

Richard Herbert 2 Dec 27, 2021
SpellingBeeSolver - This program generates solutions to NYT style spelling bee problems.

SpellingBeeSolver This program generates solutions to NYT style spelling bee problems. The initial version of this program is being written in Python

null 1 Jan 1, 2022
BoostIRC - IRC Bot which posts boosts to IRC

BoostIRC Quick Start git clone https://github.com/valcanobacon/BoostIRC.git cd B

null 7 Dec 23, 2022
2022-bridge - Example code belonging to the Bridge pattern video

Let's Take The Bridge Pattern To The Next Level This video covers how the bridge

null 11 Jun 14, 2022
A Matrix-Instagram DM puppeting bridge

mautrix-instagram A Matrix-Instagram DM puppeting bridge. Documentation All setup and usage instructions are located on docs.mau.fi. Some quick links:

null 89 Dec 14, 2022
Transfer style api - An API to use with Tranfer Style App, where you can use two image and transfer the style

Transfer Style API It's an API to use with Tranfer Style App, where you can use

Brian Alejandro 1 Feb 13, 2022
Companion "receiver" to matrix-appservice-webhooks for [matrix].

Matrix Webhook Receiver Companion "receiver" to matrix-appservice-webhooks for [matrix]. The purpose of this app is to listen for generic webhook mess

Kim Brose 13 Sep 29, 2022