{"id":2,"date":"2026-10-09T18:04:05","date_gmt":"2026-10-09T18:04:05","guid":{"rendered":"https:\/\/ivand.eu\/?page_id=2"},"modified":"2026-10-10T18:45:32","modified_gmt":"2026-10-10T18:45:32","slug":"sample-page","status":"publish","type":"page","link":"https:\/\/ivand.eu\/index.php\/sample-page\/","title":{"rendered":"LocalBot"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"707\" src=\"https:\/\/ivand.eu\/wp-content\/uploads\/2026\/10\/image-2-1024x707.png\" alt=\"\" class=\"wp-image-30\" srcset=\"https:\/\/ivand.eu\/wp-content\/uploads\/2026\/10\/image-2-1024x707.png 1024w, https:\/\/ivand.eu\/wp-content\/uploads\/2026\/10\/image-2-300x207.png 300w, https:\/\/ivand.eu\/wp-content\/uploads\/2026\/10\/image-2-768x530.png 768w, https:\/\/ivand.eu\/wp-content\/uploads\/2026\/10\/image-2.png 1502w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Private, offline AI assistant for your desktop.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">LocalBot is a lightweight, cross-platform desktop application that runs open-source GGUF language models <strong>entirely on your machine<\/strong>. No cloud APIs, no data leaving your computer, no subscriptions.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Built with Python, <code>llama-cpp-python<\/code>, and CustomTkinter, it delivers a modern chat experience with streaming responses, automatic hardware optimization, web search, and document understanding \u2014 all while keeping your conversations and files private.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Status<\/strong>: Active Beta<br>Expect rapid iteration, new features, and occasional breaking changes. Feedback and contributions are highly welcome.<\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">Why LocalBot?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/Ivan-Dambulov\/LocalBot#why-localbot\"><\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Most AI tools send your data to remote servers. LocalBot does the opposite:<\/p>\n\n\n<ul class=\"wp-block-list is-layout-flex wp-container-core-list-is-layout-c4cf3051 wp-block-list-is-layout-flex\" style=\"\">\n<li>\n<strong>Zero data leakage<\/strong> &mdash; Inference, history, and attachments stay on disk.<\/li>\n\n\n\n<li>\n<strong>No API keys or usage limits<\/strong> &mdash; Once a model is downloaded, it runs forever offline.<\/li>\n\n\n\n<li>\n<strong>Hardware-aware<\/strong> &mdash; Automatically detects NVIDIA CUDA, AMD ROCm, Apple Silicon (Metal), or falls back to optimized CPU mode.<\/li>\n\n\n\n<li>\n<strong>Practical features<\/strong> &mdash; Toggleable web search (DuckDuckGo, no key), document attachment &amp; extraction (PDF, DOCX, XLSX), persistent conversations, model manager.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Ideal for developers, privacy-conscious users, researchers, and anyone who wants a capable local AI without the complexity of full LLM frameworks.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Key Features<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/Ivan-Dambulov\/LocalBot#key-features\"><\/a><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Feature<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td><strong>Fully local inference<\/strong><\/td><td>Powered by <code>llama-cpp-python<\/code> + GGUF models<\/td><\/tr><tr><td><strong>Streaming chat<\/strong><\/td><td>Token-by-token generation for responsive UX<\/td><\/tr><tr><td><strong>Model Manager<\/strong><\/td><td>Browse &amp; download models directly from Hugging Face<\/td><\/tr><tr><td><strong>Smart hardware detection<\/strong><\/td><td>Detects GPU vendor, VRAM, RAM, CPU cores and recommends optimal <code>n_gpu_layers<\/code> + context size<\/td><\/tr><tr><td><strong>Broad hardware support<\/strong><\/td><td>NVIDIA (CUDA), AMD (ROCm), Apple Silicon (Metal), pure CPU<\/td><\/tr><tr><td><strong>Web Search<\/strong><\/td><td>Optional DuckDuckGo search (toggle via globe icon) \u2014 no API key required<\/td><\/tr><tr><td><strong>Document understanding<\/strong><\/td><td>Attach PDF, DOCX, XLSX, TXT files; content is extracted and injected into context<\/td><\/tr><tr><td><strong>Persistent conversations<\/strong><\/td><td>SQLite-backed history with titles, load\/delete support<\/td><\/tr><tr><td><strong>Modern UI<\/strong><\/td><td>Clean CustomTkinter interface with Dark \/ Light mode<\/td><\/tr><tr><td><strong>Cross-platform<\/strong><\/td><td>Windows, macOS (Apple Silicon), Linux<\/td><\/tr><tr><td><strong>Standalone releases<\/strong><\/td><td>Pre-built <code>.exe<\/code> \/ <code>.app<\/code> for Windows 11 and macOS (no Python required)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Design principles<\/strong><\/p>\n\n\n<ul class=\"wp-block-list is-layout-flex wp-container-core-list-is-layout-c4cf3051 wp-block-list-is-layout-flex\" style=\"\">\n<li>Clear separation of concerns (UI \/ Engine \/ Runtime \/ Storage)<\/li>\n\n\n\n<li>Graceful degradation (runs without GPU or even without a model loaded)<\/li>\n\n\n\n<li>Automatic migration of settings and conversation DB across versions<\/li>\n\n\n\n<li>Conservative context window management to stay within model limits<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Tech Stack<a href=\"https:\/\/github.com\/Ivan-Dambulov\/LocalBot#tech-stack\"><\/a><\/h2>\n\n\n<ul class=\"wp-block-list is-layout-flex wp-container-core-list-is-layout-c4cf3051 wp-block-list-is-layout-flex\" style=\"\">\n<li>\n<strong>Language<\/strong>: Python 3.10+<\/li>\n\n\n\n<li>\n<strong>Inference<\/strong>: <code>llama-cpp-python<\/code> &ge; 0.3.0 (GGUF)<\/li>\n\n\n\n<li>\n<strong>UI<\/strong>: CustomTkinter<\/li>\n\n\n\n<li>\n<strong>Hardware detection<\/strong>: <code>psutil<\/code>, <code>nvidia-ml-py<\/code>, platform-specific tools (<code>nvidia-smi<\/code>, <code>rocm-smi<\/code>, <code>sysctl<\/code>)<\/li>\n\n\n\n<li>\n<strong>Model download<\/strong>: <code>huggingface_hub<\/code>\n<\/li>\n\n\n\n<li>\n<strong>Web search<\/strong>: <code>ddgs<\/code> (DuckDuckGo)<\/li>\n\n\n\n<li>\n<strong>Document parsing<\/strong>: <code>pypdf<\/code>, <code>python-docx<\/code>, <code>openpyxl<\/code>, <code>pandas<\/code>\n<\/li>\n\n\n\n<li>\n<strong>Storage<\/strong>: SQLite<\/li>\n\n\n\n<li>\n<strong>Packaging<\/strong>: PyInstaller (standalone Windows \/ macOS builds)<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">On first launch:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Open Model Manager Download a GGUF model (or point to an existing one) Click Apply Start chatting<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Standalone Releases Pre-built binaries are available on the Releases page: <a href=\"https:\/\/github.com\/Ivan-Dambulov\/LocalBot\/releases\/tag\/LocalBot-0.2\">https:\/\/github.com\/Ivan-Dambulov\/LocalBot\/releases\/tag\/LocalBot-0.2<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Configuration &amp; Data Locations Preferences and conversations are stored in the platform-standard app data directory:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">OSPathmacOS~\/Library\/Application Support\/LocalBot\/Windows%APPDATA%\\LocalBot\\Linux~\/.localbot\/ Contains:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">settings.json \u2014 model path, GPU layers, context size, theme, etc. conversations.db \u2014 chat history models\/ \u2014 downloaded GGUF files (configurable)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Environment variables for advanced users:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">MY_ASSISTANT_MODEL \u2014 force model path MY_ASSISTANT_GPU_LAYERS \u2014 override GPU layers MY_ASSISTANT_CONTEXT \u2014 override context size<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Roadmap (ideas)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">RAG over local folders Voice input \/ output Multi-model comparison side-by-side Plugin system for tools Linux AppImage \/ Flatpak System tray + global hotkey Export conversations (Markdown \/ JSON)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Contributing Contributions of all kinds are welcome \u2014 bug reports, feature requests, pull requests, documentation improvements, or just feedback.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"open","template":"","meta":{"footnotes":""},"class_list":["post-2","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/ivand.eu\/index.php\/wp-json\/wp\/v2\/pages\/2","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ivand.eu\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ivand.eu\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ivand.eu\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ivand.eu\/index.php\/wp-json\/wp\/v2\/comments?post=2"}],"version-history":[{"count":2,"href":"https:\/\/ivand.eu\/index.php\/wp-json\/wp\/v2\/pages\/2\/revisions"}],"predecessor-version":[{"id":75,"href":"https:\/\/ivand.eu\/index.php\/wp-json\/wp\/v2\/pages\/2\/revisions\/75"}],"wp:attachment":[{"href":"https:\/\/ivand.eu\/index.php\/wp-json\/wp\/v2\/media?parent=2"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}