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 Semantic search. “Find people similar to this description.” Stores your embeddings (nomic-embed-text), scaling to hundreds of thousands of vectors.
Grafo della conoscenza Oxigraph Structured relationships. SPARQL queries over your knowledge-graph triples. “Who knows whom? What happened when?”
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).

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
Qwen 3.5 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
  macOS databases (instant)  ·  GDPR imports  ·  macOS app  ·  iOS app  ·  Browser extension

Livello di elaborazione
  Conversation pipeline  ·  Identity resolver  ·  Fact extraction  ·  Relationship signals

Livello di intelligenza
  Ollama (Qwen 3.5 9B)  ·  nomic-embed-text  ·  SPARQL queries  ·  Vector search

Livello di archiviazione
  Qdrant (vectors)  ·  Oxigraph (RDF graph)  ·  Valkey (cache + bus)  ·  SQLite (coaching)

Livello di interfaccia
  Assistant (iMessage · Email)  ·  Personal Wiki  ·  iOS app

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

Costruito per funzionare a casa.

Locale  ·  Verificabile  ·  Tuo