top of page

Gli agenti ambientali di Amazon Bedrock AgentCore portano l'AI oltre il prompt in chat

6 minuti fa
Tempo di lettura: 14 min

Il 1° ottobre 2026 Amazon ha introdotto un'architettura di riferimento che consente agli agenti AI di reagire agli eventi senza attendere che una persona scriva un prompt. Il modello degli agenti ambientali di Amazon Bedrock AgentCore trasforma un upload su Amazon S3 o un evento pianificato in un job tracciabile. Può quindi eseguire automaticamente l'agente oppure sospendere il job per la revisione umana.

Questo cambiamento affronta un limite fondamentale degli agenti basati sulla chat. Un chatbot può interpretare le ambiguità, ma qualcuno deve rilevare l'evento, aprire l'interfaccia e spiegare cosa è accaduto. I motori di workflow convenzionali reagiscono subito, ma seguono ramificazioni predefinite e non possono ragionare autonomamente su un documento sconosciuto o un avviso poco chiaro.

AWS colloca AgentCore tra questi due approcci. Il design combina infrastruttura event-driven e ragionamento basato sui modelli, offrendo poi ai revisori un'unica pagina Jobs per approvazioni, domande, risultati ed errori. La sua affermazione più importante non riguarda la piena autonomia. È che un unico meccanismo di interruzione controllata può rendere pratici gli agenti event-driven senza escludere le persone dalle decisioni rilevanti.

Gli agenti ambientali di Amazon Bedrock AgentCore trasformano gli eventi in job

L'evento diventa il prompt, mentre un record di job persistente diventa il punto di controllo operativo.

L'architettura degli agenti ambientali parte da un segnale proveniente da un altro sistema. Nello scenario documentale incluso, Amazon S3 emette una notifica di creazione dell'oggetto dopo l'arrivo di un file. Una funzione Signal Processor riceve l'evento e verifica se un segnale configurato corrisponde al bucket e al percorso dell'oggetto.

Ogni corrispondenza crea un job in Amazon DynamoDB. Il job contiene il contesto necessario per invocare un agente, inclusi i dettagli e gli identificatori pertinenti dell'evento. Amazon SQS separa quindi la ricezione dei job dall'esecuzione, così l'API pubblica non rimane aperta mentre un modello analizza l'input.

Una funzione Job Execution legge il lavoro in coda e invoca un agente ospitato su AgentCore Runtime. I risultati tornano in DynamoDB, da cui il frontend può recuperarli. Un'interfaccia React distribuita tramite Amazon S3 e Amazon CloudFront presenta lo stato attraverso una pagina Jobs consolidata.

L'esempio include anche il lavoro pianificato. Uno scheduler verifica ogni minuto i job in scadenza e li inserisce nella stessa coda SQS utilizzata dalle attività attivate dagli eventi. Questo percorso di esecuzione condiviso riduce il numero di schemi di orchestrazione distinti che gli operatori devono gestire.

AWS fornisce i percorsi S3 e di pianificazione nell'implementazione di riferimento. Webhook e modifiche al database sono punti di estensione, non integrazioni complete. Prima che queste fonti possano creare job, i team devono aggiungere funzioni handler e campi di configurazione.

Questa distinzione è importante perché “ambientale” descrive il modello di interazione, non un connettore universale per gli eventi. Il sistema di riferimento fornisce componenti riutilizzabili per ricezione, stato, esecuzione e revisione. Non comprende automaticamente ogni fonte di eventi all'interno di un'organizzazione.

I segnali includono un'impostazione autoExecute che determina il livello iniziale di autonomia. Il valore predefinito, false, crea un job inattivo in attesa che una persona lo avvii. Impostandolo su true, il job viene inviato direttamente alla coda dei worker.

Questo offre un percorso di adozione pratico. Un team può iniziare con una gestione che privilegia la revisione, esaminare il comportamento dell'agente e automatizzare in seguito i casi familiari. Non deve concedere un'ampia autonomia alla prima distribuzione.

L'architettura utilizza inoltre una dead-letter queue SQS per il lavoro che fallisce ripetutamente. Questa coda è essenziale perché gli agenti event-driven possono incontrare input malformati, autorizzazioni mancanti, modelli non disponibili o errori del codice senza che un utente attivo stia monitorando la sessione.

