holzcloud
Menu
holzWave: il logo con un’onda su un asse di legno, accanto il nome, «A terminal for every screen — macOS, Windows and Linux today, iOS and Android planned.» e le parole chiave Beta, GPL-3.0, Rust + Tauri, Offline AI on the Mac

Beta

Rust

GPL-3.0

Un terminale scritto in Rust: oggi per macOS, Windows e Linux, iOS e Android sono previsti. Su un Mac con Apple Intelligence l’IA funziona completamente offline.

La finestra di holzWave su macOS: in alto pillole di spazi di lavoro e schede numerate, una shell, un pannello SSH, un editor, un’anteprima Markdown e un monitor di sistema come pannelli affiancati, a destra una barra laterale con host, contesto e cronologia, in basso una riga di stato

Un nucleo, cinque piattaforme

Terminale, layout, connessioni e sincronizzazione stanno in un crate Rust. Oggi esistono pacchetti per macOS, Windows e Linux e l’autore li ha provati tutti e tre; iOS e Android sono previsti.

IA completamente offline

Su un Mac con Apple Intelligence la chat IA gira sul dispositivo: senza account, senza chiave, niente lascia il Mac.

Veloce, misurato

Il renderer WebGL2 disegna una griglia di 160×50 in circa 1 ms; Canvas 2D impiega da 4,5 a 7,7 ms.

Sincronizzazione propria

Tramite la propria Nextcloud, cifrata end-to-end. Costruita; non ancora provata con una Nextcloud reale.

Beta, anteprima (0.0.1-beta1). L’anteprima attuale è una prerelease su GitHub con pacchetti per macOS (Apple Silicon), Windows (x64) e Linux (x86_64). L’autore l’ha provata su tutti e tre i sistemi. Niente è firmato né notarizzato. Una beta è in pieno sviluppo e può rompersi. Le immagini di questa pagina mostrano il design della versione prevista; la tabella qui sotto dice cosa è costruito oggi. Il codice sorgente è su GitHub.

holzWave è un emulatore di terminale con pannelli affiancati, schede e spazi di lavoro. Si collega via SSH e si riconnette, apre file e anteprime accanto alla shell, sincronizza le impostazioni tramite la propria Nextcloud e ha una chat IA che vede il terminale solo dopo che si condivide quel pannello. Su un Mac con Apple Intelligence questa chat funziona completamente offline, sul dispositivo.

holzWave si ispira a Wave Terminal, che è il riferimento per l’uso. È nato come fork, oggi è un progetto a sé e non contiene codice di Wave. È indipendente, né collegato al progetto Wave né raccomandato da esso. Chi oggi vuole un terminale finito di questo tipo prende Wave e può sostenerlo.

Funzioni

La finestra di holzWave su Linux: gli stessi spazi di lavoro, schede e pannelli affiancati con pulsanti di finestra rotondi in alto a destra

Spazi di lavoro, schede e pannelli

Tre livelli, ciascuno con la sua forma: gli spazi di lavoro sono pillole rotonde con un rombo nella barra del titolo, le schede sono numerate e stanno in una riga sotto, i pannelli sono riquadri con divisori spostabili. Il layout sopravvive a un riavvio. Funziona su macOS, Windows e Linux. L’immagine mostra la stessa finestra su Linux. holzWave disegna da sé la barra della finestra, con gli stessi valori su ogni piattaforma.

La palette dei comandi di holzWave aperta sopra la finestra, con l’input «split» e i gruppi Azioni, Connetti e Cambia, ciascuno con la sua scorciatoia

La palette dei comandi

Le azioni si trovano per nome con una ricerca sfocata che si apre con una scorciatoia (⌘K sul Mac). L’immagine mostra il raggruppamento di azioni, host e spazi di lavoro.

L’editor delle scorciatoie di holzWave: azioni raggruppate per pannello, scheda, spazio di lavoro e strumenti, un tasto in registrazione e un conflitto che offre Sostituisci o Annulla

Scorciatoie modificabili

Ogni azione ha un valore predefinito per ogni piattaforma e si può riassegnare in un editor che registra il tasto e mostra i conflitti prima di sostituire qualcosa. Ctrl+lettera semplice resta alla shell.

Anteprime di holzWave: un browser di file con un’immagine, un PDF e un video come pannelli a sé

