Skip to content

Deployment air-gapped e offline

Ogni foglio di stile, script, font e icona è servito dalla tua installazione, su tutti i 14 template inclusi login e registrazione. Verificato dal vivo a 62 richieste, zero esterne.

Potato serve ogni foglio di stile, script, font e icona dalla propria installazione. Una macchina senza alcuna rotta verso internet mostra la stessa interfaccia di una con connessione veloce. Verificato dal vivo su una pagina di annotazione renderizzata: 62 richieste, zero esterne, comprese le pagine di login e registrazione.

Questo conta per ambienti di ricerca protetti, contesti clinici, deployment sul campo e qualunque macchina dietro un proxy rigido. È tanto una proprietà di privacy quanto di disponibilità.

Asset serviti dall'installazione

Fabric.js (il canvas immagine), jQuery, Bootstrap, Font Awesome, il carattere di interfaccia Outfit, three.js (nuvole di punti), OpenSeadragon (deep zoom), d3, Peaks.js (forme d'onda audio), PDF.js, e tutto il CSS e JavaScript di Potato.

Due di questi sono necessari, non cosmetici. Senza jQuery l'annotazione a span non funziona affatto. Senza Fabric.js il canvas immagine non si inizializza mai, quindi gli strumenti di disegno compaiono ma non si può disegnare nulla.

Il font era una fuga di privacy

styles.css si apriva con un @import di Google Fonts. Oltre a rompere l'uso offline, questo inviava a terzi l'indirizzo IP e lo User-Agent di ogni annotatore a ogni caricamento di pagina, da uno strumento che le persone ospitano in proprio proprio perché i loro dati non lascino la loro infrastruttura.

Era sopravvissuto a tre precedenti audit air-gap, perché ogni controllo verificava <script src> e <link href> nei template, e un @import dentro un foglio di stile non è né l'uno né l'altro. Il carattere è ora incluso sotto la SIL Open Font License.

Una favicon di terze parti sulle pagine di login e registrazione è stata rimossa per lo stesso motivo: una richiesta ai server di un'altra azienda dalla pagina in cui gli utenti digitano le proprie credenziali.

Copertura su tutti i 14 template

La copertura include ora login, registrazione, reimpostazione della password e pagine di errore. Sono le pagine che un audit air-gap è meno propenso a controllare e su cui è più probabile che la cosa conti.

I file inclusi sono verificati con checksum

Tutto ciò che viene incluso è verificato rispetto all'hash pubblicato dal suo CDN, e rifiutato in caso di mancata corrispondenza. I file inclusi sono committati, quindi un download non verificato arriverebbe a ogni utente di quella release.

Entrambe le allowlist dei controlli sono vuote, e i controlli falliscono se una voce smette di corrispondere a qualcosa, così un'eccezione non può diventare permanente in silenzio.

Che cosa significa davvero «air-gapped»

L'applicazione non ha bisogno di rete. I modelli sono un trasferimento una tantum: esegui potato download-models su una macchina connessa e copia la directory. Qualunque endpoint AI ospitato tu configuri, come OpenAI, Anthropic o Gemini, ha ovviamente bisogno di una via d'uscita.

Quindi la formulazione corretta è «air-gapped una volta che i pesi sono sulla macchina», non «air-gapped senza alcuna configurazione».

Correlati