top of page

OKF Agent Memory è arrivato su Hacker News, ma la memoria Git-native deve ancora dimostrare il proprio valore

6 set
Tempo di lettura: 14 min

OKF Agent Memory è arrivato su Hacker News con 11 punti e due commenti, presentando un repository come memoria durevole per gli agenti di coding AI. Il suo conflitto centrale è immediato. Le conoscenze importanti sul progetto possono vivere accanto al codice, ma gli agenti devono recuperarle e aggiornarle senza corromperle.

Il progetto open source archivia decisioni, fatti e relazioni come file Markdown con front matter YAML. Aggiunge ricerca locale, validazione, metadati del ciclo di vita e un server Model Context Protocol. Il risultato si colloca tra i familiari file di istruzioni e i servizi di memoria basati su database.

Questo posizionamento è rilevante perché gli assistenti di coding dispongono già di diversi modi per preservare il contesto. Claude Code supporta le istruzioni di progetto e la memoria automatica locale. Codex può utilizzare istruzioni circoscritte al repository, mentre i sistemi agentici emergenti mantengono i propri archivi di memoria. OKF Agent Memory sostiene invece che la memoria condivisa del progetto debba risiedere all'interno di Git.

La comparsa su Hacker News non dimostra l'adozione né convalida le affermazioni del progetto sui benchmark. Espone però un dibattito attuale sulla proprietà. La memoria di un agente dovrebbe restare privata di un singolo strumento, oppure diventare un'infrastruttura di progetto verificabile che viaggia con il repository?

Cosa ha trovato Hacker News in OKF Agent Memory

OKF Agent Memory riunisce in un unico sistema centrato sul repository un formato di conoscenza, una convenzione operativa, uno strumento di ricerca e un'interfaccia MCP.

La memoria Git-native del progetto risiede in una directory knowledge/. Ogni concetto può occupare un file Markdown con metadati strutturati, mentre i file indice espongono gli argomenti disponibili. Gli agenti cercano nella raccolta prima di aprire i record dettagliati.

Questa struttura utilizza la divulgazione progressiva, ovvero il caricamento di un piccolo indice prima del recupero di documenti più ampi. Un agente non ha bisogno di ogni decisione architetturale, runbook e definizione di dominio in ogni prompt. Può esaminare il catalogo e richiedere solo il materiale pertinente al compito corrente.

Il repository include anche uno strumento a riga di comando in Go. I suoi comandi documentati inizializzano bundle, creano concetti, aggiornano record, cercano testo e convalidano relazioni. Un comando di bootstrap può aggiungere la directory della conoscenza, le linee guida per gli agenti e i file di supporto a un altro repository.

Un server MCP incorporato espone la memoria ai client compatibili. MCP è un protocollo che consente a un'applicazione AI di connettersi a contesto esterno e strumenti eseguibili. La specifica MCP ufficiale distingue tra risorse, prompt e strumenti invocati dal modello.

Questa combinazione è più significativa di un altro modello di file per la memoria. Un modello definisce dove inserire le note. OKF Agent Memory cerca anche di definire come gli agenti effettuano ricerche, valutano l'affidabilità, registrano le fonti, rilevano l'obsolescenza ed evitano concetti duplicati.

Il progetto basa i suoi record sull'Open Knowledge Format di Google, o OKF. Google descrive OKF come un formato neutrale rispetto ai fornitori che utilizza Markdown e front matter YAML. Produttori e consumatori non devono usare lo stesso fornitore di modelli, framework agentico o sistema di serving.

OKF Agent Memory estende questa base verso lo sviluppo software. La sua struttura di esempio copre decisioni, architettura, operazioni e fatti del progetto. Il repository include inoltre istruzioni pensate per insegnare a un agente quando cercare o aggiornare il bundle.

Il thread di Hacker News del 6 settembre era ancora limitato nello snapshot fornito, con 11 punti e due commenti. Questi numeri rappresentano un segnale iniziale, non una convalida estesa da parte della comunità. La notizia interessante è la scelta di implementazione, non il numero di voti.

Il progetto trasforma la memoria in materiale che gli sviluppatori possono ispezionare con normali editor. I team possono anche rivedere le modifiche tramite pull request e confrontare le revisioni con Git. È un modello di fiducia diverso dall'accettare ciò che recupera un servizio di memoria privato.

