
Un terminal écrit en Rust : aujourd’hui pour macOS, Windows et Linux, iOS et Android sont prévus. Sur un Mac avec Apple Intelligence, l’IA fonctionne entièrement hors ligne.

Un cœur, cinq plateformes
Terminal, disposition, connexions et synchro tiennent dans un crate Rust. Des paquets pour macOS, Windows et Linux existent aujourd’hui et l’auteur a testé les trois ; iOS et Android sont prévus.
IA entièrement hors ligne
Sur un Mac avec Apple Intelligence, le chat IA tourne sur l’appareil : sans compte, sans clé, rien ne quitte le Mac.
Rapide, mesuré
Le moteur WebGL2 dessine une grille de 160×50 en environ 1 ms ; Canvas 2D met 4,5 à 7,7 ms.
Votre propre synchro
Via sa propre Nextcloud, chiffrée de bout en bout. Construite ; pas encore essayée avec une vraie Nextcloud.
Bêta, préversion (0.0.1-beta1). La préversion actuelle est une pré-release GitHub avec des paquets pour macOS (Apple Silicon), Windows (x64) et Linux (x86_64). L’auteur l’a testée sur les trois systèmes. Rien n’est signé ni notarié. Une bêta est en plein développement et peut casser. Les images de cette page montrent le design de la version à venir ; le tableau ci-dessous dit ce qui est construit aujourd’hui. Le code source est sur GitHub.
holzWave est un émulateur de terminal avec volets en mosaïque, onglets et espaces de travail. Il se connecte en SSH et se reconnecte, ouvre fichiers et aperçus à côté du shell, synchronise ses réglages via sa propre Nextcloud et a un chat IA qui ne voit votre terminal qu’après que vous avez partagé ce volet. Sur un Mac avec Apple Intelligence, ce chat fonctionne entièrement hors ligne, sur l’appareil.
holzWave s’inspire de Wave Terminal, qui est la référence pour l’usage. Il a commencé comme fork, est aujourd’hui un projet à part et ne contient aucun code de Wave. Il est indépendant, ni lié au projet Wave ni recommandé par lui. Qui veut aujourd’hui un terminal fini de ce genre prend Wave, et peut le soutenir.
Fonctions

Espaces de travail, onglets et mosaïque
Trois niveaux, chacun avec sa forme : les espaces de travail sont des pilules rondes avec un losange dans la barre de titre, les onglets sont numérotés et se trouvent dans une ligne en dessous, les volets sont des tuiles avec des séparateurs déplaçables. La disposition survit à un redémarrage. Cela tourne sous macOS, Windows et Linux. L’image montre la même fenêtre sous Linux. holzWave dessine lui-même la barre de fenêtre, avec les mêmes valeurs sur chaque plateforme.

La palette de commandes
On trouve les actions par leur nom avec une recherche floue qu’ouvre un raccourci (⌘K sur le Mac). L’image montre le regroupement des actions, hôtes et espaces de travail.

Des raccourcis modifiables
Chaque action a une valeur par défaut pour chaque plateforme et peut être réaffectée dans un éditeur qui enregistre la touche et montre les conflits avant de remplacer quoi que ce soit. Ctrl+lettre seul reste au shell.

