MentorAgent

Open source · motore .NET, qualunque front end

Gli agenti AI delle tue applicazioni, sotto il tuo controllo.

I metodi della tua app, i tool MCP e gli agenti A2A diventano un agente che governi con le tue regole. Lo porti sul web, nelle app mobili, negli assistenti AI e negli altri agenti.

dotnet add package Novior.MentorAgent
PraticheService.cs
public class PraticheService(IGestionale gestionale)
{
    [MentorAction(
        Description = "Registra una nota sulla pratica",
        RequiredRoles = ["Operatori"])]
    public Task RegistraNota(string pratica, string testo)
        => gestionale.AggiungiNotaAsync(pratica, testo);
}

.NET 10 LTSBlazor e MAUI HybridReact, Angular, Vue e app mobileMCP e A2A

Dai tuoi sistemi a dove sono i tuoi utenti

MentorAgent gira dentro la tua applicazione .NET. Prende quello che i tuoi sistemi sanno già fare, applica le tue regole e porta lo stesso agente dovunque lavorino i tuoi utenti: nel browser, sul telefono, in un assistente AI, in un altro agente o in uno script.

I tuoi sistemi

  • Metodi .NET[MentorAction]
  • Tool MCPdai server MCP
  • Agenti A2Asu altri host

MentorAgent

Il livello applicativo per gli agenti AI

  • Governance
  • Specialisti e team
  • Pagine e skill
  • Controllo dei costi
  • Osservabilità
  • Modelli cloud o locali

Dove sono i tuoi utenti

  • WebBlazor, React, Angular, Vue
  • MobileMAUI (Android, Windows), iOS e Android nativi via SignalR
  • Assistenti AIMCP
  • Altri agentiA2A
  • Script e serviziHTTP, SSE
  • Aperto oltre .NET

    Il cuore è .NET; quello che gli sta intorno può essere scritto in altri linguaggi. I front end si collegano con SignalR o con i Server-Sent Events; tool e agenti con MCP e A2A, che hanno SDK ufficiali per Python, JavaScript, Java, Go e altri.

  • Si installa dove gira la tua app

    È una libreria dentro un'app ASP.NET Core su .NET 10: Windows o Linux, un container, il cloud o i tuoi server. Non manda telemetria ai suoi autori.

  • Il tuo modello, in cloud o in locale

    Azure OpenAI, OpenAI o un modello locale con Ollama. Con un modello locale la conversazione e i dati che leggono le tue azioni restano nella tua rete.

Governi gli agenti come governi la tua applicazione

Il tuo codice decide cosa può fare l'agente. Chi può eseguire ogni azione, cosa chiede conferma, quali limiti valgono e quanto costa: lo dichiari in C#, accanto ai tuoi metodi, e MentorAgent lo applica su ogni canale. Una regola nel prompt si può aggirare con le parole; un controllo nel tuo codice no.

  • Chi può fare cosa

    Ogni azione dichiara in RequiredRoles i ruoli che possono eseguirla. MentorAgent li controlla sull'utente collegato prima di tutto: senza il ruolo, al modello l'azione non viene nemmeno offerta. Per regole per azienda o per record, MentorAgent chiede prima di ogni chiamata al tuo IMentorActionPolicy.

  • Una conferma prima di cambiare i dati

    Una [MentorAction] che cambia i dati chiede prima all'utente e mostra i valori che sta per usare. Le azioni che leggono soltanto dichiarano ReadOnly = true e partono subito.

  • Le stesse regole su ogni canale

    Widget, hub SignalR, SSE, MCP e A2A fanno gli stessi controlli. Dove nessuno può confermare, come con MCP e A2A, le azioni che chiedono conferma non vengono offerte.

  • Limiti e controlli

    Messaggi per utente e loro lunghezza, domande fuori dalla tua applicazione, controlli sui messaggi in arrivo e sulle risposte. Ognuno si regola nelle opzioni.

  • Costi sotto controllo

    Al modello arrivano solo i tool che servono al messaggio, le conversazioni lunghe si accorciano e il modello più potente risponde solo ai turni che lo richiedono. Una dashboard mostra token e costo stimato per modello.

  • Visibile nel tuo monitoraggio

    Turni, chiamate ai tool, errori e messaggi bloccati vanno in OpenTelemetry come tracce e metriche, secondo le convenzioni per l'AI generativa, negli strumenti che usi già. Ogni decisione su un'azione, compreso chi l'ha confermata, arriva anche a un tuo IMentorActionObserver.

