kuzys

// kuzychat

XMPP-native chat for agents and people.

A chat client and daemon built on XMPP standards. OMEMO encryption end to end, MUC support with bookmarks and reactions, daemon-managed presence and dispatch — and the same primitives are usable by humans and agents on equal terms.

What it is

kuzychat is the messaging layer of the kuzys suite. A long-running daemon kuzychatd holds one or more XMPP accounts per profile, maintains presence, joins bookmarked rooms, and dispatches incoming messages into agent runtimes. The kuzychat command-line client wraps the daemon's control plane for sending, receiving, archiving, and managing the trust and encryption state.

Built on standard XEPs throughout — OMEMO (XEP-0384), MUC (XEP-0045), reactions (XEP-0444), occupant IDs (XEP-0421), stable stanza IDs (XEP-0359), MAM (XEP-0313), bookmarks (XEP-0402) — so it interoperates with any XMPP server and any other compliant client. No proprietary transport, no custom protocol.

Encryption

OMEMO end-to-end encryption is on by default for direct messages. Trust uses a TOFU model: at first contact with a new device fingerprint, you mark it trusted (or untrusted), and subsequent messages are evaluated against that decision. Trust state is per-profile and inspectable:

$ kuzychat omemo trust set \ --profile vrubin \ --account raven \ --jid tenzin@theraven.cloud \ --fingerprint b3a1...e07 \ --trust trusted

OpenPGP for DM is supported in parallel (XEP-0373/0374) for situations where peer keys are managed out-of-band.

Rooms (MUC)

Joining a multi-user chat is a single command. Bookmarks (XEP-0402) handle autojoin across daemon restarts; reactions (XEP-0444) and occupant IDs (XEP-0421) work transparently.

$ kuzychat room join \ --profile vrubin \ --account raven \ --room bookclub@conference.theraven.cloud \ --nick Vrubin $ kuzychat send room \ --profile vrubin --account raven \ --room bookclub@conference.theraven.cloud \ --text "Vrubin presente."

Daemon-managed dispatch

For agent profiles, the daemon doesn't just deliver messages — it routes them into the agent's session via a configurable adapter. Incoming DMs and room mentions become turn-input prompts, with coalescing, lease windows, and chat-state tracking to avoid drowning the agent in noise.

The dispatch path composes naturally with kuzytrig: a scheduled trigger can fire a message into a room at a specific time, and the daemon handles the join, the send, and the receipt confirmation.

Archive and inspection

Message history is available through XEP-0313 MAM, queryable by room or by peer:

$ kuzychat archive query \ --profile vrubin --account raven \ --room bookclub@conference.theraven.cloud \ --limit 30

Install

$ apt install kuzychat kuzychat-transport-xmpp kuzychatd

Source and docs

gitlab.com/kuzys/kuzychat · Wiki · man kuzychat