Fichiers et aperçus
Un navigateur de fichiers pour les fichiers locaux et les hôtes SSH (SFTP), avec images, PDF, vidéo, audio et Markdown comme volets à part, plus un éditeur de code qui enregistre en local et via SFTP. Construit et essayé avec un serveur de test ; pas encore avec de vrais hôtes.
SSH, synchro et barre latérale
Un volet peut faire tourner un shell sur une autre machine en SSH, avec un hôte de rebond, un contrôle de la clé de l’hôte et une reconnexion qui conserve le volet ; WSL et Docker s’ouvrent aussi comme volets. Mots de passe et clés restent uniquement dans le trousseau du système. Une petite commande wsh dans le shell ouvre des fichiers et des aperçus dans la fenêtre. La barre latérale montre les hôtes enregistrés, un historique consultable de vos commandes et des widgets (notes, minuteur, listes de commandes personnelles), et un moniteur système montre cet ordinateur et des hôtes Linux en SSH. Réglages, thèmes et dispositions peuvent se synchroniser via votre propre Nextcloud, chiffrés avant de quitter l’ordinateur. Tout cela est construit et essayé avec des serveurs de test ; ce n’est pas encore essayé avec de vrais hôtes ni une vraie Nextcloud.
Un chat IA qui demande d’abord, et entièrement hors ligne sur le Mac
Un chat dans un volet, dans la barre latérale, dans la palette et dans le shell avec wsh ai. Sur un Mac avec macOS 26 et Apple Intelligence, il fonctionne avec le modèle sur l’appareil entièrement hors ligne : sans compte, sans clé, et rien ne quitte le Mac. Il fonctionne aussi avec Anthropic, OpenAI et Gemini, avec des serveurs locaux comme Ollama, LM Studio et llama.cpp et avec des passerelles IA. Il ne voit la sortie du terminal qu’après que vous avez partagé ce volet, chaque message montre ce qui part, chaque action qui modifie un fichier ou exécute une commande demande votre accord, et les clés restent dans le trousseau du système. Les fournisseurs sont essayés avec des serveurs de test et des fournisseurs simulés ; pas encore avec de vrais fournisseurs.