Il risultato assomiglia meno a un'altra finestra di assistente e più a un sistema operativo. Gli eventi arrivano, i job acquisiscono stato, i worker li elaborano e le eccezioni diventano visibili. Il ragionamento è una fase all'interno di quel sistema, anziché l'intero prodotto.

La pressione si sposta da una chat migliore a una risposta più rapida

I costruttori di agenti sono ora sotto pressione per dimostrare che i loro sistemi sanno rilevare il lavoro, governarlo e completarlo senza prompt continui.

La chat resta adatta alle domande esplorative e alla collaborazione diretta. Tuttavia, aggiunge un passaggio di rilevamento umano a ogni workflow. Qualcuno deve accorgersi di un nuovo documento, riconoscere un avviso o ricordarsi di una revisione pianificata prima che l'agente possa essere d'aiuto.

Questo ritardo è costoso nell'acquisizione di documenti, nella revisione della conformità, nel monitoraggio dell'infrastruttura e nelle analisi ricorrenti. Il modello potrebbe completare rapidamente il ragionamento assegnato, ma il processo circostante può comunque restare in attesa per ore perché nessuno ha avviato la conversazione.

Gli agenti ambientali invertono questa sequenza. L'infrastruttura rileva prima l'evento, mentre il modello riceve automaticamente un job strutturato. Una persona interviene solo quando la politica o l'incertezza richiedono una decisione.

Questo mette sotto pressione i prodotti di agenti incentrati sulla chat che trattano la conversazione sia come trigger sia come spazio di lavoro. Supportare attività in background richiede più che nascondere un chatbot dietro un'API. Il prodotto necessita di stato durevole, gestione dei tentativi, isolamento delle sessioni, controlli di accesso e un luogo in cui le persone possano vedere le decisioni in sospeso.

I sistemi di workflow tradizionali affrontano una pressione diversa. AWS Step Functions e orchestratori simili rimangono scelte migliori quando ogni ramificazione è deterministica. Le loro esecuzioni sono prevedibili, ispezionabili e più facili da testare rispetto alle decisioni guidate dai modelli.

Diventano meno pratici quando il materiale in ingresso richiede un'interpretazione semantica. Un workflow fisso può verificare che un campo esista, ma non può risolvere in modo affidabile ogni clausola contrattuale ambigua né spiegare un avviso operativo sconosciuto senza logica aggiuntiva.

La proposta di AgentCore sfida quindi due percorsi consolidati contemporaneamente. Aggiunge l'avvio automatico agli agenti di ragionamento e un'interpretazione flessibile alle pipeline di eventi. Il mercato credibile è lo spazio in cui né una conversazione né una rigida macchina a stati risolvono l'intero problema.

Questo non rende ogni attività attivata un'attività per agenti. Una conversione di file, la validazione di uno schema o una catena di approvazione fissa dovrebbero di norma restare deterministiche. Aggiungere un modello linguistico aumenterebbe latenza, variabilità e costo operativo senza fornire il giudizio necessario.

Il confine migliore è l'ambiguità. Un agente diventa utile quando il passaggio successivo dipende dal significato dell'input, da un contesto incompleto o da una valutazione che gli sviluppatori non possono ridurre a regole stabili.

Per le organizzazioni di ingegneria, questo confine modifica i requisiti della piattaforma. I team devono gestire prompt e strumenti insieme a code, policy di identità, record dei job e stati di errore. Hanno inoltre bisogno di un contesto tecnico durevole, il che rende una base di conoscenza ingegneristica ricercabile rilevante per i revisori che indagano sulla raccomandazione di un agente.

La pressione è quindi organizzativa oltre che tecnica. I team di prodotto devono decidere quali eventi meritano ragionamento, quali decisioni richiedono approvazione e quali azioni non dovrebbero mai essere disponibili per l'agente. Queste scelte determinano se l'automazione ambientale riduce il lavoro o crea semplicemente un flusso più rapido di richieste di revisione.

Uno strumento umano semplifica il piano di controllo

AWS riduce l'interazione umana a un unico strumento `ask_human`, ma lo stato del job circostante conferisce un significato operativo a questa semplice interfaccia.

L'agente di riferimento non implementa strumenti distinti per porre domande, richiedere approvazione, segnalare risultati ed esporre errori. Chiama ask_human ogni volta che l'esecuzione richiede una persona. La formulazione e lo stato del job indicano all'interfaccia cosa deve fare il revisore.