Cosa succede quando l'utente chiede all'agente di modificare dei dati

Aggiungi alla pratica P-2026-0102 la nota: documenti ricevuti il 25/09.

Utente con il ruolo Operatori

Ruolo Operatori: presente · registra_nota è offerta al modello

Posso aggiungere la nota. Controlla i dati e conferma.

Confermata: RegistraNota viene eseguito e la nota è salvata.

Annullata: RegistraNota non viene eseguito, non cambia niente e la libreria comunica il rifiuto al modello.

Utente senza il ruolo

Ruolo Operatori: assente · registra_nota non è offerta al modello

Non posso aggiungere note alle pratiche: non è tra le azioni che ho a disposizione.

Nessun riquadro, nessuna modifica: una chiamata fatta comunque è rifiutata prima della domanda.

Dati di esempio; anche le risposte del modello sono esempi. Titolo, testo e pulsanti del riquadro sono quelli del widget; le altre righe riassumono cosa fa la libreria.

Cosa resta nel tuo codice. Quello che non dichiari resta aperto: senza RequiredRoles chiunque raggiunga l'agente può chiamare l'azione, e un metodo con il solo [Description] non chiede mai conferma. I ruoli si controllano per azione: chi può toccare quale record lo decide il tuo codice, nei tuoi metodi o in un IMentorActionPolicy. Gli endpoint dell'hub, di SSE, di MCP e di A2A restano aperti finché non li proteggi.

Il rischio che questi controlli affrontano è quello che OWASP chiama Excessive Agency (LLM06:2025).

Features

Tutto è già nella 1.2.0.

  • Un attributo, un'azione

    Basta un attributo su un metodo C# perché l'agente possa chiamarlo. Decidi tu chi può usarlo e se prima serve la conferma dell'utente.

  • Agenti che delegano

    L'agente principale passa la richiesta a uno specialista, oppure più agenti ne discutono in una chat di gruppo prima di rispondere.

  • Il front end che preferisci

    Usa il widget Blazor già pronto, oppure scrivi tu la chat in React, Angular, Vue o in un'app mobile e collegala via SignalR o SSE.

  • Dialoga con altri agenti

    Puoi pubblicare le azioni come server MCP o come agente A2A, e il tuo agente può a sua volta usare tool MCP e agenti A2A remoti.

  • Scegli il modello, controlla i costi

    OpenAI, Azure OpenAI, Foundry o un modello locale come Ollama. Le domande semplici vanno a un modello più economico, il cruscotto mostra quanto costa ciascuno e i turni si possono seguire con OpenTelemetry.

  • Risposte dai tuoi contenuti

    RAG sui tuoi documenti, una memoria per ogni utente e le Agent Skills. Ognuna si accende solo dove decidi tu.

Il widget di MentorAgent nell'app dell'avvio rapido. L'utente ha chiesto di aggiungere una nota alla pratica P-2026-0102 e l'assistente risponde che aggiungerà la nota; il widget mostra il riquadro di conferma con l'azione, i suoi dati e i pulsanti Annulla e Conferma.
L'app dell'avvio rapido con un modello vero: RegistraNota parte solo dopo la conferma dell'utente. I dati sono di esempio.

Tre passi per il primo agente

