Chat web e API HTTP

Il server HTTP offre due facce dello stesso sistema: la chat da usare nel browser e un'API per i client autorizzati. Entrambe passano dagli stessi controlli di identità, proprietà e capacità. Conoscere un indirizzo o un identificatore non concede accesso ai dati di un altro utente.

In questa pagina

  1. Aprire Metnos nel browser
  2. Primo accesso e accessi successivi
  3. Che cosa contiene il server
  4. Le principali famiglie di percorsi
  5. Identità e autorizzazione
  6. Turni diretti e riprendibili
  7. Una chat su più dispositivi
  8. Confini di rete
  9. Verificare il servizio

Aprire Metnos nel browser

La porta predefinita della chat è 8770. Sul computer che ospita Metnos puoi aprire:

http://127.0.0.1:8770/

Se durante l'installazione hai consentito l'accesso dalla rete locale, puoi usare l'indirizzo privato del server da un telefono o da un altro computer collegato alla stessa rete. Per esempio:

http://192.168.1.33:8770/

L'indirizzo è solo un esempio: al termine dell'installazione Metnos stampa quelli rilevati davvero e salva gli indirizzi di base in ~/.local/share/metnos/install_summary.md. Il percorso della pagina utenti è /admin/users; /amin/users contiene un refuso e restituisce correttamente 404.

Durante la fase 4 dell'installazione puoi limitare l'interfaccia al browser eseguito sul server. In quel caso il servizio ascolta soltanto su 127.0.0.1 e gli indirizzi LAN non funzionano. La procedura interattiva propone l'accesso LAN per impostazione predefinita; l'avvio manuale del solo processo HTTP, invece, usa prudentemente il solo computer locale se non riceve una configurazione esplicita.

Primo accesso e accessi successivi

Alla fine dell'installazione Metnos stampa anche uno o più collegamenti amministrativi completi. Contengono un codice monouso valido per 15 minuti: aprendone uno, il browser riceve la sessione amministrativa e viene portato in Settings. Questi collegamenti completi non vengono conservati nel riepilogo di installazione; il file salva soltanto gli indirizzi di base.

Se il collegamento è scaduto o è già stato usato, apri /admin/login e inserisci la chiave amministrativa creata dall'installazione. Non condividere né il collegamento monouso né la chiave.

Un browser associato a un normale utente riceve invece un cookie distinto. Può usare la chat e le sole superfici ammesse dal suo ruolo, ma non diventa amministratore. Per creare utenti e associare browser consulta Associazioni e identità.

«Ruolo amministratore richiesto». Questo messaggio significa che l'indirizzo esiste, ma il browser corrente non ha una sessione amministrativa valida. Apri /admin/login; cambiare l'indirizzo non aggira il controllo.

Che cosa contiene il server

Metnos costruisce una sola applicazione aiohttp e vi collega quattro gruppi di funzioni:

GruppoResponsabilità
AgenteChat, turni, sessioni, dialoghi, allegati, associazione web e callback OAuth.
Lavori durevoliLavori che sopravvivono alla connessione, eventi persistenti e download controllati degli artefatti.
AmministrazioneSettings: modelli, servizi, utenti, dispositivi, executor, attività e sicurezza.
Stato complessivoVerifica congiunta del server, del catalogo e del servizio browser adiacente.

Il corpo di una richiesta può arrivare a 50 MiB per consentire immagini di riferimento. I turni che eseguono lavoro Python passano da un insieme limitato di esecutori concorrenti, con coda globale e limite per chiamante. Se non c'è capacità, il server risponde in modo esplicito e suggerisce quando riprovare.

Due servizi restano separati: il protocollo degli executor remoti usa normalmente 127.0.0.1:8765; il componente che controlla il browser usa normalmente 127.0.0.1:8771. Non sono porte alternative della chat e non vanno pubblicate come interfacce utente.

Le principali famiglie di percorsi

FamigliaEsempiUso
Chat e stato/, /agent/health, /.well-known/metnos.jsonInterfaccia, vitalità e descrizione minima del nodo.
Turni/agent/turn, /agent/turn/submit, /agent/turns/{id}Avvio, flusso degli eventi, stato, cronologia, riscontro e nuovo tentativo.
Sessioni e dialoghi/agent/session/*, /agent/dialog/{id}/*Scrittura da un solo browser e raccolta strutturata degli input.
Allegati/agent/gallery/{turn_id}, /agent/photos/*Gallerie dell'utente, immagini con collegamenti firmati e proxy web protetto.
Lavori durevoli/agent/workloads, /agent/workloads/{id}/*Stato, unità, eventi persistenti e artefatti di lavori lunghi.
Amministrazione/admin/users, /admin/devices, /admin/virt, /admin/servicesConfigurazione e controllo riservati all'amministratore.

Il registro nel codice resta la fonte completa: questa tabella spiega la struttura senza promettere un elenco immutabile di percorsi.

Identità e autorizzazione

Prima di chiamare una funzione, il server classifica la richiesta come anonymous, user o admin.

Un Bearer errato non ricade nell'eventuale fiducia della LAN. Gli header di un proxy vengono considerati solo se la connessione TCP arriva da un proxy esplicitamente fidato; un client non può dichiararsi locale scrivendo X-Forwarded-For.

Il cookie amministrativo dura al massimo sette giorni; quello utente al massimo novanta. Entrambi sono HttpOnly. L'opzione Secure viene applicata quando il browser raggiunge Metnos tramite HTTPS; i criteri SameSite sono più restrittivi per l'amministratore.

Turni diretti e riprendibili

Turno diretto

POST /agent/turn accetta JSON oppure dati multipart con testo e immagini. Può restituire un unico documento JSON o inviare eventi SSE mentre il turno procede. Se la connessione si interrompe, questo percorso non offre da solo la stessa ripresa del percorso disaccoppiato.

Turno riprendibile

POST /agent/turn/submit riserva la capacità e risponde 202 con un turn_id. Il lavoro continua anche se la pagina viene aggiornata. Il browser può ricollegarsi allo stream, ripartire dall'ultimo evento visto oppure interrogare lo stato persistito.

Stream, stato, cronologia, galleria, riscontro e nuovo tentativo verificano sempre il proprietario. Indovinare un turn_id non consente di leggere o ripetere il turno di un altro utente.

Una chat su più dispositivi

Per ogni coppia utente-canale web può scrivere un solo browser alla volta. Se un secondo browser apre la stessa chat, Metnos consente di annullare, rendere attiva la nuova sessione oppure continuare sul nuovo dispositivo la conversazione precedente. Il trasferimento revoca atomicamente il diritto di scrittura del vecchio browser.

La conversazione appartiene all'utente, non al dispositivo. Questo evita che un telefono e un portatile producano due diramazioni concorrenti fingendo di essere la stessa sessione. I dettagli sono nella pagina Associazioni e identità.

Confini di rete

Verificare il servizio

curl -fsS http://127.0.0.1:8770/agent/health
curl -fsS http://127.0.0.1:8770/.well-known/metnos.json
curl -fsS -H "Authorization: Bearer <chiave-amministrativa>" \
  http://127.0.0.1:8770/agent/stack/health

La prima richiesta dimostra soltanto che il processo risponde. L'ultima, riservata all'amministratore, controlla anche il catalogo e il contratto del servizio browser: è la verifica più utile prima di un collaudo completo.

Per il trasporto dei messaggi continua con Canali di conversazione. Per chi può entrare e con quale identità consulta Associazioni e identità.