Le risposte seguono un envelope canonico, ossia una struttura di risposta standard condivisa tra gli agenti. Il suo stato è completed, interrupted o error. Il payload corrispondente contiene un risultato, una domanda o una descrizione dell'errore.

Ogni risposta contiene inoltre un identificatore di sessione e un identificatore di job. Questi valori consentono alla piattaforma di collegare gli input successivi all'esecuzione corretta. Sono metadati di correlazione, non requisiti per la logica di business sottostante dell'agente.

Quando la risposta è interrupted, la piattaforma contrassegna il job di conseguenza e imposta requiresAction su true. La pagina Jobs colloca l'elemento in una scheda Interrupted con un indicatore di avviso. I revisori non devono monitorare una casella di posta separata per le approvazioni.

AWS descrive quattro convenzioni di interazione costruite su questo contratto. Una notifica segnala un risultato. Una domanda richiede informazioni mancanti. Una richiesta di revisione propone un'azione e attende approvazione, rifiuto o modifica. Un errore registra un fallimento affinché una persona possa decidere se riprovare.

Queste sono convenzioni di presentazione, non quattro modalità di runtime. La piattaforma mantiene comunque un unico percorso di interruzione e un unico envelope di risposta. Questo può rendere i framework per agenti intercambiabili perché il sistema circostante dipende da un contratto ridotto anziché da oggetti di controllo specifici del framework.

Il design è particolarmente utile per le richieste di revisione. Un agente può ispezionare un documento, proporre una classificazione o un'azione a valle e sospendersi prima di modificare un sistema esterno. Il revisore vede la proposta con la relativa cronologia della conversazione e può approvarla o reindirizzarla.

Questo è un controllo più solido rispetto all'inserimento di un passaggio di approvazione dopo ogni attività. La revisione obbligatoria preserva la supervisione ma elimina gran parte del vantaggio in termini di tempo. L'interruzione condizionale consente ai job a basso rischio di completarsi, indirizzando al contempo alle persone i casi incerti o rilevanti.

La parte difficile è decidere quando l'agente deve chiamare lo strumento. Un system prompt può descrivere i confini di approvazione, ma le istruzioni da sole non sono un meccanismo di sicurezza completo. Gli strumenti ad alto impatto dovrebbero comunque applicare autorizzazione e policy al di fuori del modello.

AgentCore Identity affronta parte di questo requisito tramite identità del carico di lavoro e gestione delle credenziali per gli agenti. AWS afferma che i suoi controlli di identità degli agenti possono governare l'accesso alle risorse AWS e ai servizi di terze parti preservando al contempo le tracce di audit.

I team dovrebbero comunque ridurre al minimo le autorizzazioni di ciascun agente. Un analizzatore che legge soltanto un documento non necessita dell'autorizzazione per modificare il bucket di origine. Un agente che propone un aggiornamento di ticket non dovrebbe ricevere credenziali per il deployment in produzione solo perché entrambe le azioni condividono un workflow.

L'approccio a strumento singolo crea anche un rischio per l'esperienza utente. Se gli agenti interrompono troppo spesso, la pagina Jobs diventa un'altra coda sovraccarica. Se interrompono troppo raramente, le persone potrebbero scoprire azioni non sicure o scorrette soltanto dopo l'esecuzione.

Workflow human-in-the-loop utili richiedono quindi policy di escalation misurabili. I team devono tracciare a quali domande rispondono i revisori, quanto spesso rifiutano le proposte e se job simili richiedono ripetutamente lo stesso chiarimento. Questi segnali rivelano se l'agente sta apprendendo un processo stabile o sta trasferendo l'incertezza ai dipendenti.

Il meccanismo è una coda, un archivio di stato e un runtime isolato

Il modello fornisce il giudizio, ma l'affidabilità degli agenti ambientali di Amazon Bedrock AgentCore dipende da componenti ordinari dei sistemi distribuiti.

Amazon SQS disaccoppia l’invio dei job dall’esecuzione del modello. Il suo ruolo non è cosmetico. L’accodamento consente all’API di restituire una risposta prima che l’agente termini, assorbe i picchi di eventi in ingresso e offre ai messaggi non riusciti un percorso di retry definito.

