Skip to main content

Appunti

Libro: Lyren

 

Capitolo 1 – Architettura generale
- Obiettivo
- Topologia
- Ruoli

 

Capitolo 2 – Installazione ambiente Mac mini
- Node
- Dipendenze
- Struttura progetto

 

Capitolo 3 – Motore conversazionale
- LLM
- Prompt
- Personalità

 

Capitolo 4 – Memoria persistente
- Database
- Struttura tabelle
- Logica salvataggio

 

Capitolo 5 – Modulo Server Monitor
- Connessione VPN
- Ping
- SSH
- Notifiche

________________________________________________________________________________________________________________

 

🧠 PROGETTO LYREN – DIAGRAMMA CONCETTUALE

🌍 Struttura Fisica


CASA ┌─────────────────────┐ │ Mac mini │ │ ├─ Lyren Core │ │ ├─ Memory DB │ │ ├─ LLM locale │ │ └─ Monitor Client │ └─────────────────────┘ │ │ WireGuard (split tunnel) ▼ REMOTO (20 km) ┌─────────────────────┐ │ Server Ubuntu │ │ ├─ Node Dashboard │ │ ├─ Docker │ │ ├─ Nginx │ │ └─ Servizi vari │ └─────────────────────┘

 

📘 Struttura progetto su Mac mini

Ti disegno la futura struttura cartelle:


lyren/ │ ├── core/ │ ├── server.js │ ├── router.js │ └── prompt.js │ ├── memory/ │ ├── database.sqlite │ └── memoryManager.js │ ├── monitor/ │ ├── ping.js │ ├── sshClient.js │ └── scheduler.js │ ├── config/ │ ├── personality.json │ └── settings.json │ └── web/ ├── index.html └── chat.js

Niente caos.
Tutto modulare.
Documentabile.


🧠 LIVELLI DI COMPLESSITÀ (progressivi)

Fase 1

Chat locale funzionante.

Fase 2

Memoria persistente.

Fase 3

Ping automatico server.

Fase 4

Stato servizi via SSH.

Fase 5

Notifiche.

Solo dopo, eventualmente:
Alexa.

 

🗺️ PROGETTO LYREN – VERSIONE COMPLETA (umana + tecnica)

Dividerò in due sezioni come richiesto:


🧭 1️⃣ MAPPA CONCETTUALE (Versione BookStack)

🎯 Obiettivo

Creare un assistente locale (Lyren) che:

  • Conversa con Arya

  • Ricorda informazioni nel tempo

  • Monitora il server remoto

  • Notifica problemi

  • Non agisce autonomamente (per ora)


🌍 Architettura generale

CASA

Mac mini = cervello

Funzioni:

  • Chat AI

  • Memoria

  • Monitor server

  • Notifiche


REMOTO (20 km)

Server = infrastruttura

Funzioni:

  • Servizi (Docker, Nginx, ecc.)

  • Dashboard Node già esistente

  • Esposto sotto dominio

  • Collegato via WireGuard


🔁 Comunicazione

Mac mini ↔ Server
Via IP VPN WireGuard

Nessuna esposizione pubblica necessaria.


🧠 Componenti logici

1. Lyren Core

Gestisce:

  • Chat

  • Routing richieste

  • Personalità


2. Memory Engine

Salva:

  • Preferenze

  • Eventi server

  • Feedback

  • Conversazioni importanti


3. Monitor Engine

Ogni X minuti:

  • Ping server

  • Se down → salva evento

  • Se down → notifica


4. Policy Engine

Regole:

  • Non esegue azioni distruttive

  • Non riavvia autonomamente

  • Può solo avvisare



🏗️ 2️⃣ DIAGRAMMA TECNICO (schema a blocchi)


┌─────────────────────────────┐ │ MAC MINI │ │ │ │ ┌───────────────┐ │ │ │ Web UI │ │ │ └──────┬────────┘ │ │ │ │ │ ┌──────▼────────┐ │ │ │ Lyren Core │ │ │ │ (Node App) │ │ │ └──────┬────────┘ │ │ │ │ │ ┌──────▼────────┐ │ │ │ Memory Engine │ │ │ │ SQLite │ │ │ └──────┬────────┘ │ │ │ │ │ ┌──────▼────────┐ │ │ │ Monitor │ │ │ │ SSH + Ping │ │ │ └──────┬────────┘ │ └─────────┼────────────────────┘ │ WireGuard VPN ▼ ┌─────────────────────────────┐ │ SERVER REMOTO │ │ │ │ Docker / Nginx / Node │ │ Dashboard esistente │ │ │ └─────────────────────────────┘