File e anteprime

Un browser di file per file locali e per host SSH (SFTP), con immagini, PDF, video, audio e Markdown come pannelli a sé, più un editor di codice che salva in locale e via SFTP. Costruito e provato con un server di prova; non ancora con host reali.

SSH, sincronizzazione e barra laterale

Un pannello può eseguire una shell su un altro computer via SSH, con jump host, controllo della chiave dell’host e una riconnessione che mantiene il pannello; anche WSL e Docker si aprono come pannelli. Password e chiavi stanno solo nel portachiavi del sistema. Un piccolo comando wsh nella shell apre file e anteprime nella finestra. La barra laterale mostra host salvati, una cronologia dei comandi in cui si può cercare e widget (note, un timer, elenchi di comandi propri), e un monitor di sistema mostra questo computer e host Linux via SSH. Impostazioni, temi e layout possono sincronizzarsi tramite la propria Nextcloud, cifrati prima di lasciare il computer. Tutto questo è costruito e provato con server di prova; non è ancora stato provato con host reali o con una Nextcloud reale.

Una chat IA che prima chiede, e completamente offline sul Mac

Una chat in un pannello, nella barra laterale, nella palette e nella shell con wsh ai. Su un Mac con macOS 26 e Apple Intelligence funziona con il modello sul dispositivo completamente offline: senza account, senza chiave, e niente lascia il Mac. Funziona anche con Anthropic, OpenAI e Gemini, con server locali come Ollama, LM Studio e llama.cpp e con gateway IA. Vede l’output del terminale solo dopo che si condivide quel pannello, ogni messaggio mostra cosa esce, ogni azione che modifica un file o esegue un comando richiede la tua approvazione, e le chiavi restano nel portachiavi del sistema. I fornitori sono provati con server di prova e fornitori simulati; non ancora con fornitori reali.

holzWave sul telefono in tre schermate: un pannello per schermo con una riga di tasti sopra la tastiera di sistema, un foglio con gli spazi di lavoro e le schede dello spazio mostrato, e un pannello che si riconnette

Sul telefono

Un pannello per schermo. Spazi di lavoro e schede passano in un foglio dal basso, e sopra la tastiera di sistema c’è una riga con esc tab ctrl alt ← ↑ ↓ →. Su iOS è previsto SSH, perché il sistema non permette una shell locale. Su Android sono previsti shell locale e SSH. Entrambi non sono ancora costruiti.

Cosa funziona oggi e cosa arriva

✅ costruito ed eseguito dall’autore · 🧪 costruito, provato con server di prova, non ancora con host o fornitori reali · 🔜 previsto, non costruito

Stato
Shell locale in un pannello, ridimensionamento, Unicode con caratteri larghi, su macOS, Windows e Linux ✅
Pannelli affiancati, divisori spostabili, schede, spazi di lavoro, layout salvato ✅
Scrollback, selezione, copia, incolla ✅
Renderer WebGL2 con ripiego su Canvas 2D ✅
Palette dei comandi, scorciatoie modificabili, temi ✅
Completamente offline: il modello IA sul dispositivo (macOS 26 o successivo con Apple Intelligence), senza account e senza chiave ✅
SSH con riconnessione, jump host e portachiavi, pannelli WSL e Docker, gestione delle connessioni 🧪
Browser di file, anteprime ed editor di codice, in locale e via SFTP 🧪
Comando wsh, barra laterale con host, cronologia e widget 🧪
Monitor di sistema di questo computer e di host Linux via SSH 🧪
Sincronizzazione cifrata via WebDAV/Nextcloud 🧪
Chat IA con Anthropic, OpenAI, Gemini, server locali e gateway 🧪
Kubernetes, Talos, Azure CLI e GAM7 come blocchi 🔜
iOS e Android 🔜
Pacchetti firmati, grafica Kitty, collegamenti ipertestuali 🔜

Volutamente assente: un blocco browser web. Le versioni vanno da 0.0.1-alpha3 a 0.0.1-beta1 (attuale) e poi 0.0.1; alpha e beta sono prerelease di GitHub. L’intero piano è nella roadmap.

Com’è costruito