Crea anche un impegnativo contratto di manutenzione. Quando un repository definisce un documento come "memoria", gli sviluppatori possono presumere che rifletta il sistema attuale. Una nota architetturale obsoleta può fuorviare un agente più efficacemente dell'assenza di qualsiasi nota.

Questa tensione spiega perché il lancio merita attenzione critica. OKF Agent Memory rende più facile vedere e spostare il contesto persistente. Deve ancora dimostrare che team e agenti possano mantenere accurato quel contesto.

Perché la memoria Git-native per gli agenti sta arrivando ora

Gli agenti di coding che lavorano a lungo stanno rendendo la gestione del contesto parte dell'infrastruttura software, anziché una comodità dell'interfaccia di chat.

Una breve sessione di coding può basarsi sulla conversazione corrente e sui file vicini. Il lavoro più lungo espone i limiti di questo approccio. L'agente perde il ragionamento precedente dopo la compattazione, avvia una nuova sessione oppure passa il lavoro a un altro processo con un contesto diverso.

I file di istruzioni del repository risolvono una parte del problema. Possono descrivere comandi di build, standard di codifica, confini tra directory e avvertenze ricorrenti. La loro debolezza è la scalabilità, perché ogni istruzione caricata in modo ampio consuma attenzione e contesto.

Anthropic ora documenta due forme distinte di memoria di Claude Code. Gli sviluppatori gestiscono file CLAUDE.md, mentre lo strumento può anche scrivere note di memoria automatica. L'indice documentato della memoria automatica ha limiti all'avvio, con file aggiuntivi per argomento letti quando necessario.

Questa architettura riconosce un punto importante. La memoria persistente non può essere un unico prompt in continua espansione. Necessita di un indice, regole di recupero, confini di ambito e un modo per separare le indicazioni di alto valore dai dettagli occasionali.

Il repository pubblico di Codex di OpenAI contiene anch'esso componenti relativi alla memoria e modelli di archiviazione gestiti da Git. Queste implementazioni differiscono, ma indicano lo stesso requisito operativo. Gli agenti hanno bisogno di continuità tra sessioni senza inviare l'intera cronologia di un progetto in ogni chiamata al modello.

OKF Agent Memory entra in questa transizione. Tratta il repository come il confine condiviso tra persone, agenti, macchine e fornitori. Questa scelta offre ai team un luogo familiare per revisione, sincronizzazione e controllo degli accessi.

Git registra già chi ha modificato un file, quando è stato modificato e in che modo differisce dalle versioni precedenti. La panoramica di Git di GitHub evidenzia clonazione, branching, commit, merging e confronto delle modifiche. Queste funzionalità possono anche governare la conoscenza prodotta dagli agenti.

La tempistica riflette anche un interesse crescente per il contesto portabile. Le aziende utilizzano sempre più di un assistente di coding, talvolta all'interno dello stesso repository. Un sistema di memoria legato alla directory privata di un solo client può frammentare ciò che gli agenti sanno.

Un formato locale al repository offre una risposta plausibile. Claude Code, Codex, Cursor e un altro client compatibile con MCP potrebbero ispezionare la stessa conoscenza approvata. Gli sviluppatori non dovrebbero tradurre ogni decisione in più archivi proprietari.

Il formato è importante perché il solo Markdown non comunica una struttura sufficiente. Un documento necessita di identificatori, tipi, relazioni, provenienza e segnali di aggiornamento se le macchine dovranno mantenerlo. Altrimenti, il recupero diventa una ricerca tra note con nomi poco strutturati.

Google ha introdotto OKF per standardizzare questo livello. Il suo aggiornamento di luglio 2026 ha aggiunto funzionalità orientate alla fiducia dopo che i contributori avevano sollevato dubbi sui corpus scritti dagli agenti. Il modello di fiducia OKF include concetti quali provenienza e stato del ciclo di vita.

OKF Agent Memory adotta questa direzione e vi aggiunge strumenti per sviluppatori. Il progetto afferma che i record possono distinguere il materiale generato da quello verificato. Supporta inoltre campi che indicano lo stato e il momento in cui un concetto diventa obsoleto.