In una Blazor Web App interattiva lato server, con installati MentorAgent e il pacchetto del modello (per OpenAI, Microsoft.Extensions.AI.OpenAI):

  1. Descrivi i metodi

    Segna con [MentorAction] i metodi che l'agente può chiamare: ReadOnly = true su quelli che leggono soltanto. Gli altri chiedono conferma.

  2. Registra l'agente

    In Program.cs registra il servizio che contiene i metodi, poi indica il modello e l'assembly in cui cercare le azioni.

    Program.cs
    builder.Services.AddScoped<PraticheService>();
    builder.Services.AddMentorAgent(options =>
    {
        options.AppName = "Gestionale pratiche";
        options.Language = MentorLanguage.Italian;
        options.ChatClient = new OpenAIClient(builder.Configuration["OpenAI:Key"]
                ?? throw new InvalidOperationException("OpenAI:Key mancante: esegui "
                    + "dotnet user-secrets set OpenAI:Key <la-tua-chiave>"))
            .GetChatClient("gpt-4o-mini")
            .AsIChatClient();
        options.ScanAssemblies = [typeof(Program).Assembly];
    });
  3. Aggiungi il widget

    Aggiungi @using Novior.MentorAgent.Abstractions.Components a _Imports.razor, poi metti il widget nel layout.

    MainLayout.razor
    <ChatWidget />

Il codice di questa pagina compila con la 1.2.0, e l'avvio rapido è stato provato il 27/10/2026.

Usi già Microsoft Agent Framework?

MentorAgent si basa su Agent Framework 1.26.0 e non lo nasconde: lo configura al posto tuo, e accetta anche un AIAgent che costruisci tu. Agent Framework porta agenti, workflow e approvazione dei tool; MentorAgent ci aggiunge il livello dell'applicazione, come mostra lo schema.

  1. La tua applicazione metodi C# con attributi · pagine Blazor · utenti e ruoli di ASP.NET Core
  2. MentorAgent scoperta dei tool · prompt, memoria, RAG · ruoli e conferme · widget, hub, SSE, MCP, A2A · costi e routing
  3. Microsoft Agent Framework 1.26.0 agenti · workflow con handoff e group chat · function calling · approvazioni
  4. Il modello un IChatClient o un AIAgent, con tool calling: Azure OpenAI, OpenAI, Ollama, Foundry
Tool e dati database e API interne · server MCP · agenti A2A remoti

È adatta se

  • hai un'app .NET 10 (Blazor Web App, ASP.NET Core o MAUI Hybrid) e, se ti servono i ruoli, l'autenticazione di ASP.NET Core;
  • vuoi che l'agente usi i metodi della tua applicazione, non una API scritta apposta per lui;
  • alcune azioni scrivono dati e vuoi che l'utente le confermi;
  • ti serve lo stesso agente su più client, o esposto via MCP e A2A.

Non è adatta se

  • sei su .NET 8 o 9;
  • ti serve solo un chatbot sui documenti, senza azioni: bastano Microsoft.Extensions.AI o Agent Framework;
  • cerchi un motore di workflow con stato persistente e compensazioni.

Qualità che puoi verificare

Fatti su come MentorAgent si costruisce e si pubblica, ognuno con la fonte pubblica dove controllarlo.

  • 23

    versioni pubblicate da giugno 2026

    20 con il vecchio nome MentorAgent, poi Novior.MentorAgent dalla 1.0.0. Oggi la 1.2.0.

    NuGet (sito esterno)
  • Niente rotture a sorpresa

    Ogni versione viene confrontata con la 1.1.0: se una classe o un metodo che il tuo codice usa cambierebbe in modo incompatibile, il rilascio si ferma.

    Directory.Build.props (sito esterno)
  • L'elenco di cosa c'è in ogni pacchetto

    Ogni pacchetto contiene il suo SBOM, l'elenco standard dei file e dei componenti che ha dentro, che il tuo team di sicurezza può controllare. Dalla 1.1.0.

    SECURITY.md (sito esterno)
  • Open source, risalibile al commit

    Apache 2.0. Ogni versione dalla 1.0.0 ha il suo tag e le sue note di rilascio su GitHub, e ogni pacchetto dice da quale commit viene.

    GitHub (sito esterno)
  • Rilasci controllati

    Ogni versione è compilata su macchine pulite nel cloud, mai sul computer di uno sviluppatore, ed esce su NuGet solo dopo l'approvazione di una persona.

    SECURITY.md (sito esterno)

Stato e roadmap

Ultima versione: 1.2.0, pubblicata su NuGet il (UTC) Note di versione

Stabile dalla 1.0.0: le modifiche incompatibili arrivano solo con una nuova versione principale (Semantic Versioning).

