Un executor remoto svolge un'azione su un computer associato all'utente, invece che sul server Metnos. Serve, per esempio, a leggere una cartella presente soltanto sul portatile o ad avviare un programma sul PC Windows. Il server decide; il computer associato esegue.
Il server Metnos contiene il nucleo, le regole e il registro delle attività, ma i dati possono trovarsi altrove. Un documento può stare sul portatile di lavoro, una fotografia su un altro computer e un'applicazione soltanto su Windows. Gli executor remoti portano una capacità circoscritta vicino alla risorsa, senza installare un secondo server Metnos su ogni macchina.
Il computer associato non ascolta la conversazione e non pianifica. Non può scegliere un'azione diversa da quella ricevuta. Continua a essere il server a riconoscere l'utente, selezionare l'executor, applicare policy e Vaglio, chiedere eventuali conferme e registrare l'esito.
Su ogni computer associato viene installato metnos-client, un
piccolo componente che mantiene il colloquio con il server. La divisione dei
compiti è semplice:
| Server Metnos | Componente sul dispositivo |
|---|---|
| Autentica utente e conversazione. | Conserva l'identità crittografica del dispositivo. |
| Sceglie piano, executor e dispositivo. | Chiede periodicamente se c'è un lavoro destinato a quel dispositivo. |
| Controlla autorità, rischio e conferma. | Verifica firme, validità e compatibilità del lavoro ricevuto. |
| Firma l'invocazione e il pacchetto dell'executor. | Esegue l'executor nell'isolamento disponibile e firma il risultato. |
| Riceve il risultato e completa il registro del turno. | Conserva temporaneamente il risultato finché il server ne conferma la consegna. |
Il client avvia la connessione verso il server. Non è necessario aprire una porta in ingresso sul PC. È invece necessario che il dispositivo possa raggiungere l'indirizzo del server Metnos attraverso la rete prevista.
L'associazione crea un'identità stabile per il dispositivo. Non è un semplice accesso con nome e password.
Il collegamento iniziale scade e può essere usato una sola volta. Dopo l'associazione, il dispositivo si riconosce attraverso le firme prodotte dalla sua chiave persistente; il collegamento iniziale non diventa una credenziale permanente.
L'impronta mostrata nell'interfaccia è una forma abbreviata della chiave pubblica. Permette di confrontare due identità senza mostrare tutta la chiave. Revocare un dispositivo significa rendere non più valida quella identità per nuovi lavori.
Un executor può uscire dal server soltanto se il suo manifest firmato lo consente. Metnos controlla insieme:
Se l'utente scrive «sul portatile-ufficio», il nome viene confrontato con i dispositivi realmente associati a quell'utente. Un indirizzo IP non identifica il computer: può cambiare, essere condiviso o appartenere a un punto di ingresso intermedio. Se il nome è assente o ambiguo, Metnos non sceglie a caso.
La conversazione può ricordare per poco tempo una destinazione esplicita, così una frase immediatamente successiva come «comprimila» può restare sullo stesso computer. Non è una preferenza permanente e non sopravvive come autorizzazione generale.
Non tutto è remotizzabile. Gli executor legati al browser controllato, alle credenziali del server o a servizi installati soltanto sul server restano lì, anche se esiste un dispositivo associato.
No. Nell'implementazione attuale, un executor già verificato rimane in una cache locale identificata dalle impronte del manifest e del codice. Questo evita di scaricare lo stesso pacchetto a ogni richiesta. Una versione diversa finisce in una posizione diversa; una copia corrotta viene scartata e scaricata di nuovo. La cartella temporanea della singola invocazione viene invece eliminata al termine dell'esecuzione.
La cache non rende il codice autonomo: per ogni nuova azione servono comunque un'invocazione firmata, argomenti validi, una scadenza accettabile e i normali controlli del server.
L'heartbeat, letteralmente «battito», è un breve messaggio firmato che il client invia periodicamente al server. Dice in sostanza: «sono ancora attivo, questa è la mia versione e questo è il livello di isolamento che riesco a offrire».
Grazie all'ultimo heartbeat, l'interfaccia può indicare che un dispositivo è stato contattato di recente. Se il battito manca oltre la finestra prevista, il dispositivo appare non raggiungibile. Il battito viaggia in un'attività separata dall'esecuzione, quindi può continuare mentre un executor è occupato.
Un heartbeat recente non dimostra che ogni executor funzionerà. Il computer può essere acceso ma non avere una dipendenza necessaria, spazio sufficiente, accesso a un determinato percorso o una sandbox adeguata. Per decidere se un'azione è possibile, Metnos considera insieme ultimo contatto, piattaforma, capacità dichiarate, stato del client e contratto dell'executor.
| Sistema | Isolamento usato | Limite da ricordare |
|---|---|---|
| Linux | bwrap, quando disponibile, con file, processi e rete limitati dal contratto. | Se il contenimento richiesto non è disponibile, l'esito deve dichiararlo; non viene presentato come isolamento pieno. |
| Windows | AppContainer all'interno di un Job Object, con autorizzazioni mirate sui percorsi concreti. | Alcune azioni che richiedono esecuzione di processi o percorsi non delimitabili ricadono nel solo Job Object e lo dichiarano nel risultato. |
| macOS | Non è un dispositivo remoto supportato dall'installazione di riferimento. | Non viene promesso un contenimento equivalente a Linux o Windows. |
Il Job Object limita durata, risorse e albero dei processi, ma da solo non isola file e rete come AppContainer. Per questo il client restituisce il livello realmente applicato, non quello desiderato. Se un processo supera il tempo massimo, il client termina l'intero albero avviato per quell'invocazione.
Ogni lavoro ha un'identità stabile. Il client registra quali lavori ha già iniziato o completato e il server riconosce i risultati già ricevuti. Se la rete cade dopo l'esecuzione, il risultato viene ritrasmesso senza eseguire di nuovo l'azione. Questa protezione è importante soprattutto per scritture, spostamenti e avvio di processi.
Il client impedisce inoltre l'avvio contemporaneo di due proprie istanze sullo stesso computer. Un controllo indipendente sorveglia il tempo massimo delle invocazioni; se la preparazione della sandbox o l'executor si blocca, il client si arresta in modo controllato e il supervisore del sistema operativo può riavviarlo.
La revoca si applica sul server. Da quel momento l'identità del dispositivo non può ricevere nuovi lavori né consegnare heartbeat validi. Il server non si affida alla buona volontà del vecchio client: smette di riconoscerlo.
Per la procedura operativa completa continua con Associazione dei dispositivi. Per i limiti del contenimento consulta la guida alla sandbox.