Exemplos / Rede mesh

Credentialless GPU Sharing

Seu amigo tem GPU. Você precisa de um modelo. Ele gera um invite. Você escaneia um QR. Sem compartilhar API keys. Sem configurar servidores.

mesh (não precisa de config para guest)

O problema

Você quer usar um LLM, mas não tem GPU. Seu colega tem uma máquina potente com llama.cpp em execução. Como usar o modelo dele?

  • Compartilhar API keys → perigoso, difícil de revogar, sem rastro de auditoria
  • Subir um servidor Ollama / vLLM → Docker, regras de firewall, configuração de endpoint, latência
  • Usar um proxy → mais um serviço para executar, mais um ponto de falha

Todas as opções existentes expõem credenciais ou exigem trabalho de infraestrutura. Tem que haver uma forma melhor.

O jeito QueryMT

A rede mesh do QueryMT permite que os nós compartilhem provedores LLM sem compartilhar API keys. O host executa seus provedores normalmente. O guest entra com um invite token assinado. Pela rede trafegam mensagens de chat; credenciais, nunca.

HOST (servidor GPU)

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

Gera código QR + URL de invite.
A API key fica aqui.
GUEST (laptop)

qmtcode --mesh-join=TOKEN

Escaneie o QR ou cole a URL.
O agente descobre provedores automaticamente via DHT.
Não precisa de API key.

Modelo de segurança

Esta é a inovação central. Isto é exatamente o que acontece no nível do protocolo:

Máquina host

ProviderHostActor
Executa o LLM localmente. Guarda a API key.

API Key: bloqueada aqui
Invite: grant assinado com ed25519
Uso: registrado por invite
ChatMessage →← Response
Máquina guest

MeshChatProvider
Proxifica requisições de chat para o host.

API Key: nenhuma
Token: verificado offline (sem rede)
Descoberta: DHT auto-find
Só mensagens de chat atravessam a rede

O agente do guest envia um ChatMessage ao host. O host executa com seu provedor local (API key incluída). A resposta volta. Em nenhum momento o guest vê, toca ou precisa da API key. O token é verificado offline com assinaturas ed25519, sem chamada a um servidor central.

Ciclo de vida do invite

1. Gerar invite
O host executa: qmtcode --mesh --mesh-invite="Team GPU" --invite-uses=5 --invite-ttl=7d
Isso cria um grant assinado com ed25519 com 5 usos permitidos e expiração em 7 dias.
2. Compartilhar invite
O terminal do host imprime:
• Um código QR (escanear com o telefone)
• Uma URL: qmt://mesh/join/BASE64TOKEN
• Compartilhe qualquer um dos dois com o guest
3. O guest entra
O guest executa: qmtcode --mesh-join=qmt://mesh/join/BASE64TOKEN
O token é verificado offline com a chave pública do host. Sem chamada de rede a um servidor central.
4. Descoberta transparente
O agente do guest descobre o provedor llama_cpp via Kademlia DHT. O routing acontece de forma transparente: a config do guest não precisa indicar o endereço do host. Simplesmente funciona.
5. Acompanhamento de uso
O host vê estatísticas de uso no dashboard: quantas vezes cada invite foi usado, por quem e quando.
6. Revogação
Para revogar: apague o invite_id do InviteStore do host. Efeito imediato. Não é preciso rotacionar API keys.

Como funciona a descoberta

QueryMT usa libp2p para a camada mesh com dois modos de descoberta:

  • mDNS (LAN): Descobre peers automaticamente na mesma rede. Zero config. Funciona em escritórios, casas e cafés.
  • Kademlia DHT (internet): Descobre peers entre redes. Os invite tokens incluem o peer ID do host. A DHT resolve isso para um endereço.

O guest não precisa conhecer o IP nem a porta do host. Só precisa do invite token. O mesh cuida do routing.

Config do guest

O guest não precisa de uma config especial. Só precisa de auto_fallback = true na sua configuração mesh. Quando o agente do guest precisa de um provedor que não está localmente, consulta o 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.

Recursos-chave

  • ProviderHostActor / MeshChatProvider — o host executa LLMs, o guest proxifica de forma transparente
  • Grants de invite assinados — assinaturas ed25519, verificação offline
  • Codificação QR — compartilha invites presencialmente com uma leitura
  • Autodescoberta DHT — sem configuração manual de endpoint
  • Limites de uso + TTL — cada invite tem máximo de usos e expiração
  • Revogação por invite — apague um invite sem afetar os demais
  • Isolamento de credenciais — as API keys nunca saem da máquina host

Teste você mesmo

# 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