In programma

  • Risposte basate sui tuoi documenti, anche su grandi archivi
  • Modelli sulle tue macchine, e la misura della qualità delle risposte
  • Un'app, tanti clienti: dati e limiti separati per ognuno
  • Più modi di dare azioni all'agente, anche dalle API che hai già
  • Le azioni dell'interfaccia sotto le stesse regole di tutte le altre
  • React e Angular alla pari di Blazor: l'agente lavora anche nel tuo front end
  • Costi chiari: quanto spende ogni agente e ogni utente
  • Compatibile con lo standard AG-UI e i suoi client
  • Un widget che tutti possono usare, secondo la norma europea sull'accessibilità

In arrivo: una console per amministrare gli agenti MentorAgent nelle tue applicazioni.

Domande frequenti

Posso usarla in un prodotto commerciale?

Sì, la licenza Apache 2.0 lo permette, anche in un software a pagamento. Se la ridistribuisci, includi una copia della licenza e il file NOTICE che la accompagna, come spiega la pagina della licenza.

Dov'è il codice sorgente?

Su GitHub (sito esterno), con la licenza Apache 2.0 come i pacchetti. La documentazione spiega come usarli.

Quali dati escono dalla mia applicazione?

Al provider del modello arrivano la conversazione, il nome e i ruoli dell'utente, il contesto della pagina e i risultati delle azioni; ai server MCP e agli agenti A2A remoti arrivano le richieste che deleghi a loro. La libreria non manda telemetria agli autori. La documentazione elenca tutto quello che esce.

Funziona con modelli locali?

Sì, con un endpoint compatibile con OpenAI come Ollama, purché il modello gestisca il tool calling (modelli locali).

Quanto è matura?

È stabile. La 1.2.0, pubblicata in data 27/10/2026 (UTC), è l'ultima delle 23 versioni uscite su NuGet dal 22/06/2026, e dalla 1.0.0 le modifiche incompatibili arrivano solo con una nuova versione principale. Fino alla 1.0.0-rc.15 i pacchetti si chiamavano MentorAgent.*. Le note della 1.2.0 spiegano cosa cambia in questa versione e cosa resta aperto; ogni versione è nelle note di versione.

Funziona su .NET 8 o 9?

No, serve .NET 10, la versione LTS con supporto di Microsoft fino al 14/11/2028 (requisiti). .NET 8 e .NET 9 escono dal supporto il 10/11/2026.

Quanto costa?

La libreria è gratuita: paghi il provider del modello, oppure usi un modello locale.

Serve Blazor?

No, Blazor serve solo per il widget già pronto. Con Novior.MentorAgent.Server i client React, Angular, Vue o mobile si collegano a un hub SignalR oppure usano SSE, e l'interfaccia la scrivi tu (il tuo front end).

Serve .NET dappertutto?

No, su .NET 10 gira solo l'applicazione che ospita l'agente. Front end, tool e altri agenti possono essere scritti in altri linguaggi e collegarsi con SignalR, SSE, MCP o A2A (i canali).

Quali versioni ricevono le correzioni?

L'ultima minor riceve tutte le correzioni; la minor precedente quelle di sicurezza per 3 mesi, la major precedente per 6. I dettagli sono in Supporto e versioni.

Documentazione

Guide, concetti e riferimento, verificati sulla 1.2.0. La documentazione è in inglese.

  • Per iniziare

    Prerequisiti, pacchetti, l'avvio rapido e un tutorial che fa crescere l'app passo per passo.

  • Concetti

    I tre livelli di agente, come funzionano ruoli e conferme, e quale canale scegliere per il tuo client.

  • Configurazione

    Blazor, un front end scritto da te, MCP e A2A, i provider dei modelli, la protezione degli endpoint e il passaggio in produzione.

  • Riferimento

    Opzioni e attributi, con tipi e valori predefiniti, verificati sui pacchetti pubblicati.

  • Note di versione

    Cosa cambia nella 1.2.0, cosa fare quando aggiorni e i problemi noti. Nelle note di versione ci sono anche tutte le versioni precedenti.