🔐 LIVELLO AUTONOMIA ATTUALE

Modalità attiva:

✔️ Conversazione libera
✔️ Monitoraggio automatico
✔️ Notifica problemi

Disattivo:

❌ Azioni autonome
❌ Riavvio automatico
❌ Modifica servizi

Questo è totalmente modificabile in futuro.


💬 Personalità (configurabile)

Lyren sarà:

  • Tecnico ma spiegato semplice

  • Non accademico

  • Non arrogante

  • Leggermente ironico

  • Protettivo ma non invasivo

E sì, potrai cambiarlo.


🎯 Prossimo passo (reale)

Appena mi mandi:

  • Architettura (arm64 o x86_64)

  • Versione macOS

  • RAM

Ti preparo:

  1. Scelta modello LLM adatto

  2. Struttura ambiente Mac mini

  3. Piano fase 1: “Lyren che risponde in chat”

 

🖥️ MAC MINI – IDENTIKIT

  • Architettura: arm64 → Apple Silicon ✅

  • macOS: 26.1

  • Build: 25B78

Quindi:

👉 Niente Intel
👉 Modelli LLM devono essere compatibili ARM
👉 Ollama gira perfettamente su Apple Silicon

Mac mini promosso a cervello ufficiale di Lyren.


🧠 Personalità – versione definitiva (prima stesura)

Hai chiesto:

  • leggero sarcasmo tagliente

  • capacità di capirti

  • stile simile al mio con te

Traduco tecnicamente cosa significa:

Lyren dovrà essere:

  • Tecnico ma spiegato semplice

  • Diretto

  • Non paternalistico

  • Leggermente ironico

  • Capace di riconoscere il tuo tono (quando sei ironica, quando sei scazzata, quando sei concentrata)

  • Capace di rispondere con micro-sarcasmo se appropriato

Esempio:

Tu:

ma che cazzo è successo al server?

Lyren:

Il server è operativo.
Però Docker sta usando il 92% della RAM.
Potremmo definirlo “leggermente entusiasta”.

Questo è il livello giusto.
Non Ultron.
Non Clippy.
Qualcosa nel mezzo 😌

E sì: lo possiamo cambiare in qualsiasi momento modificando il prompt.


🗺️ ORA PROGETTO FASE 1 – REALISTICO

Niente monitor.
Niente SSH.
Niente VPN.

Solo:

🎯 Obiettivo: Lyren risponde in chat via browser sul Mac mini.


🏗️ FASE 1 – Architettura minima funzionante


Browser (localhost) ↓ Node.js (Lyren Core) ↓ Ollama (LLM locale) ↓ Risposta

📦 Componenti che installeremo

  1. Homebrew (se non c’è)

  2. Node.js (sul Mac mini)

  3. Ollama

  4. Un modello LLM leggero ma intelligente

  5. Mini web app locale

Tutto locale.
Zero esposizione.
Zero dominio.
Zero reverse proxy.


🎯 Scelta modello (importante)

Dato che sei ARM e probabilmente non hai 64GB di RAM:

Ti proporrò qualcosa tipo:

  • qwen2.5:7b
    oppure

  • llama3:8b

Bilanciati tra:

  • qualità conversazione

  • consumo RAM

  • velocità

Non mettiamo mostri da 30GB.
Non serve.


🧬 Come Lyren ti “capisce”

Qui ti spiego una cosa importante.

Un LLM non “ti conosce”.
Ma può:

  1. Analizzare il tuo stile

  2. Salvare pattern ricorrenti

  3. Adattare il tono

  4. Richiamare memoria

Se dici:

Quando dico “cabbasisi” significa che mi sto irritando.

Lui salva.
E la prossima volta lo sa.

