⎇ 649ca02d4de90ce9f64fa7595b8ebf7edc8c13cc
crates/modules/verbo/verbo-daemon/src/lib.rs
Historia
Quién tocó qué
crudo
feat(verbo): verbo-daemon — embeddings compartidos entre procesos
1//! `verbo-daemon` — embeddings compartidos entre procesos.
2//!
3//! El problema: cada proceso que quiera embeddings cargaría su propia
4//! copia del modelo (cientos de MB de RAM, descargas duplicadas). La
5//! solución: un [`Daemon`] carga el modelo una vez y lo sirve sobre un
6//! socket Unix; cada proceso usa un [`DaemonClient`] que, por
7//! implementar `verbo_core::Provider`, es indistinguible de un backend
8//! local.
9//!
10//! ```text
11//! ┌── proceso A ──┐ ┌── proceso B ──┐ ┌── proceso C ──┐
12//! │ DaemonClient │ │ DaemonClient │ │ DaemonClient │
13//! └───────┬───────┘ └───────┬───────┘ └───────┬───────┘
14//! └───────── socket Unix ─────────────────┘
15//! │
16//! ┌─────────┴─────────┐
17//! │ Daemon (Arc<P>) │ ← un modelo en RAM
18//! └───────────────────┘
19//! ```
20//!
21//! **Multi-instancia**: para servir varios modelos a la vez se levanta
22//! un daemon por modelo, cada uno en su socket — el daemon es agnóstico
23//! del backend (sirve cualquier `Provider`: `verbo-mock`, un backend
24//! Cohere, uno BGE local).
25
26#![forbid(unsafe_code)]
27
28mod client;
29mod server;
30mod wire;
31
32pub use client::DaemonClient;
33pub use server::Daemon;
34pub use wire::{Request, Response};