kage

command module
v0.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 11, 2026 License: BSD-2-Clause, GPL-3.0 Imports: 48 Imported by: 0

Documentation

Overview

Jingle <-> SDP translation. This is deliberately in package main rather than in call/ or xmpp/: it's the only code that has to know both pion's SDP shapes and the XEP-0166/0167/0176/0320 XML structs, and neither of those packages may import the other (call stays decoupled from xmpp, same rule ui/crypto follow).

Only what an audio-only, rtcp-mux'd, trickle-ICE WebRTC call needs is translated today, but the content/SSRC plumbing is generalized to handle multiple m-lines (e.g. a future video content) so a second content doesn't require rewriting this file again. jingleContentsFromSDP/ sdpFromJingleContents are reused as-is for ICE restart's transport-replace/ -accept (see callsession.go's attemptICERestart/applyTransportReplace) - same offer/answer shapes, just with fresh ICE credentials.

Directories

Path Synopsis
Package call is the (not yet wired up) audio-call package: Opus encode/decode, mic/speaker I/O, and a pion/webrtc peer connection for a single audio-only Jingle call.
Package call is the (not yet wired up) audio-call package: Opus encode/decode, mic/speaker I/O, and a pion/webrtc peer connection for a single audio-only Jingle call.
Package crypto defines the e2ee seam kage's messaging path is built against.
Package crypto defines the e2ee seam kage's messaging path is built against.
aesgcm
Package aesgcm implements XEP-0454 (OMEMO Media Sharing) file encryption using AES-256-GCM for end-to-end encrypted file sharing via HTTP Upload.
Package aesgcm implements XEP-0454 (OMEMO Media Sharing) file encryption using AES-256-GCM for end-to-end encrypted file sharing via HTTP Upload.
gpg
Package gpg implements crypto.Encrypter by shelling out to the system gpg binary, reusing the user's existing keyring and gpg-agent for passphrases.
Package gpg implements crypto.Encrypter by shelling out to the system gpg binary, reusing the user's existing keyring and gpg-agent for passphrases.
localstore
Package localstore provides fast, purely local at-rest encryption for message history: AES-256-GCM under a key derived from a password via Argon2id.
Package localstore provides fast, purely local at-rest encryption for message history: AES-256-GCM under a key derived from a password via Argon2id.
omemo
Package omemo implements omemo.Store (github.com/jim-ww/omemo-go) backed by kage's shared sqlite database, one Store per (account, protocol) — the upstream Store interface is single-device/single-account by design, and an account speaking both OMEMO protocols maintains two separate Store instances (see account.go's setupOmemo).
Package omemo implements omemo.Store (github.com/jim-ww/omemo-go) backed by kage's shared sqlite database, one Store per (account, protocol) — the upstream Store interface is single-device/single-account by design, and an account speaking both OMEMO protocols maintains two separate Store instances (see account.go's setupOmemo).
Package daemon implements kage's background service: the one process per user session that owns every configured account's XMPP connection, storage, and decryption (GPG/OMEMO).
Package daemon implements kage's background service: the one process per user session that owns every configured account's XMPP connection, storage, and decryption (GPG/OMEMO).
Package ipc is the wire protocol between the kage TUI (a thin client) and the kage background daemon (--background mode), which owns all XMPP connections, storage, and decryption.
Package ipc is the wire protocol between the kage TUI (a thin client) and the kage background daemon (--background mode), which owns all XMPP connections, storage, and decryption.
ui
filepicker
Package filepicker provides a file picker component for Bubble Tea applications.
Package filepicker provides a file picker component for Bubble Tea applications.
Package version holds kage's build version, set via -ldflags -X at build time (see flake.nix).
Package version holds kage's build version, set via -ldflags -X at build time (see flake.nix).
Package xmpp wraps mellium.im/xmpp into a per-account client: dial/auth, roster fetch, sending messages, and listening for incoming stanzas.
Package xmpp wraps mellium.im/xmpp into a per-account client: dial/auth, roster fetch, sending messages, and listening for incoming stanzas.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL