1
0
Fork
You've already forked plural-kitty
0
A WIP tool for plural users to manage their plural identities on matrix.
  • Rust 94.3%
  • Nix 4.2%
  • Shell 1.1%
  • PLpgSQL 0.4%
Olivia Lee e0d27f9af9
trim trailing newlines from password files
It's common for editors to automatically append a trailing newline to
text files. It's generally not possible to have a password with a
newline in it and getting a invalid password error because of the
trailing newline is very confusing, so it is standard for tools to trim
trailing newlines when lodaing passwords from files.
2026年03月30日 13:13:12 -07:00
.git_hooks Add git hooks to repo 2023年08月07日 02:44:09 -04:00
docs/config-examples add config option to control log format 2026年03月30日 12:14:43 -07:00
migrations Make DB use the same names as everything else 2023年08月07日 02:59:55 -04:00
scripts Add reset db script 2023年08月07日 01:08:59 -04:00
src trim trailing newlines from password files 2026年03月30日 13:13:12 -07:00
test_server Set bot display name and avatar in config 2023年09月04日 19:16:02 -04:00
.gitignore Add account tracking 2023年08月06日 21:49:54 -04:00
build.rs Avatar suppor 2023年07月24日 06:35:09 -04:00
Cargo.lock add config option to control log format 2026年03月30日 12:14:43 -07:00
Cargo.toml add config option to control log format 2026年03月30日 12:14:43 -07:00
default.nix Redo nix flake, package, module, and shell 2023年11月13日 03:57:06 -05:00
docker-compose.yaml Look up user id in db 2023年06月12日 04:02:34 -04:00
flake.lock flake.lock: Update 2026年03月26日 11:31:05 -07:00
flake.nix flake.lock: Update 2026年03月26日 11:31:05 -07:00
module.nix allow setting log levels in the config 2026年03月30日 12:14:43 -07:00
README.md Fix type in README 2023年08月09日 18:53:29 -04:00
rust-toolchain Test server config 2023年06月11日 21:50:49 -04:00
shell.nix flake.lock: Update 2026年03月26日 11:31:05 -07:00
sqlx-data.json assign an explicit column name with 'SELECT true' 2026年03月26日 11:31:04 -07:00
test-accounts Beginning of bot 2023年06月16日 00:57:00 -04:00
TODO.md Formatting and usability improvements 2023年11月13日 01:17:31 -05:00

Plural Kitty

A WIP tool that allows plural users to switch aliases without breaking e2ee or generating a lot of extra events.

Plural Kitty works by sitting in front of Synapses message send endpoint. When a plural user sends a message, the proxy will check if they have the correct name and avatar in that room, and if they do not, the proxy will set it before the message send is forwarded to synapse.

Plural Kitty also has a bot that users DM to set up and change members.

Status

Plural Kitty is still very much a work in progress and should be considered alpha software. You can see a list of current major TODO items here. If you have any ideas to improve Plural Kitty or any questions or issues, please ask about them in #plural-kitty-dev:the-apothecary.club.

Deployment Setup

NixOS (recommend)

  • Add the Plural Kitty flake plural-kitty.url = "git+https://codeberg.org/Apothecary/plural-kitty.git";
  • Import the NixOS module modules = [ plural-kitty.nixosModules.default .. ];
  • Configure Plural Kitty (see example)
  • Configure your HTTP server to forwarded the message send endpoint to Plural Kitty (example for Nginx)

Generic Linux

Packaging Guide

To build Plural Kitty from source you will need:

  • rustc v1.70 or later and cargo
  • openssl development libraries
  • sqlite development libraries

Download the source code then build it by running cargo build -r. The resulting binary will be located at ./target/release/plural-kitty. Install the binary at an appropriate location. You should also create a service for Plural Kitty. An example Systemd service is provided.

Devel Setup

Requirements:

  • Nix

Or:

  • Rust 1.70 or newer
  • podman
  • podman-compose
  • pkg-config
  • Openssl
  • Sqlite
  • Nginx
  • Postgresql 12 or newer
  • sqlx-cli

Set up:

  • Run nix-shell in this directory to install all of the needed programs.
  • Run ./scripts/start-dev-env.sh to start start postgres, synapse, and nginx.
  • Run ./scripts/setup.sh to create the development users
  • Run cargo run ./test_server/config.yaml to run the proxy.
  • You will be prompted for the pk account password, it is kitty.
  • Connect to the test home server at http://localhost:8000 with the client of your choice
  • You can log in as @test:test.local with the password test.

Ports 8000, 8008, 4000, and 5432 will be used by default, make sure they're available on your system.

Also considered using out git hooks by running ln -s ./.git_hooks ./.git/hooks. These hooks will ensure everything stays up to date during development.