Шеринг GPU без облікових даних
У друга є GPU. Вам потрібна модель. Він генерує invite. Ви скануєте QR-код. Без передачі API-ключів. Без налаштування сервера.
Проблема
Ви хочете користуватися LLM, але не маєте GPU. У вашого колеги є потужна машина з llama.cpp. Як скористатися його моделлю?
- Поділитися API-ключами → небезпечно, складно відкликати, без аудиту
- Підняти Ollama / vLLM server → Docker, firewall rules, конфігурація endpoint, затримки
- Використати proxy → ще один сервіс у підтримці, ще одна точка відмови
Кожен наявний варіант або відкриває облікові дані, або вимагає інфраструктурної роботи. Має бути кращий спосіб.
Підхід QueryMT
Mesh-мережа QueryMT дозволяє вузлам ділитися LLM-провайдерами без передачі API-ключів. Host запускає свої провайдери як завжди. Guest підключається через підписаний invite-токен. Chat-повідомлення проходять мережею, а облікові дані — ні.
qmtcode --mesh \ --mesh-invite="Team GPU" \ --invite-uses=5Генерує QR-код і invite URL.
API-ключ лишається тут.
qmtcode --mesh-join=TOKENСкануйте QR або вставте URL.
Агент автоматично знаходить провайдери через DHT.
API-ключ не потрібен.
Модель безпеки
У цьому й полягає головна інновація. Ось що саме відбувається на рівні протоколу:
ProviderHostActorЛокально запускає LLM. Зберігає API-ключ.
API Key: заблокований тут
Invite: ed25519-підписаний grant
Usage: відстежується для кожного invite
MeshChatProviderПроксіює chat-запити на host.
API Key: немає
Token: перевіряється offline (без мережі)
Discovery: DHT auto-find
Агент guest-вузла надсилає host-вузлу ChatMessage. Host запускає його через свій локальний провайдер із API-ключем. Потім повертається відповідь. Guest ніколи не бачить, не торкається і не потребує API-ключа. Токен перевіряється offline за допомогою ed25519-підписів — без виклику до центрального сервера.
Життєвий цикл invite
qmtcode --mesh --mesh-invite="Team GPU" --invite-uses=5 --invite-ttl=7dЦе створює ed25519-підписаний grant на 5 використань, який спливає за 7 днів.
• QR-код (можна сканувати телефоном)
• A URL:
qmt://mesh/join/BASE64TOKEN• Можна передати будь-який із них guest-у
qmtcode --mesh-join=qmt://mesh/join/BASE64TOKENТокен перевіряється offline за публічним ключем host-а. Без мережевого виклику до центрального сервера.
llama_cpp через Kademlia DHT. Маршрутизація працює прозоро — у конфігу guest-а не потрібно вказувати адресу host-а. Воно просто працює.Як працює виявлення
Для mesh-рівня QueryMT використовує libp2p із двома режимами виявлення:
- mDNS (LAN): автоматично знаходить peers у тій самій мережі. Нуль конфігу. Працює в офісах, вдома, у кав'ярнях.
- Kademlia DHT (internet): знаходить peers у різних мережах. Invite-токени містять peer ID host-а. DHT резолвить його в адресу.
Guest не потрібно знати IP-адресу або порт host-а. Потрібен лише invite-токен. Mesh сам виконує маршрутизацію.
Конфіг guest-а
Guest не потрібен спеціальний конфіг. Достатньо auto_fallback = true у mesh-налаштуваннях. Коли агент guest-а потребує провайдера, якого немає локально, він звертається до mesh.
# Guest: просто приєднайтесь і користуйтеся qmtcode --mesh-join=qmt://mesh/join/BASE64TOKEN # І все. Агент автоматично знаходить віддалені провайдери. # Для guest-а конфіг-файл не потрібен.
Ключові можливості
- ProviderHostActor / MeshChatProvider — host запускає LLM, guest прозоро проксіює
- Підписані invite-grant-и — ed25519-підписи, offline-перевірка
- Кодування QR-кодом — діліться invite-ами наживо через сканування
- DHT auto-discovery — без ручної конфігурації endpoint
- Usage limits + TTL — кожен invite має max use count і строк дії
- Відкликання окремого invite — можна видалити один invite без впливу на інші
- Ізоляція облікових даних — API-ключі ніколи не залишають host-машину
Спробуйте самі
# Термінал 1: Host (машина з GPU) cargo run --example qmtcode --features dashboard -- \ --mesh --mesh-invite="Demo" --invite-uses=5 --dashboard # Термінал 2: Guest (будь-яка машина в тій самій мережі) cargo run --example qmtcode --features dashboard -- \ --mesh-join=qmt://mesh/join/<TOKEN_FROM_HOST> --dashboard # Dashboard guest-а покаже llama_cpp-провайдер host-а # Поставте guest-агенту будь-яке запитання — воно піде на модель host-а