1 unstable release

0.2.0 Apr 7, 2024

#8 in #own

Download history 127/week @ 2024-04-07 3/week @ 2024-04-14

130 downloads per month

MIT license

36KB
403 lines

chaz

Chaz is chaz.

This is a Matrix bot that connects to AIChat to provide access to "10+ AI platforms, including OpenAI, Gemini, Claude, Mistral, LocalAI, Ollama, VertexAI, Ernie, Qianwen..." all from within Matrix.

You do NOT need to be running your own Matrix homeserver to use this. It is a bot that should be usable with any homeserver, you'll just need to create an account for it.

You will need your own API keys or your own local AI already configured.

Install

chaz is only packaged on crates.io, but it's recommended that you run from git HEAD for now.

For Nix users, this repo contains a Nix flake. See the setup section for details on configuring.

Setup

First, setup an account on any Matrix server for the bot to use.

Create a config file for the bot with its login info.

IMPORTANT: Make sure that you setup your allow_list or the bot will not respond

homeserver_url: https://matrix.org
username: "chaz"
password: "" # Optional, if not given it will ask for it on first run
allow_list: "" # Regex for allowed accounts.
state_dir: "$XDG_STATE_HOME/chaz" # Optional, for setting the chaz state directory
aichat_config_dir: "$AICHAT_CONFIG_DIR" # Optional, for using a separate aichat config
chat_summary_model: "" # Optional, set a different model than the default to use for summarizing the chat

Nix

Development is being done using a Nix flake. The easiest way to install chaz is to use nix flakes.

 nix run github:arcuru/chaz

The flake contains an overlay to make it easier to import into your own flake config. To use, add it to your inputs:

    inputs.chaz.url = "github:arcuru/chaz";

And then add the overlay inputs.chaz.overlays.default to your pkgs.

The flake also contains a home-manager module for installing chaz as a service. Import the module into your home-manager config and you can configure chaz all from within nix:

{inputs, ... }: {
  imports = [ inputs.chaz.homeManagerModules.default ];
  services.chaz = {
    enable = true;
    settings = {
        homeserver_url = "https://matrix.jackson.dev";
        username = "chaz";
        password = "hunter2";
        allow_list = "@me:matrix.org|@myfriend:matrix.org";
    };
  };
}

Running

To run it, simply:

  1. Install chaz and setup its config.
  2. Install AIChat.
  3. Configure AIChat with the models and defaults that you want.
  4. Create a config file for chaz with login details.
  5. Run the bot and specify it's config file location chaz --config config.yaml.

The bot will not respond to older messages sent while it wasn't running to prevent overwhelming the backend.

Dependencies

~25–45MB
~752K SLoC