La funzione Lambda Job Execution dispone di due percorsi di ingresso. Le richieste API accodano il lavoro, mentre la sorgente eventi SQS invoca il lato worker. Il worker chiama quindi AgentCore Runtime con il contesto memorizzato e riscrive la risposta in DynamoDB.

Questa funzione condivisa mantiene i job manuali e ambientali su un unico percorso di esecuzione. Un job avviato dall’interfaccia e uno creato da un segnale S3 possono quindi raggiungere lo stesso contratto di runtime. Ciò riduce le differenze di comportamento tra test e operatività automatizzata.

DynamoDB archivia più di una risposta finale. L’esempio lo utilizza per il registro degli agenti, i job, le definizioni dei segnali, i thread di chat, la cronologia delle conversazioni e i record di idempotenza. L’idempotenza impedisce che la consegna ripetuta dello stesso evento produca involontariamente due volte lo stesso effetto collaterale.

I messaggi della conversazione usano aggiornamenti atomici di DynamoDB con list_append. Gli aggiornamenti atomici sono importanti quando più processi possono scrivere su un job quasi nello stesso momento. Senza di essi, un worker e un revisore potrebbero sovrascrivere le rispettive aggiunte alla cronologia.

AgentCore Runtime ospita il codice degli agenti in container isolati. L’esempio usa per impostazione predefinita Anthropic Claude Sonnet 4.5 tramite Amazon Bedrock, sebbene AWS affermi che gli sviluppatori possano modificare l’identificatore del modello per usare un altro modello compatibile con il tool calling.

Ciò rafforza l’affermazione di indipendenza dal framework. L’interfaccia operativa si colloca attorno all’agente, mentre il framework interno e il modello dell’agente possono cambiare. L’architettura dipende maggiormente dal contratto di invocazione e risposta che da una particolare libreria di orchestrazione.

L’implementazione di riferimento limita un singolo turno dell’agente al limite di esecuzione Lambda di 15 minuti. Non equivale al supporto più ampio di AgentCore Runtime per il lavoro a lunga esecuzione. È un vincolo introdotto dal percorso worker Lambda dell’esempio.

AWS documenta separatamente le attività AgentCore asincrone, che possono proseguire dopo una risposta iniziale. Gli stati di salute del runtime distinguono una sessione inattiva da una che elabora lavoro in background. Una sessione occupata può restare attiva oltre il normale timeout di inattività.

Questa differenza sarà importante negli adattamenti per la produzione. Un’analisi documentale che si completa in una singola invocazione Lambda si adatta all’esempio. Un processo di ricerca che dura ore richiede una progettazione asincrona, checkpoint o un altro confine di esecuzione.

Il frontend di esempio effettua polling su un livello di gestione API Gateway e Lambda per gli aggiornamenti. Cinque funzioni di gestione espongono agenti, job, segnali, chat e conversazioni. Un altro worker gestisce l’esecuzione della chat in modo asincrono, affinché le chiamate API rivolte alla chat possano restituire rapidamente una risposta.

Si tratta di un’applicazione sostanziale, non di una singola distribuzione di agenti. Include Amazon Cognito per l’accesso utente, distribuzione CloudFront, endpoint API, tabelle, code, funzioni, storage, immagini container e risorse di runtime.

Questa ampiezza è al tempo stesso un vantaggio e un avvertimento. I team ricevono un modello concreto che copre l’infrastruttura meno appariscente spesso omessa dalle dimostrazioni. Ereditano però anche più componenti, autorizzazioni, log e modalità di errore di quanto richieda un semplice chatbot.

L’architettura risulta più convincente se considerata come un piano di controllo per molti job. L’isolamento delle sessioni consente agli eventi concorrenti di restare separati, mentre gli identificatori dei job garantiscono un tracciamento durevole. La pagina Jobs diventa quindi l’interfaccia comune tra agenti e tipi di trigger.

La revisione umana non elimina i rischi di produzione

Un pulsante di revisione riduce la posta in gioco, ma non garantisce ragionamenti corretti, contesto completo, azioni sicure o supervisione tempestiva.

AWS raccomanda autorizzazioni IAM secondo il principio del privilegio minimo, crittografia, logging CloudTrail e stream DynamoDB facoltativi per un auditing più approfondito del ciclo di vita. Suggerisce inoltre di applicare Amazon Bedrock Guardrails prima che i risultati raggiungano i revisori o che le azioni vengano eseguite.