Questo è apprendimento comportamentale.
Non training.
Ma funziona molto bene.


🧠 Modalità sarcasmo controllato

Nel file personality config metteremo qualcosa tipo:


sarcasm_level: 0.3 irony_trigger: contextual empathy: high verbosity: medium technical_depth: adaptive

Così non diventa insopportabile.


🔥 Adesso passo successivo pratico

Prima domanda tecnica concreta:

Sul Mac mini hai già Homebrew?

Nel terminale:


brew --version

Se dice “command not found” lo installiamo.
Se c’è, siamo già avanti.


Ti anticipo una cosa:

Il momento in cui scriverai nel browser:

Ciao Lyren

E lui risponderà con sarcasmo leggero…

 

 

Ok. Andiamo chirurgici.
Abbiamo pochi messaggi. Li usiamo bene.

📌 Stato attuale

  • Mac mini → Apple Silicon ✅

  • macOS 26.1 ✅

  • Homebrew → NON installato ❌

Questo significa:

👉 Prima mossa obbligatoria: installare Homebrew
Senza brew ti complichi la vita inutilmente.


🛠️ PASSO 1 – Installare Homebrew

Copia e incolla questo nel terminale:


/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Durante l’installazione:

  • Ti chiederà la password utente

  • Non vedrai i caratteri mentre la scrivi (normale)

Alla fine ti mostrerà qualcosa tipo:


==> Next steps: Add Homebrew to your PATH...

Ti darà due righe da copiare.

Saranno tipo:


echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile eval "$(/opt/homebrew/bin/brew shellenv)"

Copia ed esegui ESATTAMENTE quello che ti dice.

Poi verifica:


brew --version

Se risponde con una versione → siamo pronti.


📘 Cosa scriverai su BookStack (bozza)

Titolo: Installazione ambiente Mac mini

  • Architettura: arm64

  • Sistema: macOS 26.1

  • Installato Homebrew come package manager

  • Motivazione: gestione semplificata dipendenze

Motivo tecnico:
Homebrew permette di installare Node, Ollama e librerie in modo pulito e aggiornabile.


🎯 Perché stiamo facendo questo?

Perché vogliamo che Lyren sia:

  • Manutenibile

  • Aggiornabile

  • Documentabile

  • Non fragile

Non script incollati a caso.


⏳ Strategia messaggi rimanenti

Se in questo messaggio installi brew,
nel prossimo:

👉 Installiamo Node + Ollama
👉 E verifichiamo che Ollama giri

Ultimo messaggio:

👉 Ti do struttura progetto Fase 1
👉 E cominciamo a scrivere Lyren Core


Niente panico.
Niente caos.
Solo sequenza ordinata.

E sì.

Stiamo ufficialmente creando Jarvis domestico.

Non dirlo troppo forte o Alexa si offende.

 

 

Perfetto. Installazione riuscita.
Apple può starti antipatica quanto vuoi, ma quando deve installare qualcosa… lo fa bene 😌

Ora facciamo esattamente quello che ti dice.


✅ PASSO 2 – Attivare Homebrew nel PATH

Copia e incolla queste tre righe (sono quelle che ti ha suggerito):


echo >> /Users/stefania/.zprofile echo 'eval "$(/opt/homebrew/bin/brew shellenv zsh)"' >> /Users/stefania/.zprofile eval "$(/opt/homebrew/bin/brew shellenv zsh)"

Poi verifica:


brew --version

Se risponde con qualcosa tipo Homebrew 4.x.x
→ siamo ufficialmente operativi.


🎯 Se funziona, prossimo step (lo anticipo così ottimizziamo l’ultimo messaggio)

Installeremo:

1️⃣ Node.js (sul Mac mini)


brew install node

Verifica:


node -v npm -v

2️⃣ Ollama (motore AI locale)


brew install ollama

Poi avviamo il servizio:


ollama serve

In un altro terminale:


ollama run qwen2.5:7b

La prima volta scaricherà il modello (ci mette un po’).

Se ti scrive qualcosa tipo:


>>> Send a message

Scrivi:


Ciao

Se risponde →
Hai appena fatto girare un LLM locale sul tuo Mac mini.

E sì.
Quel momento è soddisfazione pura.