Questi campi non garantiscono la verità. Forniscono agganci per processi di revisione e controlli automatizzati. Il loro valore reale dipende dall'applicazione coerente da parte dei team e dal rispetto da parte degli agenti durante il recupero.

Ecco perché la memoria Git-native è diventata credibile ora. Gli agenti di coding stanno affrontando compiti più lunghi, il contesto sta diventando costoso e i team vogliono conoscenza portabile. La domanda rimanente è se un sistema basato su file possa restare affidabile sotto una scrittura automatizzata continua.

Il confronto principale è tra memoria verificabile e recupero privato

L'argomento più forte di OKF Agent Memory non è una ricerca più veloce. È che la memoria condivisa dovrebbe passare attraverso lo stesso sistema di revisione del codice.

I servizi di memoria basati su database ottimizzano generalmente per il richiamo. Possono incorporare conversazioni, documenti o osservazioni come vettori e recuperare materiale semanticamente simile. Questo approccio aiuta quando una query utilizza parole diverse dal testo archiviato.

OKF Agent Memory utilizza BM25, un metodo di ranking lessicale che assegna un punteggio ai documenti in base ai termini corrispondenti e alla loro importanza relativa. Il repository afferma che la sua ricerca in memoria viene completata in meno di 300 microsecondi. Rivendica inoltre un ridotto utilizzo di memoria e l'assenza di un servizio di recupero esterno.

Questi dati provengono da benchmark forniti dal progetto. Non sono stati convalidati in modo indipendente nel materiale disponibile per questo report. I confronti con altri sistemi possono inoltre riflettere hardware, dimensioni dei corpus, fasi di indicizzazione e presupposti di rete differenti.

È improbabile che la velocità decida il confronto più ampio. L'inferenza del modello e l'orchestrazione degli strumenti richiedono spesso molto più tempo di una ricerca testuale locale. Risparmiare millisecondi conta nei cicli ripetuti, ma qualità del recupero e governance contano di più quando un agente modifica codice di produzione.

Il modello Git-native rende ogni record di memoria un artefatto ispezionabile. Uno sviluppatore può vedere quando un agente ha aggiunto un'affermazione, contestarne la fonte, richiedere una correzione o annullare la modifica. Un team può richiedere una revisione per record architetturali importanti.

Il recupero privato offre un altro vantaggio. Può conservare osservazioni personali, dettagli conversazionali e ipotesi di lavoro senza aggiungerli a un repository condiviso. Questa separazione può risultare utile quando le note sono provvisorie, sensibili o irrilevanti per altri contributori.

I due modelli servono quindi ambiti diversi. La memoria automatica locale può conservare le preferenze di un utente e gli insegnamenti specifici della macchina. La memoria del repository può trasportare conoscenza di progetto approvata tra contributori e strumenti.

OKF Agent Memory diventa più utile quando si rifiuta di assorbire tutto. Un comando di test fallito può meritare una nota di sessione temporanea. Un vincolo di deployment confermato, una decisione di autenticazione o una dipendenza di migrazione possono meritare un record di progetto revisionato.

Questa distinzione richiama una più ampia gestione della conoscenza. Catturare le informazioni è solo il primo passo. Un sistema utile deve organizzarle, recuperarle al momento giusto ed esporre contesto sufficiente per valutarne l'affidabilità.

Consideriamo una migrazione di servizio. Un agente scopre che un client legacy dipende da un campo di risposta non documentato. Registra la dipendenza con una fonte, uno stato e i componenti interessati. Un altro agente trova in seguito quel record prima di modificare l'API.

Nel caso migliore, la memoria previene una regressione. Lo sviluppatore che esamina la modifica finale può ricondurre l'avviso alle prove. La conoscenza viaggia con il branch e resta disponibile a un altro agente compatibile.

Nel caso peggiore, il primo agente interpreta male una dipendenza. Il record diventa quindi una falsità durevole con metadati dall’aspetto professionale. Gli agenti futuri lo recuperano, evitano una modifica sicura e rafforzano l’errore attraverso riferimenti ripetuti.

Un database vettoriale può subire lo stesso fallimento. La sua opacità, tuttavia, può rendere più difficile ispezionare la catena. Git rende visibile l’errore, ma la visibilità aiuta solo quando qualcuno esamina la modifica pertinente.

