Ejemplos / Red mesh

Credentialless GPU Sharing

Tu amigo tiene GPU. Tú necesitas un modelo. Él genera un invite. Tú escaneas un QR. Sin compartir API keys. Sin configurar servidores.

mesh (no se necesita config para guest)

El problema

Quieres usar un LLM pero no tienes GPU. Tu compañero tiene una máquina potente con llama.cpp en ejecución. ¿Cómo usas su modelo?

  • Compartir API keys → peligroso, difícil de revocar, sin rastro de auditoría
  • Montar un servidor Ollama / vLLM → Docker, reglas de firewall, configuración de endpoint, latencia
  • Usar un proxy → otro servicio que ejecutar, otro punto de fallo

Todas las opciones existentes exponen credenciales o requieren trabajo de infraestructura. Tiene que haber una forma mejor.

La forma QueryMT

La red mesh de QueryMT permite que los nodos compartan proveedores LLM sin compartir API keys. El host ejecuta sus proveedores normalmente. El guest se une con un invite token firmado. Por la red viajan mensajes de chat; las credenciales nunca.

HOST (servidor GPU)

qmtcode --mesh \
--mesh-invite="Team GPU" \
--invite-uses=5

Genera código QR + URL de invite.
La API key se queda aquí.
GUEST (laptop)

qmtcode --mesh-join=TOKEN

Escanea el QR o pega la URL.
El agente descubre proveedores automáticamente vía DHT.
No necesita API key.

Modelo de seguridad

Esta es la innovación clave. Esto es exactamente lo que ocurre a nivel de protocolo:

Máquina host

ProviderHostActor
Ejecuta el LLM localmente. Guarda la API key.

API Key: bloqueada aquí
Invite: grant firmado con ed25519
Uso: registrado por invite
ChatMessage →← Response
Máquina guest

MeshChatProvider
Proxifica peticiones de chat al host.

API Key: ninguna
Token: verificado offline (sin red)
Descubrimiento: DHT auto-find
Solo mensajes de chat atraviesan la red

El agente del guest envía un ChatMessage al host. El host lo ejecuta con su proveedor local (API key incluida). La respuesta vuelve. En ningún momento el guest ve, toca o necesita la API key. El token se verifica offline con firmas ed25519, sin llamada a un servidor central.

Ciclo de vida del invite

1. Generar invite
El host ejecuta: qmtcode --mesh --mesh-invite="Team GPU" --invite-uses=5 --invite-ttl=7d
Esto crea un grant firmado con ed25519 con 5 usos permitidos y expiración en 7 días.
2. Compartir invite
La terminal del host imprime:
• Un código QR (escanear con el teléfono)
• Una URL: qmt://mesh/join/BASE64TOKEN
• Comparte cualquiera de los dos con el guest
3. El guest se une
El guest ejecuta: qmtcode --mesh-join=qmt://mesh/join/BASE64TOKEN
El token se verifica offline con la clave pública del host. Sin llamada de red a un servidor central.
4. Descubrimiento transparente
El agente del guest descubre el proveedor llama_cpp vía Kademlia DHT. El routing ocurre de forma transparente: la config del guest no necesita indicar la dirección del host. Simplemente funciona.
5. Seguimiento de uso
El host ve estadísticas de uso en el dashboard: cuántas veces se usó cada invite, por quién y cuándo.
6. Revocación
Para revocar: borra el invite_id del InviteStore del host. Efecto inmediato. No hace falta rotar API keys.

Cómo funciona el descubrimiento

QueryMT usa libp2p para la capa mesh con dos modos de descubrimiento:

  • mDNS (LAN): Descubre peers automáticamente en la misma red. Cero config. Funciona en oficinas, casas y cafeterías.
  • Kademlia DHT (internet): Descubre peers entre redes. Los invite tokens incluyen el peer ID del host. La DHT lo resuelve a una dirección.

El guest no necesita conocer la IP ni el puerto del host. Solo necesita el invite token. El mesh se encarga del routing.

Config del guest

El guest no necesita una config especial. Solo necesita auto_fallback = true en su configuración mesh. Cuando el agente del guest necesita un proveedor que no está localmente, consulta el mesh.

# Guest: just join and use
qmtcode --mesh-join=qmt://mesh/join/BASE64TOKEN

# That's it. The agent discovers remote providers automatically.
# No config file needed for the guest.

Funciones clave

  • ProviderHostActor / MeshChatProvider — el host ejecuta LLMs, el guest proxifica de forma transparente
  • Grants de invite firmados — firmas ed25519, verificación offline
  • Codificación QR — comparte invites en persona con un escaneo
  • Autodescubrimiento DHT — sin configuración manual de endpoint
  • Límites de uso + TTL — cada invite tiene máximo de usos y expiración
  • Revocación por invite — borra un invite sin afectar a los demás
  • Aislamiento de credenciales — las API keys nunca salen de la máquina host

Pruébalo tú mismo

# Terminal 1: Host (machine with GPU)
cargo run --example qmtcode --features dashboard -- \
  --mesh --mesh-invite="Demo" --invite-uses=5 --dashboard

# Terminal 2: Guest (any machine on same network)
cargo run --example qmtcode --features dashboard -- \
  --mesh-join=qmt://mesh/join/<TOKEN_FROM_HOST> --dashboard

# Guest's dashboard will show the host's llama_cpp provider
# Ask the guest's agent anything — it routes to the host's model