Questi controlli aiutano, ma l’operatività ambientale amplia la superficie d’attacco. Un documento caricato può contenere istruzioni ostili progettate per reindirizzare il modello, una pratica comunemente definita indirect prompt injection. L’elaborazione automatica di file non attendibili rende questa minaccia parte del normale percorso di acquisizione.

L’agente dovrebbe trattare il contenuto dei documenti come dati, non come autorità. Le policy sugli strumenti devono impedire che il testo in un file estenda le autorizzazioni, modifichi le regole di approvazione o selezioni credenziali. Le azioni sensibili richiedono una convalida esterna al ragionamento generato dal modello.

Anche la duplicazione degli eventi è un problema. Le notifiche S3 e le code supportano modelli di consegna resilienti, ma una consegna resiliente può significare ricevere un evento più di una volta. I record di idempotenza devono coprire non solo la creazione dei job, ma anche ogni azione esterna che un agente può attivare.

La revisione umana può inoltre creare un falso senso di sicurezza. I revisori potrebbero approvare riepiloghi plausibili senza aprire il documento originale. Un elevato volume di job può incentivare conferme rapide, soprattutto quando la maggior parte delle raccomandazioni appare ordinaria.

Un’implementazione responsabile deve mostrare le prove alla base di ogni azione proposta. I revisori dovrebbero vedere il materiale sorgente, i fatti estratti, l’autorizzazione richiesta e l’effetto previsto. Un semplice pulsante di approvazione non è sufficiente per decisioni che coinvolgono clienti, denaro, accesso o dati regolamentati.

I team operativi devono pianificare anche le interruzioni bloccate. Un job che attende indefinitamente una persona non è completato, anche se il runtime si è comportato correttamente. Gli obiettivi di livello di servizio dovrebbero coprire l’età delle revisioni, l’escalation, la riassegnazione e l’eventuale annullamento.

L’osservabilità diventa critica quando il lavoro inizia senza supervisione diretta dell’utente. AWS afferma che l’osservabilità di AgentCore espone metriche CloudWatch per sessioni, latenza, durata, utilizzo dei token ed errori. Le applicazioni strumentate possono aggiungere tracce che mostrano i singoli passaggi.

Queste metriche necessitano comunque di contesto aziendale. Un basso tasso di errore non significa che le classificazioni siano corrette. I team dovrebbero misurare i tassi di rifiuto da parte dei revisori, le richieste ripetute di chiarimento, le azioni duplicate, le escalation mancate e le correzioni apportate dopo il completamento.

Anche i costi possono cambiare in modi inattesi. Una sorgente di eventi potrebbe generare un picco improvviso, oppure una regola di prefisso troppo ampia potrebbe inviare file irrilevanti a un modello. La concorrenza Lambda riservata può limitare le invocazioni downstream, mentre i filtri delle notifiche S3 possono ridurre il traffico palesemente irrilevante.

L’architettura di riferimento raccomanda impostazioni DynamoDB time-to-live per eliminare gradualmente le vecchie conversazioni e policy di ciclo di vita S3 per i documenti elaborati. Le regole di conservazione dovrebbero seguire requisiti legali e operativi, non solo obiettivi di costo. Le cronologie delle conversazioni possono contenere materiale sorgente sensibile e decisioni dei revisori.

L’indipendenza dal framework introduce un’altra sfida di testing. Modificare il modello potrebbe richiedere una sola riga di configurazione, ma il comportamento non resta automaticamente equivalente. La selezione degli strumenti, la frequenza delle interruzioni, la formattazione e la sensibilità alle istruzioni iniettate possono variare tra modelli.

I team di produzione necessitano di suite di regressione costruite su eventi rappresentativi. Ogni modifica al modello o al prompt dovrebbe essere testata rispetto agli stati attesi dei job, ai punti di approvazione richiesti, alle autorizzazioni degli strumenti e alle azioni finali. L’astrazione del runtime non sostituisce la convalida comportamentale.

L’incertezza centrale riguarda quindi la qualità della governance. AWS ha mostrato un percorso tecnico credibile dal segnale al job revisionabile. Ogni adottante deve comunque definire autonomia accettabile, criteri di escalation, requisiti probatori e procedure di recupero per il proprio dominio.

Cosa osservare dopo il rilascio di riferimento