Il progetto affronta la duplicazione tramite una convenzione di ricerca prima della scrittura. Gli agenti dovrebbero interrogare i concetti esistenti prima di creare un altro record. Questo può ridurre le note parallele che descrivono la stessa decisione con formulazioni in conflitto.

Tuttavia, la ricerca lessicale introduce un proprio limite. BM25 premia le parole condivise, quindi può non individuare record concettualmente correlati che usano una terminologia diversa. Un documento sulla "rotazione delle credenziali" potrebbe non posizionarsi per una query formulata attorno al "rinnovo dei segreti".

I team possono ridurre questo divario lessicale con convenzioni di denominazione, alias e collegamenti incrociati. Possono anche aggiungere in seguito un livello di recupero semantico. Il corpus nativo di Git non impedisce un’indicizzazione più ricca, perché il materiale sorgente rimane accessibile.

Questa flessibilità rafforza la tesi centrale del progetto. Il repository è il sistema di registrazione, mentre BM25 è un metodo di accesso sostituibile. I team non sono tenuti ad affidare la memoria canonica a un indice particolare.

La contrapposizione, quindi, non è tra file e database in termini assoluti. È tra materiale sorgente revisionato e portabile e memoria intrappolata in un singolo servizio di recupero. OKF Agent Memory scommette sul fatto che la conoscenza durevole debba rimanere leggibile anche quando cambia lo stack di agenti circostante.

La ricerca rapida non può risolvere il degrado della memoria

Il problema più difficile è decidere cosa merita di diventare memoria, chi lo verifica e quando un agente deve smettere di fidarsene.

Le dichiarazioni sulle prestazioni del progetto attirano l’attenzione perché sono facili da misurare. Il repository cita ricerche in meno di 300 microsecondi, una validazione del grafo di circa quattro millisecondi e una riduzione dell’80 percento nell’uso di token. Restano dichiarazioni del progetto basate sulla configurazione di benchmark fornita.

La riduzione dei token dipende dalla base di confronto. Un indice strutturato dovrebbe usare meno token rispetto al caricamento di un unico documento di grandi dimensioni, ma la percentuale cambia in base al corpus e all’attività. Cambia anche quando il recupero non trova un concetto necessario e impone ricerche aggiuntive.

La latenza di ricerca presenta un problema analogo. Confrontare BM25 locale con un’API remota per embedding combina differenze algoritmiche e overhead di rete. Una valutazione equa isolerebbe indicizzazione, elaborazione delle query, scala del corpus, pertinenza, avvii a freddo e successo end-to-end dell’attività.

Il test più importante riguarda i risultati. La memoria aiuta gli agenti a completare le attività nel repository con meno correzioni? Previene errori architetturali ripetuti? Riduce il tempo dedicato a riscoprire vincoli di build?

Un benchmark dovrebbe inoltre misurare il recupero dannoso. Un agente può trovare rapidamente un documento vecchio e prendere comunque una decisione peggiore. La falsa sicurezza derivante da un record strutturato può creare più rischio di un’ammissione esplicita che manca il contesto.

OKF v0.2 fornisce campi utili per questo problema. La provenienza può identificare l’origine di un’affermazione. Gli stati di fiducia possono separare i contenuti generati da quelli verificati. I metadati di scadenza possono avvertire che un record richiede una nuova verifica.

Questi meccanismi richiedono applicazione. Un agente deve trattare le note generate come ipotesi, non come fatti. La validazione dovrebbe rilevare strutture danneggiate, mentre la revisione umana dovrebbe occuparsi del significato. Nessuno schema può determinare se una decisione architetturale corrisponde ancora al software distribuito.

I branch creano un’ulteriore complicazione. Due agenti possono aggiornare memorie correlate su branch separati modificando lo stesso sistema. Git può esporre il conflitto testuale, ma non può riconciliare automaticamente le interpretazioni sottostanti.

La memoria del repository può anche contenere materiale sensibile. Gli agenti possono registrare accidentalmente dettagli dei clienti, endpoint interni, credenziali o risultati di sicurezza. Una volta effettuati commit e push, l’eliminazione di quel contenuto dai file correnti non cancella ogni copia storica.

