The world does revolve around you.

Come è costruito Ostler.

Per sviluppatori e curiosi del lato tecnico. Tutto gira su un Mac Mini. Nulla esce dalla tua rete.

Architettura a tre archivi

Ostler usa tre database specializzati, ciascuno ottimizzato per un tipo di query diverso:

ArchivioTecnologiaScopo
Archivio vettoriale Qdrant Ricerca semantica. “Trova persone simili a questa descrizione.” Memorizza i tuoi embedding (nomic-embed-text), scalando fino a centinaia di migliaia di vettori.
Grafo della conoscenza Oxigraph Relazioni strutturate. Query SPARQL sulle triple del tuo grafo della conoscenza. “Chi conosce chi? Cosa è successo e quando?”
Cache + bus di messaggi Valkey Ricerche rapide, instradamento dei messaggi in tempo reale tra i servizi, stato della sessione. (Fork di Redis 7.2 della Linux Foundation.)

Tutti e tre girano come servizi launchd. Su un Mac Mini M4, i database usano meno di 2GB di RAM, lasciando il resto a Ollama e ai modelli di IA (che richiedono 6–12GB a seconda della dimensione del modello).

Further reading · Why all of this lives on one machine, not a hybrid cloud →

Inferenza LLM locale

Tutta l'inferenza di IA gira localmente tramite Ollama. Nessuna chiamata ad API cloud. Nessuna fatturazione a consumo. Nessuna esfiltrazione di dati.

ModelloUsoPrestazioni
Qwen3 9B Assistente IA, elaborazione delle conversazioni, estrazione di fatti ~30 tok/s su M4
nomic-embed-text Embedding vettoriali per la ricerca semantica ~200 embedding/s

Il sistema è adattivo all'hardware. I profili delle impostazioni configurano la selezione dei modelli e le dimensioni dei batch in base all'hardware disponibile. Un Mac Mini M1 esegue modelli più piccoli; un Mac Studio M2 Ultra ne esegue di più grandi.

Onboarding istantaneo (dati macOS)

Nel momento in cui lo installi, Ostler legge i dati direttamente dalle app integrate del tuo Mac’s. Nessuna esportazione necessaria. Nessuna attesa.

SorgenteCosa leggiamoAutorizzazione
SafariCronologia di navigazione, segnalibri, elenco lettureFull Disk Access
iMessageConversazioni, partecipanti, marche temporaliFull Disk Access
Apple NotesTitoli delle note, contenuto testuale, cartelleFull Disk Access
CalendarEventi, partecipanti, luoghiFull Disk Access
PhotosEtichette dei volti, posizioni GPS, date (non il contenuto dell'immagine)Full Disk Access
RemindersAttività, date di scadenza, elenchiFull Disk Access
Apple MailOggetti, mittenti, date (non il corpo dell'e-mail)Full Disk Access

Tutti i database vengono aperti in sola lettura per prevenire la corruzione. Ogni estrattore gestisce le differenze di schema tra le versioni di macOS (Ventura, Sonoma, Sequoia). Full Disk Access è facoltativo – puoi saltarlo e usare comunque le importazioni GDPR.

Pipeline di importazione GDPR

Per dati storici più approfonditi, 20 parser leggono dalle esportazioni di dati GDPR:

PiattaformaDati importatiFormato
LinkedInContatti, carriera, referenze, messaggi (metadati)CSV
FacebookAmici, eventi, diarioJSON
InstagramFollower, seguiti, amici strettiJSON
WhatsAppRiferimenti incrociati telefoniciJSON
Twitter / XContatti sincronizzati (riferimento incrociato telefonico)JS
Google CalendarEventi, partecipanti, luoghiICS
iCloudContatti (tramite CardDAV)vCard
EmailEstrazione delle firme, analisi delle intestazioniMBOX
BrowserURL della cronologia, titoli delle pagineSafari / Chrome

Risoluzione dell'identità

La stessa persona appare in modo diverso sulle varie piattaforme. “John Smith” su LinkedIn, “johnnyboy” su Instagram, “+44 7XXX XXXXXX” su WhatsApp. Il risolutore di identità le abbina usando:

  • Corrispondenza esatta: URL LinkedIn, indirizzo e-mail, numero di telefono (ultime 8 cifre).
  • Corrispondenza fuzzy: distanza tra stringhe Jaro-Winkler sui nomi, corroborata da un'organizzazione, un dominio e-mail o una sovrapposizione di piattaforme comuni.
  • Coda di revisione manuale: le corrispondenze incerte finiscono in una coda di revisione. L'utente approva o rifiuta. Nessuna fusione automatica senza certezza.

Il risolutore dispone di 38 test automatizzati che coprono le strategie di corrispondenza esatta, fuzzy, per telefono, per e-mail e per sottoinsieme di nomi.

Elaborazione delle conversazioni

Quando una conversazione viene registrata (tramite l'app Ostler RemoteCapture sul tuo Mac o con importazione manuale), passa attraverso una pipeline a più fasi:

  • Classificazione – contesto (lavoro/sociale/famiglia), forma (riunione/1:1/gruppo), posta in gioco (alta/media/bassa).
  • Estrazione di fatti – 12,6 fatti per conversazione in media, con controlli di qualità.
  • Segnali relazionali – calore, reciprocità, energia, dinamiche di potere.
  • Osservazioni di coaching – schemi longitudinali nel modo in cui l'utente comunica.
  • Collegamento tra conversazioni – somiglianza semantica tra i riepiloghi delle conversazioni.

Ogni fase è idempotente (rieseguibile senza duplicati), ha un backoff esponenziale in caso di errore e registra la versione del prompt che l'ha generata.

Riepilogo dello stack

Livello di acquisizione
  Database macOS (istantaneo) · Importazioni GDPR · App macOS · App iOS · Estensione del browser

Livello di elaborazione
  Pipeline delle conversazioni · Risolutore di identità · Estrazione di fatti · Segnali relazionali

Livello di intelligenza
  Ollama (Qwen3 9B) · nomic-embed-text · Query SPARQL · Ricerca vettoriale

Livello di archiviazione
  Qdrant (vettori)  ·  Oxigraph (grafo RDF)  ·  Valkey (cache + bus)  ·  SQLite (coaching)

Livello di interfaccia
  Assistente (iMessage · E-mail) · Wiki personale · App iOS

Dipendenze totali: Python 3.11+, Ollama. Nessun account cloud richiesto. Nessuna chiave API. Nessun abbonamento.

Costruito per funzionare a casa.

Locale  ·  Verificabile  ·  Tuo