Sur le téléphone
Un volet par écran. Les espaces de travail et les onglets passent dans une feuille depuis le bas, et au-dessus du clavier système se trouve une ligne avec esc tab ctrl alt ← ↑ ↓ →. Sous iOS, SSH est prévu, le système n’autorisant pas de shell local. Sous Android, shell local et SSH sont prévus. Les deux ne sont pas encore construits.
Ce qui marche aujourd’hui et ce qui vient
✅ construit et exécuté par l’auteur · 🧪 construit, essayé avec des serveurs de test, pas encore avec de vrais hôtes ou fournisseurs · 🔜 prévu, pas construit
| État | |
|---|---|
| Shell local dans un volet, redimensionnement, Unicode avec caractères larges, sous macOS, Windows et Linux | ✅ |
| Volets en mosaïque, séparateurs déplaçables, onglets, espaces de travail, disposition enregistrée | ✅ |
| Historique de défilement, sélection, copier, coller | ✅ |
| Moteur WebGL2 avec repli Canvas 2D | ✅ |
| Palette de commandes, raccourcis modifiables, thèmes | ✅ |
| Entièrement hors ligne : le modèle IA sur l’appareil (macOS 26 ou plus récent avec Apple Intelligence), sans compte ni clé | ✅ |
| SSH avec reconnexion, hôte de rebond et trousseau, volets WSL et Docker, gestion des connexions | 🧪 |
| Navigateur de fichiers, aperçus et éditeur de code, en local et via SFTP | 🧪 |
Commande wsh, barre latérale avec hôtes, historique et widgets |
🧪 |
| Moniteur système de cet ordinateur et d’hôtes Linux en SSH | 🧪 |
| Synchro chiffrée via WebDAV/Nextcloud | 🧪 |
| Chat IA avec Anthropic, OpenAI, Gemini, serveurs locaux et passerelles | 🧪 |
| Kubernetes, Talos, Azure CLI et GAM7 comme blocs | 🔜 |
| iOS et Android | 🔜 |
| Paquets signés, graphiques Kitty, hyperliens | 🔜 |
Volontairement absent : un bloc navigateur web. Les versions vont de 0.0.1-alpha3 à 0.0.1-beta1 (actuelle) puis 0.0.1 ; alpha et bêta sont des pré-versions GitHub. Tout le plan est dans la feuille de route.
Comment c’est construit
Un crate Rust détient tout l’état et la webview le reflète. Le moteur de terminal est libghostty-vt derrière un trait TerminalEngine, avec alacritty_terminal en repli ; le moteur lit environ 290 MiB/s. La coque est Tauri 3 (alpha), l’interface du TypeScript sans framework ni bundler. Les shells locaux passent par portable-pty, SSH par russh, les secrets seulement dans le trousseau du système. Le code critique pour la sécurité, comme l’analyseur VT et SSH, vient de bibliothèques établies. holzWave n’envoie rien de lui-même : ni télémétrie, ni compte. Plus dans l’architecture.
Installer
holzWave 0.0.1-beta1 est un aperçu pour essayer et signaler ce qui casse. Tous les fichiers, chacun avec une somme de contrôle .sha256, sont sur la page de la version.
macOS (Apple Silicon), testé par l’auteur
Avec Homebrew, depuis les casks du dépôt :
brew tap holzcloud/holzwave https://github.com/holzcloud/holzWave
brew trust --cask holzcloud/holzwave/holzwave@preview
brew install --cask holzcloud/holzwave/holzwave@preview
brew trust n’est nécessaire qu’une fois par cask. Il y a deux canaux : holzwave@preview (la dernière alpha, bêta ou version ordinaire) et holzwave (la dernière version ordinaire, à partir de 0.0.1 ; il n’y en a pas encore). Ou prendre le DMG holzWave_0.0.1-beta1_aarch64.dmg, glisser holzWave dans Applications et l’ouvrir une fois par clic droit, Ouvrir. L’app n’est signée qu’ad hoc (ni Developer ID ni notarisation) ; le cask retire l’attribut de quarantaine pour qu’elle s’ouvre.
Windows (x64), testé par l’auteur
holzWave_0.0.1-beta1_x64-setup.exe : un installateur par utilisateur, non signé (SmartScreen avertit : Informations complémentaires, Exécuter quand même). Il est compilé en croisé sur un Mac et testé par l’auteur sous Windows. Il nécessite le runtime WebView2 (inclus dans Windows 11).
Linux (x86_64), testé par l’auteur
holzWave_0.0.1-beta1_x86_64.rpm, holzWave_0.0.1-beta1_amd64.deb et holzWave_0.0.1-beta1_x86_64.AppImage. Ils sont construits dans un conteneur amd64 sur un Mac et testés par l’auteur sous Linux. Ils exigent glibc 2.39 ou plus récent et WebKitGTK 4.1 (Ubuntu 24.04+, Debian 13+, Fedora 40+). Problème connu : l’AppImage transmet son propre chemin de bibliothèques au shell, si bien que des programmes comme grep ou flatpak peuvent afficher des avertissements de bibliothèques dans un volet holzWave. Tant que ce n’est pas corrigé, utiliser le rpm ou le deb.
Compiler depuis les sources
Pour le compiler soi-même au lieu d’installer l’aperçu. Sous macOS (Apple Silicon) :
brew install rustup zig@0.16 node
export PATH="/opt/homebrew/opt/zig@0.16/bin:$PATH" # exactement Zig 0.16.0
rustup default stable
git clone https://github.com/holzcloud/holzWave
cd holzWave
npm --prefix app ci && npm --prefix app run build
cargo run -p holzwave-app
Il faut exactement Zig 0.16.0 : libghostty-vt est compilé par le build.zig de Ghostty, et Zig 0.17 a supprimé une API qu’il utilise. Pour la même raison le crate est fixé par révision Git. Tests : cargo test --workspace. Des guides de compilation pour Windows et Linux sont dans le dépôt.
Où en est holzWave
- Qualité d’aperçu. L’auteur l’a testé sous macOS (Apple Silicon), Windows et Linux.
- Beaucoup n’a été essayé qu’avec des serveurs de test et des fournisseurs simulés, pas avec de vrais hôtes, une vraie Nextcloud ou de vrais fournisseurs IA.
- Pas de signature : l’app macOS n’est signée qu’ad hoc, sans Developer ID ni notarisation, et l’installateur Windows n’est pas signé. Des paquets signés sont prévus.
- Tauri 3 et
libghostty-vtsont des pré-versions, leurs interfaces changent. - Un seul responsable et volontairement pas de CI : tout est compilé et testé en local.
Documentation : architecture, design, feuille de route, format de synchro.
Remerciements et licence
Wave Terminal pour l’idée et le modèle d’usage ; qui peut, soutient Wave. Ghostty pour libghostty-vt et libghostty-rs pour la liaison Rust. Les polices Plus Jakarta Sans, Manrope et JetBrains Mono sont sous SIL Open Font License 1.1.
holzWave est sous GPL-3.0. On peut soutenir le projet via GitHub Sponsors.
Autres projets
holzkube-manager, le gestionnaire de clusters Kubernetes sur Talos, holzcloud-CMS, le CMS sans JavaScript, et holzBar, le gestionnaire de barre des menus pour macOS. Retour à l’accueil.