Un crate Rust tiene tutto lo stato e la webview lo rispecchia. Come motore di terminale c’è libghostty-vt dietro un trait TerminalEngine, con alacritty_terminal come ripiego; il motore legge circa 290 MiB/s. Il guscio è Tauri 3 (alpha), l’interfaccia TypeScript senza framework e senza bundler. Le shell locali girano tramite portable-pty, SSH tramite russh, con i segreti solo nel portachiavi del sistema. Il codice critico per la sicurezza, come il parser VT e SSH, viene da librerie consolidate. holzWave non invia nulla da sé: nessuna telemetria, nessun account. Di più nell’architettura.

Installare

holzWave 0.0.1-beta1 è un’anteprima per provare e segnalare ciò che si rompe. Tutti i file, ciascuno con una somma di controllo .sha256, sono sulla pagina della release.

macOS (Apple Silicon), provato dall’autore

Con Homebrew, dai cask del repository:

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 serve una volta per cask. Ci sono due canali: holzwave@preview (l’ultima alpha, beta o versione normale) e holzwave (l’ultima versione normale, da 0.0.1; non ce n’è ancora una). Oppure si prende il DMG holzWave_0.0.1-beta1_aarch64.dmg, si trascina holzWave in Applicazioni e lo si apre una volta con clic destro e Apri. L’app è firmata solo ad hoc (né Developer ID né notarizzazione); il cask rimuove l’attributo di quarantena perché si apra.

Windows (x64), provato dall’autore

holzWave_0.0.1-beta1_x64-setup.exe: un programma di installazione per utente, non firmato (SmartScreen avvisa: Ulteriori informazioni, Esegui comunque). È compilato in cross su un Mac e provato dall’autore su Windows. Richiede il runtime WebView2 (incluso in Windows 11).

Linux (x86_64), provato dall’autore

holzWave_0.0.1-beta1_x86_64.rpm, holzWave_0.0.1-beta1_amd64.deb e holzWave_0.0.1-beta1_x86_64.AppImage. Sono compilati in un container amd64 su un Mac e provati dall’autore su Linux. Richiedono glibc 2.39 o successivo e WebKitGTK 4.1 (Ubuntu 24.04+, Debian 13+, Fedora 40+). Problema noto: l’AppImage passa il proprio percorso delle librerie alla shell, perciò programmi come grep o flatpak possono stampare avvisi sulle librerie in un pannello di holzWave. Finché non è risolto, usare l’rpm o il deb.

Compilare dai sorgenti

Per compilarlo da sé invece di installare l’anteprima. Su macOS (Apple Silicon):

brew install rustup zig@0.16 node
export PATH="/opt/homebrew/opt/zig@0.16/bin:$PATH"   # esattamente 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

Deve essere esattamente Zig 0.16.0: libghostty-vt viene compilato dal build.zig di Ghostty, e Zig 0.17 ha rimosso un’API che usa. Per lo stesso motivo il crate è fissato per revisione Git. Test: cargo test --workspace. Guide alla compilazione per Windows e Linux sono nel repository.

A che punto è holzWave

  • Qualità da anteprima. L’autore l’ha provato su macOS (Apple Silicon), Windows e Linux.
  • Molto è stato provato solo con server di prova e fornitori simulati, non con host reali, una Nextcloud reale o fornitori IA reali.
  • Nessuna firma: l’app macOS è firmata solo ad hoc, senza Developer ID né notarizzazione, e il programma di installazione per Windows non è firmato. Pacchetti firmati sono previsti.
  • Tauri 3 e libghostty-vt sono prerelease, le loro interfacce cambiano.
  • Un solo responsabile e volutamente nessuna CI: tutto viene compilato e testato in locale.

Documentazione: architettura, design, roadmap, formato di sincronizzazione.

Ringraziamenti e licenza

Wave Terminal per l’idea e il modello d’uso; chi può sostiene Wave. Ghostty per libghostty-vt e libghostty-rs per il collegamento Rust. I caratteri Plus Jakarta Sans, Manrope e JetBrains Mono sono sotto SIL Open Font License 1.1.

holzWave è sotto GPL-3.0. Si può sostenere il progetto tramite GitHub Sponsors.

Vedere su GitHub

Codice sorgente, documentazione e roadmap.

Vai a GitHub

Altri progetti

holzkube-manager, il gestore di cluster Kubernetes su Talos, holzcloud-CMS, il CMS senza JavaScript, e holzBar, il gestore della barra dei menu per macOS. Torna alla home.