Windows-GPU-UNLOCK
RTX3090 UEFI 포트, 한국어 무리셋 윈도우 부팅 가이드, 검증된 소스와 벤치마크 제공
한 대 Mac에 KinAI를 설치하고 6자리 코드로 로컬 LLM에 연결, 클라우드·계정 없이 100% 개인 보장
One Mac hosts KinAI and connects to your local LLM. Every other family device joins with a simple 6-character code. No cloud, no accounts, 100% private.
기타Rust · SvelteGitHub @Gogo6969온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
The family-sharing layer for the local LLM you already run. Host on a Mac; the LLM lives wherever you have one (Linux box, Windows PC, Olares, or the same Mac). Mac + Windows clients. No cloud, no accounts.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Share your private local AI with your family
KinAI isn't an AI — it's the family-sharing layer for the local LLM you already run. The LLM can live anywhere — Ollama on a Linux box, vLLM on a workstation, LM Studio on Windows, llama.cpp on a Mac mini, an Olares on your LAN. A Mac hosts KinAI and bridges to it. Mac + Windows clients today; phones reach it via the family's Telegram bot. No cloud, no accounts, each member's chat private to them.README 전문 보기 ↗Share your private local AI with your family
KinAI isn't an AI — it's the family-sharing layer for the local LLM you already run. The LLM can live anywhere — Ollama on a Linux box, vLLM on a workstation, LM Studio on Windows, llama.cpp on a Mac mini, an Olares on your LAN. A Mac hosts KinAI and bridges to it. Mac + Windows clients today; phones reach it via the family's Telegram bot. No cloud, no accounts, each member's chat private to them.
Project home → kin-ai.replit.app
[!NOTE] macOS (host + client), Windows (client), and Linux (client, beta) are available. A Linux host isn't supported yet (the bridge runs on a Mac; your LLM can already live on Linux). Phones / tablets connect through the family's Telegram bot — no native iOS / Android app yet.
You already run a local LLM somewhere — Ollama on a Linux box, LM Studio on Windows, vLLM on a workstation, llama.cpp on a Mac mini, an Olares on your LAN, doesn't matter. KinAI is the family-sharing layer on top of it. Install KinAI on a Mac in Host Mode, point it at your existing LLM endpoint (http://192.168.1.42:11434 or wherever). Install it on every other Mac or Windows device in Client Mode and join with a 6-character invite. Press Cmd+Space (macOS) / Ctrl+Space (Windows) from any app, ask anything, get an answer. Phones reach it through the family's shared Telegram bot — same model, same memory, same threads, no app store needed.
100% local. 100% private. 100% free. MIT licensed forever.
| First launch — Host or Join | Auto-detects Ollama, LM Studio, vLLM, llama.cpp, Open WebUI |
| Host view — family's AI running on this Mac | Drop a photo, KinAI routes to your vision endpoint |
You'll install KinAI once on the host Mac (which runs your local LLM), and once on every other family device — Mac OR Windows. Clients are lightweight: no model downloads, no LLM runtime, just a chat window that talks to the host over your LAN.
Quick links to the section you need:
You'll install KinAI twice on Mac: once on the Mac that has the LLM (the Host), and once on every other Mac in your family (the Clients).
KinAI doesn't bundle a model — it connects to one you already have. If you don't have one yet, Ollama is the easiest on-ramp:
Download Ollama from https://ollama.com (one-click installer).
Open Terminal (Cmd+Space → type "Terminal" → Enter — we'll
fix the Spotlight conflict in a minute).
Run:
ollama pull llama3.1:8b
That's about a 5 GB download. When it's done, run ollama list to
verify the model is installed.
Other backends KinAI auto-detects on first launch: LM Studio, vLLM, llama.cpp server, Open WebUI. Any OpenAI-compatible endpoint works.
KinAI_*_aarch64.dmgKinAI_*_x64.dmg.dmg file. A new window opens with
the KinAI icon and an Applications shortcut.KinAI onto the Applications folder shortcut inside that
window.KinAI, and right-click
→ Open (not double-click — the right-click is important the
first time).For every other Mac in the family that should connect to the host above:
KinAI.app into Applications, right-click → Open (same
Gatekeeper dance as the host's Step 2.5–6 above).For a Windows PC on the same home network as your host Mac:
Open the Releases page in Edge / Chrome / Firefox.
Download KinAI_*_x64_en-US.msi under Assets. (There's also a
*_x64-setup.exe — same app, NSIS-style installer. Either works.)
Double-click the downloaded .msi.
⚠️ Windows will probably block it at first. A blue panel appears: "Microsoft Defender SmartScreen prevented an unrecognised app from starting."
The MSI installer wizard runs (Next → Next → Install). KinAI lands in Start Menu → KinAI.
Launch it. Click 👋 Join an existing host.
Type your name.
Paste the kinai://join?… link the host shared with you
(+ Invite → Copy link), OR type the 6-character code and
pick the host from the auto-discovered list. Click Connect.
Done. Start chatting.
Windows client today is client-only. It cannot run as a host yet — only macOS can host. The chat works both ways once paired (you ask, the Mac mini's local LLM answers), but the host machine stays Mac for now.
For a Linux PC on the same network as your host Mac:
Download KinAI_*_amd64.AppImage from the
Releases page
(or the .deb / .rpm if you prefer a native package).
Make it executable and run it:
chmod +x KinAI_*_amd64.AppImage
./KinAI_*_amd64.AppImage
Click 👋 Join an existing host, enter your name, pick the host from the discovered list (or paste the 6-char code / invite link), and Connect.
Beta — known limitations. Core chat works. KinAI renders emoji in monochrome on Linux to dodge a WebKitGTK/Skia color-font crash. The global-hotkey overlay (
Ctrl+Space) and the tray icon may not work under Wayland (a platform restriction on global key grabs / tray protocol) — the main window is unaffected. Voice replies / voice input are host-only (macOS). Tested on Fedora KDE (Wayland); other distros/desktops may vary.
Press Cmd+Space (macOS) / Ctrl+Space (Windows) anywhere to
summon the KinAI overlay — like Spotlight, but for your family's AI.
Type, press Enter, get an answer.
Hotkey conflict with Spotlight on macOS?
Cmd+Spaceis the default for both. Pick one to remap in System Settings → Keyboard → Keyboard Shortcuts → Spotlight (change Spotlight to e.g.Cmd+Option+Space), or change KinAI's hotkey in KinAI → Settings → Overlay → Global hotkey.
When a new KinAI release goes out, your host pulls it from GitHub automatically (within ~1 hour of the release going live) and serves it to every connected family device. Each client shows a "KinAI vX.Y.Z is available · from your host" banner; click Install & restart and you're on the latest.
The Mac client side is fully auto-updating today.
Windows auto-update inside the app is coming soon — until then,
when you see the in-banner notice on Windows, re-download the latest
.msi from GitHub and reinstall over the top. Your settings + chat
history are preserved across reinstalls (they live in
%USERPROFILE%\.kinai\).
Every reply is built from four layers, in this order:
┌──────────────────────────────────────────┐
│ 1. System prompt │ ← KinAI identity + house rules
├──────────────────────────────────────────┤
│ 2. Long-term memory (FTS5 BM25) │ ← top-N matches from past summaries
├──────────────────────────────────────────┤
│ 3. Summarized history │ ← rolling summary of older turns
├──────────────────────────────────────────┤
│ 4. Recent verbatim turns (last 50) │ ← raw conversation
├──────────────────────────────────────────┤
│ 5. Current user message │ ← always kept intact
└──────────────────────────────────────────┘
↓
Token guard (tiktoken-rs)
↓
Streamed to your local LLM
When a thread exceeds 30 unsummarized messages, the oldest are folded into a long-term memory note and indexed. The token guard reserves space for the response and never drops the current turn. Your conversations survive restarts, model switches, and months of family use.
| Feature | Status |
|---|---|
| Global hotkey overlay (Spotlight-style, translucent) | ✅ |
| Host mode with auto-detection of Ollama, LM Studio, vLLM, llama.cpp, Open WebUI | ✅ |
| Client mode with one-click invite join (6-char code or QR) | ✅ |
| Push-to-talk voice input (macOS Speech Recognition) | ✅ |
| PDF attachments — drag-drop a PDF, model reads the text | ✅ |
| Image attachments + vision routing (CCC-style: chat-model-if-capable → Gemini Flash → Claude Haiku failover) | ✅ |
| Image search tool — find pictures via Wikimedia Commons (free) or Exa | ✅ |
Safe inline image rendering (https: / data:image/* only, sandboxed) | ✅ |
| Built-in tools: web search, X/Twitter search, calculator, date/time, image search | ✅ |
| OpenAI-style function calling with tool execution loop | ✅ |
| Streaming responses (SSE) with markdown + LaTeX + code blocks + tables | ✅ |
| Cross-thread search — find any message across all your conversations as you type | ✅ |
| Ask-while-busy queue — fire a follow-up while a reply is still streaming; it queues and sends in order (per-thread, with a ⏹ Stop that clears the queue) | ✅ |
| ↑ / ↓ prompt history — recall earlier prompts in the message box, terminal-style | ✅ |
| ⏹ Stop — halt a running reply (or a runaway loop) from any surface, including clients over the LAN | ✅ |
| Regenerate & edit-and-resend — re-roll the last answer, or fix your question and re-run from there | ✅ |
| Streaming Telegram replies — the bot live-edits its message as the model writes | ✅ |
Image generation via ComfyUI — /pic & /picHQ on every surface, with a "creating a picture…" progress note on Telegram | ✅ |
| 📺 Video transcripts — share a YouTube link and ask what it says. One click in Settings → Tools sets up the official yt-dlp inside a macOS sandbox that can't see your family's chats (or use ) |
| Backend | Auto-detected port | Notes |
|---|---|---|
| Ollama | 11434 | First-class, model list via /api/tags |
| LM Studio | 1234 | OpenAI-compatible /v1 |
| vLLM | 8000 | OpenAI-compatible |
| llama.cpp server | 8080 | OpenAI-compatible |
| Open WebUI | 8888 | OpenAI-compatible |
| Anything else with OpenAI-compatible REST | any | Set base URL manually |
Your data never leaves your computer. KinAI has no telemetry, no analytics, no user accounts, no remote logging. Conversations live in ~/.kinai/kinai.db on the host machine. Clients hold an invite JWT and nothing else. The repository contains every line of code that runs.
| Version | Focus | Highlights |
|---|---|---|
| v0.1 | MVP | Hotkey overlay, host/client, invite + JWT, tools, mDNS (macOS) |
| v0.2 ⬅ current | Vision, attachments, family-grade updates | PDFs, image attach + vision routing, image search inline, host-distributed signed updates, per-peer context isolation, reconnect supervisor, cross-thread search, regenerate / edit-and-resend, streaming Telegram replies, ComfyUI image generation, voice replies (TTS) |
| v0.3 | Image generation + web-page ingest | ComfyUI / A1111 routing, page-to-context |
| v0.4 | RAG basics | Doc upload + vector search |
| v0.5 | Mobile + voice | iOS / Android via Tauri Mobile, Whisper STT + Piper TTS, voice-thread memory |
Windows and Linux clients are available; a Linux host is not yet supported. | v1.0 | Plugins & polish | Custom-tool marketplace, multi-host switcher, admin dashboard, Olares One deep integration | | v2.0+ | Family knowledge | Advanced RAG over photos / PDFs / recipes, real-time translation |
All releases stay 100% open-source, local-first, and free forever.
┌──────────────────────────────────────────────────────────┐
│ Family devices (Clients) │
│ macOS │
│ ▼ hotkey / chat / attach PDF or photo ▼ │
│ KinAI Overlay → WS Envelope │
└──────────────────────────┬───────────────────────────────┘
│ JWT-authenticated WebSocket
│ + mDNS LAN discovery
▼
┌──────────────────────────────────────────────────────────┐
│ Host machine │
│ ┌────────────────────────────────────────────────────┐ │
│ │ KinAI (Tauri 2 + Rust + Axum) │ │
│ │ • Per-peer context builder (threads + FTS5 memory)│ │
│ │ • PDF text extraction (pdf-extract) │ │
│ │ • Vision router (chat-model → primary → failover) │ │
│ │ • Tool execution loop (web/x/image search + calc) │ │
│ │ • Streaming chat completion (SSE) │ │
│ │ • Host-served signed updates (LAN, Minisign) │ │
│ └────────┬───────────────────────────────┬───────────┘ │
│ ▼ ▼ │
│ ┌────────────────────┐ ┌───────────────────┐ │
│ │ Local LLM │ │ Vision endpoint │ │
│ │ (Ollama / LMS /…) │ │ (Gemini, llava,…) │ │
│ └────────────────────┘ └───────────────────┘ │
└──────────────────────────────────────────────────────────┘
Each family member's chats live in their own bucket on the host's SQLite — keyed by their invite's short code. Mom's "what did I tell you about my recipes?" never sees Dad's prompts; the model never recalls another peer's history.
Stack:
marked + marked-highlight + highlight.js + KaTeX, with a safe-image allow-listtiktoken-rs (cl100k)pdf-extract (pure Rust)kinai/
├── src/ # Rust backend
│ ├── auth/ # JWT (RS256) issuance + validation
│ ├── attachments.rs # PDF text extraction (pdf-extract, pure Rust)
│ ├── context/ # never-lose-context builder + summarizer + token guard
│ ├── db/ # SQLx + migrations + per-peer threads + memory FTS5
│ ├── llm/ # stream + auto-detect (Ollama/LMS/vLLM/llama.cpp)
│ ├── network/ # Axum HTTP+WS server, client dialer, invite, rate-limit, host-served updates
│ ├── tools/ # web/x/image search + calculator/datetime + execution loop
│ ├── vision.rs # image-turn router: chat-model-if-capable, else primary, else failover
│ ├── commands.rs # Tauri IPC surface
│ ├── tray.rs # system tray + live status ticker
│ ├── hotkey.rs # global shortcut
│ ├── discovery.rs # mDNS advertise + browse
│ └── updater.rs # host-first periodic check, GitHub fallback
├── frontend/ # SvelteKit app
│ └── src/
│ ├── routes/ # /, /host, /host/invite, /host/family, /client, /settings, /overlay
│ ├── lib/components/ # Logo, Sidebar, ChatWindow, Overlay, MessageBubble, ToolPill, UpdateBanner
│ ├── lib/markdown.ts # marked + highlight.js + KaTeX + safe inline images
│ └── lib/api.ts # typed wrappers over every command + event
├── public/icons/ # SVG + PNG + ICO + ICNS bundle assets
├── docs/ # host-guide.md, client-guide.md, screenshots/
├── .github/workflows/ # CI build matrix + release.yml
├── Cargo.toml
├── tauri.conf.json
└── README.md
Requirements: Rust stable, Node 20+, pnpm 9.
git clone https://github.com/Gogo6969/kinai
cd kinai
pnpm install # also installs frontend workspace
pnpm tauri dev # dev build (auto-reload)
pnpm tauri build # production binary for this OS
# Bundle output:
# macOS: target/release/bundle/dmg/*.dmg + macos/*.app.tar.gz (updater)
# Signing updater bundles (optional, host-distributed updates need this):
# pnpm tauri signer generate -w ~/.kinai/keys/updater.key --ci
# # then put the contents of the .pub file in tauri.conf.json plugins.updater.pubkey
# # and the private key path in TAURI_SIGNING_PRIVATE_KEY when running build
KinAI's source has one place to edit when forking — the repository URL
lives in Cargo.toml's [package].repository field, and every other spot
that needs it reads it at compile time via env!("CARGO_PKG_REPOSITORY"):
User-Agent strings sent by web_search / x_search./about).Two things you'll also want to update for a real release of your fork:
tauri.conf.json → plugins.updater.endpoints — point this at your
fork's releases JSON, otherwise auto-updates check the wrong repo.tauri.conf.json → identifier — change ai.kin.desktop to your
own reverse-DNS bundle id so macOS treats your app as separate.Nothing else in the source tree has hardcoded URLs, account names, or
machine paths — the user's home directory (~/.kinai/) is auto-resolved,
the LAN scanner discovers its own subnet, and the LLM backend / Exa key /
hotkey / family name are all entered in-app at setup time. Everything is
designed to run unchanged on every household's hardware.
KinAI is community-built. The way you can help today:
src/tools/ and wire into registry.rs.~/.kinai/kinai.log excerpt.PRs that touch the protocol, JWT format, or context pipeline get extra review attention — please open an issue first.
MIT — see LICENSE. Forever free, forever yours.
KinAI — bring your family their own AI, on your own terms.
| ✅ |
🔊 Voice replies — /voice makes KinAI speak: Telegram voice notes per family member, auto-read-aloud replies on the host Mac. Fully local (macOS speech synthesis) | ✅ |
| System tray icon with live status (model, peers connected) | ✅ |
| Customizable hotkey, theme, font size | ✅ |
| End-to-end JWT (RS256) auth on every WebSocket connection | ✅ |
| Per-peer context isolation — family members' chats never bleed into each other | ✅ |
| Local SQLite database (SQLx + WAL + FTS5 memory) | ✅ |
| mDNS local-network host discovery | ✅ |
| Host-distributed auto-updates — host serves the binary, clients pull over LAN, with GitHub fallback for off-LAN | ✅ |
| Rate limiting per client to prevent abuse | ✅ |
| Invite expiry (default 30 days) + revoke | ✅ |
| Family management (see peers, kick) | ✅ |
| Exponential-backoff reconnect supervisor (works through host restarts) | ✅ |