I team necessitano quindi delle stesse regole di scansione dei segreti e gestione dei dati usate per il codice. Le modifiche alla memoria dovrebbero identificare le proprie fonti senza copiare dati soggetti a restrizioni. La memoria personale sensibile dovrebbe rimanere fuori da un repository condiviso.

Il prompt injection presenta una minaccia correlata. Un documento dannoso o compromesso potrebbe includere testo che tenta di reindirizzare il comportamento di un agente. Il front matter strutturato non neutralizza le istruzioni nascoste nel contenuto.

MCP aggiunge un altro confine da sottoporre a revisione. Il protocollo consente ai server di esporre contesto e strumenti, ma l’host rimane responsabile di autorizzazioni e isolamento. Un server di memoria locale dovrebbe ricevere solo gli accessi necessari e non dovrebbe diventare un’autorità indiscussa.

Anche l’impostazione del progetto basata su zero dipendenze merita precisione. Il suo modulo Go può evitare pacchetti runtime di terze parti e il recupero locale può evitare un database esterno. Gli utenti dipendono comunque da Git, da un client agente, dai controlli del sistema operativo e dal servizio di modelli scelto.

Allo stesso modo, la neutralità rispetto ai fornitori è una proprietà architetturale, non un risultato di adozione. Un formato diventa portabile quando più strumenti indipendenti lo leggono e lo scrivono in modo coerente. Le dichiarazioni di compatibilità richiedono test sulle versioni effettive di Claude Code, Codex, Cursor e altri client.

La cronologia pubblica del repository era estremamente recente al momento della revisione. Ciò limita le evidenze su governance dei contributori, stabilità delle release, comportamento delle migrazioni e manutenzione della compatibilità. Il codice iniziale può comunque offrire un progetto utile, ma i team non dovrebbero confondere la completezza con la maturità.

Una valutazione pratica dovrebbe iniziare con un corpus ristretto. I team potrebbero registrare decisioni architetturali revisionate, vincoli operativi e problemi ricorrenti di build. Dovrebbero escludere trascrizioni grezze e speculazioni non verificate.

I revisori possono quindi verificare se gli agenti recuperano i record corretti durante attività reali. Dovrebbero monitorare concetti mancati, indicazioni obsolete, voci duplicate e uso non necessario di token. Questi risultati contano più di un microbenchmark da solo.

Questo approccio protegge inoltre il repository dal diventare un contenitore indiscriminato. La memoria persistente si guadagna il proprio posto riducendo la confusione futura. Se gli sviluppatori non sanno spiegare perché un record dovrebbe sopravvivere, probabilmente appartiene al contesto di lavoro temporaneo.

Git offre ai team responsabilità e ripristino. Non fornisce giudizio editoriale. OKF Agent Memory riesce solo quando le sue convenzioni trasformano quel giudizio in un flusso di lavoro ripetibile.

Tre segnali determineranno se il lancio su Hacker News conta

Adozione, risultati indipendenti sulle attività e comportamento di governance mostreranno se OKF Agent Memory diventerà infrastruttura o resterà un repository interessante.

Il primo segnale è l’uso cross-client. Osservate se gli sviluppatori eseguono un unico bundle OKF condiviso tramite più agenti di coding senza riscrivere i record. Integrazioni confermate e test di compatibilità rafforzerebbero l’affermazione di portabilità.

Un’interfaccia MCP aiuta perché i client compatibili possono accedere alla stessa superficie server. Tuttavia, la compatibilità del protocollo non garantisce coerenza comportamentale. Un agente può cercare prima di modificare, mentre un altro può ignorare la memoria se non riceve un prompt esplicito.

Test utili dovrebbero riportare quali client sono stati usati, come sono state configurate le loro istruzioni e se hanno rispettato i metadati di fiducia. Dovrebbero anche descrivere i fallimenti. Un badge di compatibilità senza evidenze di recupero aggiungerebbe poca fiducia.

Il secondo segnale è una valutazione indipendente su lavoro di programmazione reale. I tester esterni dovrebbero confrontare il completamento delle attività senza memoria, con istruzioni monolitiche, memoria automatica nativa e il bundle OKF. Dovrebbero misurare correzioni, accuratezza del recupero, uso dei token, tempo trascorso e regressioni.

Tali risultati potrebbero confermare il meccanismo del progetto anche se i suoi numeri principali cambiano. Una riduzione minore dei token accompagnata da meno errori ripetuti avrebbe comunque rilevanza. Un recupero rapido senza miglioramenti nella qualità delle attività indebolirebbe la tesi.

