{"id":35142709,"url":"https://github.com/rallep71/dinox","last_synced_at":"2026-04-01T17:38:35.603Z","repository":{"id":329468291,"uuid":"1106479125","full_name":"rallep71/dinox","owner":"rallep71","description":"DinoX - Modern XMPP Chat Client with Video Calls, Voice Messages \u0026 OMEMO 1 + 2 Encryption \u0026 API Botmother and AI API DTMF MQTT Support","archived":false,"fork":false,"pushed_at":"2026-03-14T23:19:33.000Z","size":44265,"stargazers_count":25,"open_issues_count":1,"forks_count":3,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-03-15T06:50:48.364Z","etag":null,"topics":["appimage","chat","dtmf","encryption","flatpak","gnome","gtk4","instant-messaging","jabber","linux","messaging","omemo","omemo2","vala","video-calls","voice-messages","webtrc","windows","xmpp","xmpp-client"],"latest_commit_sha":null,"homepage":"https://dinox.handwerker.jetzt","language":"Vala","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rallep71.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY_AUDIT.md","support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"rallep71","ko_fi":"rallep"}},"created_at":"2025-11-29T10:34:18.000Z","updated_at":"2026-03-14T23:19:36.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/rallep71/dinox","commit_stats":null,"previous_names":["rallep71/dinox"],"tags_count":165,"template":false,"template_full_name":null,"purl":"pkg:github/rallep71/dinox","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rallep71%2Fdinox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rallep71%2Fdinox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rallep71%2Fdinox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rallep71%2Fdinox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rallep71","download_url":"https://codeload.github.com/rallep71/dinox/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rallep71%2Fdinox/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30633243,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-17T17:32:55.572Z","status":"ssl_error","status_checked_at":"2026-03-17T17:32:38.732Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["appimage","chat","dtmf","encryption","flatpak","gnome","gtk4","instant-messaging","jabber","linux","messaging","omemo","omemo2","vala","video-calls","voice-messages","webtrc","windows","xmpp","xmpp-client"],"created_at":"2025-12-28T12:09:36.736Z","updated_at":"2026-04-01T17:38:35.593Z","avatar_url":"https://github.com/rallep71.png","language":"Vala","funding_links":["https://github.com/sponsors/rallep71","https://ko-fi.com/rallep"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003cimg src=\"docs/assets/dinox-512.png\" width=\"200\" alt=\"DinoX Logo\"\u003e\n\n# DinoX\n\n[![License: GPL-3.0](https://img.shields.io/badge/License-GPL%203.0-blue.svg)](LICENSE)\n[![GTK4](https://img.shields.io/badge/GTK-4.14.5-4a86cf.svg)](https://www.gtk.org/)\n[![Release](https://img.shields.io/github/v/release/rallep71/dinox)](https://github.com/rallep71/dinox/releases)\n[![Translation status](https://hosted.weblate.org/widget/dinox/translations/svg-badge.svg)](https://hosted.weblate.org/engage/dinox/)\n\n**The First XMPP Messenger with Extensible REST API, AI Support, MQTT \u0026 Advanced Security Features**\n\nBuilt for ultimate privacy with OMEMO 1 + 2, integrated OpenPGP Key Manager, integrated Tor \u0026 Obfs4proxy and full local database encryption.\nWebRTC Audio/Video Calls, decentralized MUJI Group Video Calls (hardware accelerated), voice messages, video messages, message retraction and advanced MUC moderation — all in a modern GTK4/libadwaita interface with System Tray support.\n\nLocal API Server, Botmother Bot Management and AI Integration (9 providers incl. OpenClaw).\nMQTT Plugin for IoT sensor data, topic subscriptions, sparkline charts, XMPP bridging, Home Assistant integration, ejabberd \u0026 Prosody support, and Node-RED integration.\nDTMF Support (RFC 4733) with Dialpad UI for XMPP SIP Provider telephony.\n\n[Website](https://dinox.handwerker.jetzt) • [Download](#installation) • [Features](#key-features) • [XEP Support](#xep-support) • [Build](docs/internal/BUILD.md) • [Debug](docs/internal/DEBUG.md) • [Testing](docs/internal/TESTING.md) • [Changelog](docs/internal/CHANGELOG.md) • [API \u0026 Botmother AI Guide](docs/internal/API_BOTMOTHER_AI_GUIDE.md) • [MQTT Plugin](docs/internal/MQTT_PLUGIN.md) • [MQTT User Guide](docs/internal/MQTT_UI_GUIDE.md) • [Development Plan](docs/internal/DEVELOPMENT_PLAN.md) • [Contributing](docs/internal/CONTRIBUTING.md) • [Security Audit](SECURITY_AUDIT.md)\n\n\u003c/div\u003e\n\n---\n\n## Key Features\n\n| Feature | Description |\n|---------|-------------|\n| **Encrypted File Upload** | AES-GCM URI Scheme \u0026 XEP-0448 support for secure file sharing |\n| **Full Local Encryption** | All local files (avatars, stickers, transfers) are encrypted at rest (AES-256-GCM) |\n| **Secure Deletion** | Global history deletion (both sides) with smart throttling \u0026 zero-trace cache cleanup |\n| **OMEMO Encryption** | End-to-end encryption for messages and files (OMEMO Legacy + OMEMO 2) |\n| **OpenPGP Encryption** | XEP-0027 (Legacy) + XEP-0373/0374 with key management, generation, deletion \u0026 revocation |\n| **Encrypted Local Database** | Local data is stored in an encrypted SQLCipher database (password required at startup) |\n| **Change Database Password** | Change the local database password via Preferences (SQLCipher rekey) |\n| **Panic Wipe** | Quickly wipe local DinoX data (`Ctrl+Shift+Alt+P`) and exit (also triggered after 3 failed unlock attempts) |\n| **OpenPGP Keyring Isolation** | Uses an app-scoped `GNUPGHOME` so Panic Wipe removes OpenPGP material |\n| **Disappearing Messages** | Auto-delete messages after 15min, 30min, 1h, 24h, 7d or 30d |\n| **MUJI Group Calls** | Multi-party audio/video conferences (mesh-based) |\n| **1:1 Voice \u0026 Video** | Crystal clear calls with Echo Cancellation, Noise Suppression, AGC \u0026 Transient Suppression |\n| **DTMF \u0026 Dialpad** | RFC 4733 telephone-event support with Dialpad UI for XMPP SIP Provider telephony (hotlines, IVR, conference controls) |\n| **Voice Messages** | Record and send audio messages (AAC format) |\n| **Video Messages** | Record and send video messages with camera preview (H.264+AAC in MP4, max 720p, 120s) |\n| **Inline Video Player** | Play videos directly in chat (no external player) |\n| **Group Chats (MUC)** | Full support with moderation, roles, private rooms |\n| **Out-of-the-Box Tor** | Integrated Tor \u0026 Obfs4proxy (ZERO-Config) for instant privacy \u0026 anonymity |\n| **System Tray** | Background mode with StatusNotifierItem |\n| **Message Retraction** | Delete messages for everyone (XEP-0424) |\n| **Emoji Reactions** | React to messages (XEP-0444) |\n| **Stickers** | Send \u0026 receive sticker packs (XEP-0449) |\n| **Message Replies** | Quote and reply to messages (XEP-0461) |\n| **MQTT Plugin** | IoT sensor data via MQTT 5.0 — topic subscriptions, alerts, sparkline charts, XMPP bridging, Home Assistant integration, Prosody mod_pubsub_mqtt support, ejabberd mod_mqtt support, Node-RED integration with free-text publish/response |\n| **MUC Moderation** | Kick, ban (timed), manage roles (XEP-0425) |\n| **TLS Certificate Pinning** | Trust self-signed certs for self-hosted servers |\n| **TLS Certificate Info** | View TLS certificate details (issuer, validity, fingerprint) in account settings |\n| **Backup \u0026 Restore** | Full data backup with optional GPG encryption (AES-256) |\n| **Database Maintenance** | Clean orphaned records, optimize storage |\n| **PGP Key Management** | Generate, select, delete, revoke OpenPGP keys in-app. Automatic key exchange via PEP |\n| **47 Languages** | ~85% translated — [help translate on Weblate](https://hosted.weblate.org/engage/dinox/) |\n| **Dark Mode** | System theme or manual toggle |\n\n## Installation\n\n### Windows\n\nDownload the latest Windows build from [GitHub Releases](https://github.com/rallep71/dinox/releases/latest). Extract the ZIP archive and run `dinox.exe`.\n\nTo build DinoX from source on Windows, see the build instructions: [Deutsch](docs/internal/WINDOWS_BUILD.md) | [English](docs/internal/WINDOWS_BUILD_EN.md)\n\nThe first time you start it up after unpacking may take a little while; just skip the Windows warning.\nGStreamer and the necessary databases are being set up in the background; on the second start, Windows Defender will run a scan again, which also causes a slight delay, but after that Dinox will start up normally.\nThe same applies if you build it yourself from the package repositories.\n\nGeolocation for locations is not available on Windows.\n### Flatpak\n\nDownload from [GitHub Releases](https://github.com/rallep71/dinox/releases/latest)\n\n```bash\n# 1. Install the GNOME runtime (required, one-time setup)\nflatpak install flathub org.gnome.Platform//48\n\n# 2. Install DinoX (replace ARCH with x86_64 or aarch64)\nflatpak install --user dinox-*-ARCH.flatpak\n\n# 3. Run\nflatpak run im.github.rallep71.DinoX\n```\n\n### AppImage\n\n- Download from [GitHub Releases](https://github.com/rallep71/dinox/releases/latest)\n\n  ```bash\n  chmod +x DinoX-*.AppImage\n  ./DinoX-*.AppImage\n  ```\n\n- Install via [AppMan](https://github.com/ivan-hc/AppMan) (rootless)\n\n  ```bash\n  appman -i dinox\n  ```\n\n- Install via [AM](https://github.com/ivan-hc/AM)\n\n  ```bash\n  am -i dinox\n  ```\n\n### AUR\n\nInstall on Arch Linux using the AUR [dinox](https://aur.archlinux.org/packages/dinox) package.\n\nReplace with your preferred AUR helper.\n\n```bash\nparu -S dinox\n```\n\n### Build from Source\n\nDinoX uses Meson/Ninja and requires several custom dependencies (SQLCipher with FTS5, webrtc-audio-processing 2.1, libnice 0.1.23, etc.). For complete build instructions including all dependencies, distro-specific notes (Debian/Ubuntu, Fedora, Arch), and the automated build script, see **[BUILD.md](docs/internal/BUILD.md)**.\n\n## Local data encryption\n\nDinoX stores your local data (accounts, messages, settings, cached metadata) in an **encrypted SQLCipher database**.\n\n- You will be prompted for a **password on startup**.\n- If you forget the password, the database cannot be recovered.\n- A **Panic Wipe** action is available via the app menu and the shortcut `Ctrl+Shift+Alt+P`.\n\n## Audio/Video calling notes\n\nDinoX 1:1 calling focuses on cross-client interoperability (notably with **Conversations (Android)** and **Monal (iOS)**) while keeping the existing media stack:\n\n- **Media stack:** GStreamer (RTP/rtpbin + WebRTC elements), `libnice` (ICE), `gnutls` (DTLS), `libsrtp2` (SRTP).\n- **PipeWire Support:** DinoX integrates explicitly with PipeWire for modern audio support.\n  \u003e **Important:** If your system uses PipeWire (common on Fedora, Manjaro, Mint 22+), you **must** install the GStreamer PipeWire plugin (usually `gstreamer1.0-pipewire` or `gst-plugin-pipewire`). This is a separate package from standard GStreamer plugins! Without it, calls or voice notes will fallback to the legacy sound server (Pulse/ALSA), which may lead to stability issues or incorrect device selection.\n- **Security profile:** **DTLS-SRTP only** (no SDES-SRTP).\n- **Baseline codecs:** **Opus** (audio) and **VP8** (video) for reliable interop.\n- **Optional audio quality:** `webrtc-audio-processing` enables AEC/NS/AGC if present.\n  \u003e **Note:** Many distributions ship outdated versions. For best quality (Echo Cancellation), we strongly recommend building **version 2.1+** from source. See [BUILD.md](docs/internal/BUILD.md#building-webrtc-audio-processing-21-manual).\n\nIf you are building from source using distro packages, ensure you are on a sufficiently new `libnice` (recommended: `\u003e= 0.1.23`). For collecting reproducible call logs, see [DEBUG.md](docs/internal/DEBUG.md).\n\n## XEP Support\n\nDinoX implements **90+ XMPP Extension Protocols**. Here are the key ones with full UI support:\n\n### Messaging\n| XEP | Name | Status |\n|-----|------|--------|\n| XEP-0080 | User Location (Send \u0026 Receive) | Full |\n| XEP-0085 | Chat State Notifications | Full |\n| XEP-0184 | Message Delivery Receipts | Full |\n| XEP-0308 | Last Message Correction | Full |\n| XEP-0313 | Message Archive Management | Full |\n| XEP-0333 | Chat Markers | Full |\n| XEP-0424 | Message Retraction | Full |\n| XEP-0444 | Message Reactions | Full |\n| XEP-0449 | Stickers | Full |\n| XEP-0461 | Message Replies | Full |\n\n### Profile \u0026 Contact\n| XEP | Name | Status |\n|-----|------|--------|\n| XEP-0054 | vCard-temp | Full |\n| XEP-0055 | Jabber Search | Full |\n| XEP-0077 | In-Band Registration | Full |\n| XEP-0158 | CAPTCHA Forms | Full |\n| XEP-0172 | User Nickname | Full |\n| XEP-0292 | vCard4 | Full |\n\n### Security\n| XEP | Name | Status |\n|-----|------|--------|\n| XEP-0384 | OMEMO Encryption (Legacy + OMEMO 2) | Full |\n| XEP-0420 | Stanza Content Encryption (SCE) | Full |\n| XEP-0373 | OpenPGP for XMPP | Full |\n| XEP-0374 | OpenPGP for XMPP Instant Messaging | Full |\n| XEP-0027 | Current Jabber OpenPGP Usage | Full |\n| XEP-0448 | Encryption for Stateless File Sharing | Full |\n| XEP-0454 | OMEMO Media Sharing | Full |\n\n### Voice \u0026 Video\n| XEP | Name | Status |\n|-----|------|--------|\n| XEP-0166 | Jingle | Full |\n| XEP-0167 | Jingle RTP | Full |\n| XEP-0272 | MUJI (Group Calls) | Full |\n| XEP-0176 | Jingle ICE | Full |\n| XEP-0320 | Jingle DTLS | Full |\n\n### Multi-User Chat\n| XEP | Name | Status |\n|-----|------|--------|\n| XEP-0045 | Multi-User Chat | Full |\n| XEP-0249 | Direct MUC Invitations | Full |\n| XEP-0421 | Anonymous Unique IDs | Full |\n| XEP-0425 | Message Moderation | Full |\n| XEP-0486 | MUC Avatars | Full |\n\n### File Transfer\n| XEP | Name | Status |\n|-----|------|--------|\n| XEP-0363 | HTTP File Upload | Full |\n| XEP-0234 | Jingle File Transfer | Full |\n| XEP-0447 | Stateless File Sharing | Full |\n\n### Core\n| XEP | Name | Status |\n|-----|------|--------|\n| XEP-0030 | Service Discovery | Full |\n| XEP-0115 | Entity Capabilities | Full |\n| XEP-0198 | Stream Management | Full |\n| XEP-0280 | Message Carbons | Full |\n| XEP-0352 | Client State Indication | Full |\n| XEP-0092 | Software Version | Full |\n| XEP-0368 | SRV for XMPP over TLS | Full |\n\n## Screenshots\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/assets/chat.png\" width=\"45%\" alt=\"Voice and Video Calls\"\u003e\n  \u003cimg src=\"docs/assets/privt.png\" width=\"45%\" alt=\"Private MUC Rooms\"\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/assets/voise.png\" width=\"45%\" alt=\"Voice Messages\"\u003e\n  \u003cimg src=\"docs/assets/backup.png\" width=\"45%\" alt=\"Data Backup\"\u003e\n\u003c/p\u003e\n\n## Resources\n\n| Resource | Link |\n|----------|------|\n| **Website** | [dinox.handwerker.jetzt](https://dinox.handwerker.jetzt) |\n| **Releases** | [GitHub Releases](https://github.com/rallep71/dinox/releases) |\n| **Issues** | [Bug Tracker](https://github.com/rallep71/dinox/issues) |\n| **XMPP Chat Room** | [dinox@conference.chat.handwerker.jetzt](xmpp:dinox@conference.chat.handwerker.jetzt?join) |\n| **XMPP Contact** | [dinox@chat.handwerker.jetzt](xmpp:dinox@chat.handwerker.jetzt?message) |\n| **Email** | dinox@handwerker.jetzt |\n| **Ko-fi** | [ko-fi.com/rallep](https://ko-fi.com/rallep) |\n\n## Contributing\n\nSee [CONTRIBUTING.md](docs/internal/CONTRIBUTING.md) for how to contribute.\n\n## Debug Mode\n\nSee [DEBUG.md](docs/internal/DEBUG.md) for debugging instructions.\n\n## License\n\n**GPL-3.0** - See [LICENSE](LICENSE) for details.\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**Made for the XMPP community**\n\n[Star on GitHub](https://github.com/rallep71/dinox) | [Report Issues](https://github.com/rallep71/dinox/issues) | [Support](https://ko-fi.com/rallep)\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frallep71%2Fdinox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frallep71%2Fdinox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frallep71%2Fdinox/lists"}