Il prossimo banco di prova è capire se i team riescano a trasformare questa architettura in operazioni affidabili senza ricreare una coda manuale attorno all’agente.

Il primo segnale da osservare è l’adozione oltre l’acquisizione di documenti e le pianificazioni. AWS indica webhook, eventi di database e integrazioni esterne come punti di estensione. Connettori riutilizzabili per queste fonti ridurrebbero il lavoro personalizzato necessario prima che il modello possa supportare flussi operativi più ampi.

Se i team costruiranno con continuità queste integrazioni, il modello ambientale acquisirà credibilità come architettura generale per agenti. Se la maggior parte delle implementazioni resterà limitata a dimostrazioni basate su caricamenti S3, il suo ambito pratico apparirà più ristretto.

Il secondo segnale è il rapporto tra job completati e interruzioni umane. Il valore dell’architettura dipende dalla capacità di chiedere aiuto in modo selettivo. Un alto tasso di interruzione significa che il sistema dipende ancora dall’attenzione umana continua, anche se il trigger è stato automatizzato.

Questa metrica richiede segmentazione per tipo di evento e rischio. Un agente che richiede approvazione per ogni azione relativa a pagamenti può funzionare come previsto. Un agente che chiede chiarimenti per ogni documento ordinario probabilmente non dispone del contesto necessario o riceve una definizione del compito poco chiara.

Le organizzazioni dovrebbero anche misurare i tempi di risposta dopo un’interruzione. Un rilevamento più rapido degli eventi offre pochi vantaggi operativi quando le richieste di revisione restano in attesa in una scheda non presidiata. Funzionalità di notifica, assegnazione di responsabilità ed escalation determineranno se la pagina Jobs diventerà una vera superficie di controllo operativa.

Il terzo segnale riguarda la capacità dei dati su identità, audit e osservabilità di supportare indagini reali. Gli operatori devono poter ricostruire quale evento ha avviato un job, quale modello e configurazione sono stati eseguiti, quali strumenti sono stati chiamati, cosa ha visto il revisore e chi ha approvato l’azione.

AWS fornisce già diversi elementi di base. CloudTrail acquisisce l’attività delle API di servizio, mentre CloudWatch archivia la telemetria AgentCore. Il design di riferimento mantiene la cronologia dei job in DynamoDB. Le implementazioni di produzione devono collegare questi record in una traccia di audit comprensibile.

Anche le risposte della concorrenza saranno rilevanti. LangChain ha contribuito a diffondere il concetto di agenti ambientali, mentre altre piattaforme per agenti supportano sempre più attività in background, esecuzione durevole e checkpoint di approvazione. AWS dispone di un vantaggio dove i clienti utilizzano già S3, Lambda, SQS, DynamoDB, IAM e CloudWatch.

Questo vantaggio può però creare lock-in a livello infrastrutturale. Il framework dell’agente e il modello potrebbero restare sostituibili, ma la pipeline di eventi circostante, la configurazione dell’identità e la console operativa possono diventare strettamente legate ai servizi AWS.

L’interpretazione più difendibile di questo rilascio non è che le interfacce chat stiano scomparendo. La conversazione resta preziosa quando una persona sta esplorando un problema o dirigendo il lavoro in modo interattivo. L’esecuzione ambientale serve un momento diverso: quando il software deve accorgersi che il lavoro esiste prima che qualcuno lo chieda.

I team che valutano gli agenti ambientali Amazon Bedrock AgentCore dovrebbero iniziare con un solo evento delimitato, un solo compito orientato alla lettura e un solo confine di approvazione chiaramente definito. Dovrebbero registrare ogni interruzione e rifiuto prima di espandere l’autonomia.

La domanda decisiva non è se un agente possa rispondere a un caricamento S3. L’esempio mostra che può farlo. La domanda è se i job risultanti restino comprensibili, revisionabili e recuperabili quando il volume di eventi aumenta e gli input smettono di somigliare a una dimostrazione controllata.

 
 

Inizia gratis

Un assistente IA local-first con gestione della conoscenza personale

Per una migliore esperienza con l’IA,

al momento remio supporta solo Windows 10+ (x64) e M-Chip Macs.

Il tuo partner AI al lavoro
Fai di più con remio

Pianifica. Crea. Consegna.
Tutto in un unico posto.

bottom of page