La dimensione del corpus sarà importante. Un bundle contenente 50 concetti differisce notevolmente da un repository maturo con anni di decisioni e cronologia operativa. Prestazioni e pertinenza dovrebbero rimanere utili man mano che terminologia, team e architetture evolvono.

Il terzo segnale è la qualità delle modifiche alla memoria. Osservate se i contributori revisionano record scritti dagli agenti, contrassegnano correttamente le affermazioni incerte e rimuovono la conoscenza obsoleta. I repository sani dovrebbero mostrare correzioni ed eliminazioni, non un accumulo senza fine.

Questo segnale di governance potrebbe essere più difficile da inserire in un benchmark. È anche il più vicino alla promessa centrale del progetto. Un livello di memoria dovrebbe rendere visibile l’incertezza e migliorare la decisione successiva, anziché limitarsi a conservare più testo.

La risposta su Hacker News stessa dovrebbe essere letta con cautela. Undici punti e due commenti mostrano che il progetto è entrato in una comunità tecnicamente coinvolta. Non rivelano utilizzo continuativo, affidabilità in produzione o consenso sulla memoria nativa di Git.

Una discussione più ampia diventerebbe significativa se i maintainer riportassero distribuzioni concrete e casi di fallimento. Il feedback più prezioso spiegherà dove la ricerca ha mancato il contesto, dove i record sono andati alla deriva e dove la revisione ha evitato un errore dell’agente.

Gli sviluppatori che valutano il progetto dovrebbero ispezionare i file prima di adottarne le affermazioni. Possono riprodurre i benchmark inclusi, esaminare la convenzione di memoria e testare un piccolo bundle rispetto alle attività ricorrenti del repository. Dovrebbero mantenere i record generati visibilmente non verificati finché una persona o un processo affidabile non li controlla.

I team che già mantengono lunghi file di istruzioni hanno un esperimento chiaro. Spostate la conoscenza dettagliata e specifica delle attività in record indicizzati, mantenendo concise le regole essenziali. Quindi confrontate il comportamento dell’agente prima e dopo la modifica.

Le organizzazioni che usano diversi assistenti di coding hanno una domanda ancora più precisa. Un corpus di memoria revisionato può ridurre la duplicazione specifica degli strumenti senza creare un nuovo onere di manutenzione? Questo risultato sosterrebbe l’approccio nativo di Git più fortemente della velocità di ricerca.

Il progetto indica inoltre un cambiamento più ampio nella conoscenza ingegneristica. Gli agenti di coding necessitano di accesso alle decisioni e al contesto operativo, non solo ai file sorgente. I team hanno bisogno che quel contesto rimanga ricercabile, attribuibile e correggibile.

OKF Agent Memory offre una risposta iniziale coerente. Conservare la conoscenza durevole del progetto in file aperti, tracciarla con Git, esporla tramite MCP e recuperare i dettagli solo quando necessario. Ogni parte usa tecnologie che gli sviluppatori già comprendono.

Il suo problema irrisolto è sociale quanto tecnico. Qualcuno deve decidere cosa entra nella memoria, verificare le affermazioni importanti, risolvere record concorrenti e ritirare la conoscenza obsoleta. Una ricerca BM25 più veloce non può svolgere da sola queste responsabilità.

I prossimi uno-tre mesi dovrebbero chiarire se i maintainer attireranno contributori indipendenti, pubblicheranno risultati cross-client riproducibili e dimostreranno una revisione disciplinata della conoscenza. Questi segnali rafforzerebbero la storia su Hacker News. La loro assenza lascerebbe il progetto come un prototipo ponderato con benchmark interni ambiziosi.

Per gli sviluppatori, l’azione immediata non è migrare ogni nota. Selezionate una fonte ricorrente di confusione per gli agenti e rappresentatela come conoscenza revisionata e versionata. Poi verificate se un altro agente può trovarla, comprenderne la provenienza e apportare una modifica migliore.

Questo esperimento pone la domanda finale corretta: la memoria persistente aiuta la prossima sessione di coding a prendere una decisione più accurata, oppure si limita a preservare le ipotesi di ieri?

 
 

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