<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Ai on homelab</title>
    <link>https://homelab.nbkelley.com/tags/ai/</link>
    <description>Recent content in Ai on homelab</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Sat, 02 May 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://homelab.nbkelley.com/tags/ai/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Wiki Pipeline Scripts</title>
      <link>https://homelab.nbkelley.com/docs/ai/wiki-pipeline-scripts/</link>
      <pubDate>Sat, 02 May 2026 00:00:00 +0000</pubDate>
      <guid>https://homelab.nbkelley.com/docs/ai/wiki-pipeline-scripts/</guid>
      <description>&lt;h1 id=&#34;wiki-pipeline-scripts&#34;&gt;Wiki Pipeline Scripts&lt;a class=&#34;anchor&#34; href=&#34;#wiki-pipeline-scripts&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;what-was-established&#34;&gt;What Was Established&lt;a class=&#34;anchor&#34; href=&#34;#what-was-established&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Eight Python scripts in &lt;code&gt;/opt/wiki/homelab/scripts/&lt;/code&gt; implement the full wiki pipeline: file conversion, document ingestion, conversation crystallization (standard, DeepSeek, and Claude formats), shared LLM infrastructure, wiki health-checking, and knowledge-graph integration. All scripts were ported from the work wiki pipeline (itself developed 2026-04-21 → 2026-04-26) with homelab-specific infrastructure baked in.&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;crystallize.py&lt;/code&gt; (Claude format) uses a two-step LLM approach: gemma4:e2b cleans, qwen3.6:35b crystallizes. &lt;code&gt;crystallize_deepseek.py&lt;/code&gt; skips gemma — JSON parsing is handled deterministically in Python (&lt;code&gt;load_conversation&lt;/code&gt; + &lt;code&gt;_clean_text&lt;/code&gt;), so only qwen is needed.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Wiki System - Architecture</title>
      <link>https://homelab.nbkelley.com/docs/ai/wiki-system/</link>
      <pubDate>Sat, 02 May 2026 00:00:00 +0000</pubDate>
      <guid>https://homelab.nbkelley.com/docs/ai/wiki-system/</guid>
      <description>&lt;h1 id=&#34;wiki-system---architecture&#34;&gt;Wiki System - Architecture&lt;a class=&#34;anchor&#34; href=&#34;#wiki-system---architecture&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;what-was-established&#34;&gt;What Was Established&lt;a class=&#34;anchor&#34; href=&#34;#what-was-established&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;The wiki system is designed around the LLM wiki pattern (Karpathy): raw sources (chat transcripts, notes, docs) are crystallized into structured markdown pages, embedded into pgvector, and retrieved semantically by agents in future sessions. A dedicated LXC (&lt;code&gt;nk-wiki&lt;/code&gt;) will host the wiki VM, separating wiki infrastructure from other services.&lt;/p&gt;&#xA;&lt;h2 id=&#34;multi-wiki-namespace-design&#34;&gt;Multi-Wiki Namespace Design&lt;a class=&#34;anchor&#34; href=&#34;#multi-wiki-namespace-design&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Three wikis are planned, each with its own namespace in pgvector:&lt;/p&gt;</description>
    </item>
    <item>
      <title>AI Infrastructure Overview</title>
      <link>https://homelab.nbkelley.com/docs/infrastructure/ai_fleet/</link>
      <pubDate>Sun, 26 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://homelab.nbkelley.com/docs/infrastructure/ai_fleet/</guid>
      <description>&lt;h1 id=&#34;ai-infrastructure-overview&#34;&gt;AI Infrastructure Overview&lt;a class=&#34;anchor&#34; href=&#34;#ai-infrastructure-overview&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;what-was-established&#34;&gt;What Was Established&lt;a class=&#34;anchor&#34; href=&#34;#what-was-established&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;The homelab is transitioning into a multi-node agentic architecture, utilizing a mix of existing laptops, desktops, and a future Mac Studio to handle different tiers of LLM workloads (Batch vs. Interactive).&lt;/p&gt;&#xA;&lt;h2 id=&#34;key-decisions&#34;&gt;Key Decisions&lt;a class=&#34;anchor&#34; href=&#34;#key-decisions&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Nodes are specialized by their hardware capabilities (VRAM and CPU/RAM) to optimize for cost and performance:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Inference Node (Batch/Heavy + Embeddings):&lt;/strong&gt; HP Pavilion 15t-e300 — hostname &lt;strong&gt;nk-celebrimbor&lt;/strong&gt;, IP 192.168.2.192. Intel i7, 32GB RAM, NVIDIA MX550 (2GB VRAM, CUDA disabled). Runs &lt;code&gt;gemma4:e4b&lt;/code&gt; for monitoring pipeline synthesis (~15-18 t/s, CPU-only) and &lt;code&gt;nomic-embed-text&lt;/code&gt; for wiki semantic embeddings (768-dim, via Ollama on port 11434).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Orchestrator Node:&lt;/strong&gt; Thinkpad T480. Intel i5/i7 8th Gen, 32GB RAM. Running headless Ubuntu. Hosts n8n and lightweight models (Gemma 4 E4B) for routing and decision-making.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Interactive Node (Potential):&lt;/strong&gt; ROG Zephyrus (GU501). Intel i7, NVIDIA GTX 1080 Max-Q (8GB VRAM). Ideal for 7B/8B models requiring high tokens-per-second for real-time chat.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Primary Reasoning Node (Deployed 2026-04-24):&lt;/strong&gt; Mac Studio M1 Max, 64GB Unified Memory — hostname &lt;strong&gt;Legolas&lt;/strong&gt;, IP 192.168.1.45. Handles all wiki pipeline LLM calls: &lt;code&gt;gemma4:e2b&lt;/code&gt; (text cleaning), &lt;code&gt;qwen3.6:35b-a3b-coding-nvfp4&lt;/code&gt; (JSON crystallization), &lt;code&gt;minicpm-v:8b&lt;/code&gt; (PDF OCR/vision). Fast interactive inference — 31B models at ~25+ t/s vs Pavilion&amp;rsquo;s ~15 t/s CPU-only. See &lt;a href=&#34;https://homelab.nbkelley.com/docs/machines/mac-studio/&#34;&gt;Mac Studio&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Parallelism Nodes:&lt;/strong&gt; Various i5 8th Gen desktops. 32GB RAM, no GPU. Used for distributed pipeline stages or additional lightweight model instances.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;current-configuration&#34;&gt;Current Configuration&lt;a class=&#34;anchor&#34; href=&#34;#current-configuration&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Legolas (Mac Studio)&lt;/strong&gt;: Ollama at 192.168.1.45:11434. Running &lt;code&gt;gemma4:e2b&lt;/code&gt;, &lt;code&gt;qwen3.6:35b-a3b-coding-nvfp4&lt;/code&gt;, &lt;code&gt;minicpm-v:8b&lt;/code&gt; for wiki pipeline. Deployed 2026-04-24.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;nk-celebrimbor (Pavilion)&lt;/strong&gt;: headless Ubuntu, Ollama CPU-only (CUDA disabled — MX550 2GB VRAM too small). Running &lt;code&gt;gemma4:e4b&lt;/code&gt; at ~15-18 t/s for hourly monitoring pipeline; &lt;code&gt;nomic-embed-text&lt;/code&gt; for wiki embeddings.&lt;/li&gt;&#xA;&lt;li&gt;T480: planned orchestrator role not yet active.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;related-pages&#34;&gt;Related Pages&lt;a class=&#34;anchor&#34; href=&#34;#related-pages&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://homelab.nbkelley.com/docs/services/ollama_config/&#34;&gt;Ollama Configuration&lt;/a&gt;, &lt;a href=&#34;https://homelab.nbkelley.com/docs/services/open_webui_deployment/&#34;&gt;Open WebUI Deployment&lt;/a&gt;, &lt;a href=&#34;https://homelab.nbkelley.com/docs/machines/mac-studio/&#34;&gt;Mac Studio&lt;/a&gt;, &lt;a href=&#34;https://homelab.nbkelley.com/docs/machines/pavilion/&#34;&gt;Pavilion (AI PC) Configuration&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mac Studio</title>
      <link>https://homelab.nbkelley.com/docs/machines/mac-studio/</link>
      <pubDate>Sun, 26 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://homelab.nbkelley.com/docs/machines/mac-studio/</guid>
      <description>&lt;h1 id=&#34;mac-studio&#34;&gt;Mac Studio&lt;a class=&#34;anchor&#34; href=&#34;#mac-studio&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;what-was-established&#34;&gt;What Was Established&lt;a class=&#34;anchor&#34; href=&#34;#what-was-established&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Mac Studio M1 Max 64GB purchased 2026-04-17 for $2,299 (used/refurbished market). Deployed 2026-04-24 as the primary AI inference node for the homelab, replacing the Pavilion as the fast interactive reasoning machine.&lt;/p&gt;&#xA;&lt;h2 id=&#34;hardware&#34;&gt;Hardware&lt;a class=&#34;anchor&#34; href=&#34;#hardware&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Detail&lt;/th&gt;&#xA;          &lt;th&gt;Value&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Model&lt;/td&gt;&#xA;          &lt;td&gt;Mac Studio (2022, M1 Max)&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Hostname&lt;/td&gt;&#xA;          &lt;td&gt;Legolas&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;IP&lt;/td&gt;&#xA;          &lt;td&gt;192.168.1.45&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Memory&lt;/td&gt;&#xA;          &lt;td&gt;64GB Unified Memory&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Memory bandwidth&lt;/td&gt;&#xA;          &lt;td&gt;~400 GB/s&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Purchase price&lt;/td&gt;&#xA;          &lt;td&gt;$2,299 (used)&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Status&lt;/td&gt;&#xA;          &lt;td&gt;Deployed, operational 2026-04-24&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;why-this-hardware&#34;&gt;Why This Hardware&lt;a class=&#34;anchor&#34; href=&#34;#why-this-hardware&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;64GB unified memory is the key spec for LLM inference on Apple Silicon. Memory bandwidth determines tokens/second — the M1 Max at ~400 GB/s delivers ~25+ t/s for 27-31B models vs the Pavilion&amp;rsquo;s ~15 t/s CPU-only for E4B. At the time of purchase, 64GB Mac Studio/Mac Mini new from Apple was backordered to late June. The used M1 Max at $2,299 was judged a reasonable buy given scarcity.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pavilion (AI PC) Configuration</title>
      <link>https://homelab.nbkelley.com/docs/machines/pavilion/</link>
      <pubDate>Sun, 26 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://homelab.nbkelley.com/docs/machines/pavilion/</guid>
      <description>&lt;h1 id=&#34;pavilion-ai-pc-configuration&#34;&gt;Pavilion (AI PC) Configuration&lt;a class=&#34;anchor&#34; href=&#34;#pavilion-ai-pc-configuration&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;what-was-established&#34;&gt;What Was Established&lt;a class=&#34;anchor&#34; href=&#34;#what-was-established&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;The Pavilion machine uses a USB-based or specific Ethernet interface (&lt;code&gt;enx6c1f7197a66&lt;/code&gt;) that occasionally fails to bring the link up automatically on boot.&lt;/p&gt;&#xA;&lt;h2 id=&#34;current-configuration&#34;&gt;Current Configuration&lt;a class=&#34;anchor&#34; href=&#34;#current-configuration&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;netplan-configuration&#34;&gt;Netplan Configuration&lt;a class=&#34;anchor&#34; href=&#34;#netplan-configuration&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;Ensure &lt;code&gt;/etc/netplan/01-netcfg.yaml&lt;/code&gt; is correctly configured with the active interface name and permissions are set to &lt;code&gt;600&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;network&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;version&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#f92672&#34;&gt;ethernets&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#f92672&#34;&gt;enx6c1f7197a66&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#f92672&#34;&gt;dhcp4&lt;/span&gt;: &lt;span style=&#34;color:#66d9ef&#34;&gt;true&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Apply with:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo chmod &lt;span style=&#34;color:#ae81ff&#34;&gt;600&lt;/span&gt; /etc/netplan/01-netcfg.yaml&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo netplan apply&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;boot-time-interface-fix&#34;&gt;Boot-time Interface Fix&lt;a class=&#34;anchor&#34; href=&#34;#boot-time-interface-fix&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;If the interface remains DOWN after reboot, use a systemd service to force the link up.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Local Model Training &amp; Fine-Tuning Guide</title>
      <link>https://homelab.nbkelley.com/docs/ai/local-model-training/</link>
      <pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://homelab.nbkelley.com/docs/ai/local-model-training/</guid>
      <description>&lt;h1 id=&#34;local-model-training--fine-tuning-guide&#34;&gt;Local Model Training &amp;amp; Fine-Tuning Guide&lt;a class=&#34;anchor&#34; href=&#34;#local-model-training--fine-tuning-guide&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;what-was-established&#34;&gt;What Was Established&lt;a class=&#34;anchor&#34; href=&#34;#what-was-established&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Guide for fine-tuning local LLMs (DeepSeek) using Hugging Face &lt;code&gt;transformers&lt;/code&gt;, with emphasis on VRAM-efficient techniques for single-GPU setups.&lt;/p&gt;&#xA;&lt;h2 id=&#34;key-decisions&#34;&gt;Key Decisions&lt;a class=&#34;anchor&#34; href=&#34;#key-decisions&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Framework&lt;/strong&gt;: Hugging Face &lt;code&gt;transformers&lt;/code&gt; + &lt;code&gt;Trainer&lt;/code&gt; API for fine-tuning&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Model&lt;/strong&gt;: &lt;code&gt;deepseek-ai/deepseek-llm-7b&lt;/code&gt; (example model)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Efficiency&lt;/strong&gt;: LoRA (Low-Rank Adaptation) + 4-bit quantization via &lt;code&gt;bitsandbytes&lt;/code&gt; to fit large models on consumer GPUs&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;setup&#34;&gt;Setup&lt;a class=&#34;anchor&#34; href=&#34;#setup&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pip install torch transformers datasets accelerate peft bitsandbytes&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Verify GPU: &lt;code&gt;nvidia-smi&lt;/code&gt; — need CUDA 11.8+.&lt;/p&gt;</description>
    </item>
    <item>
      <title>AI-Driven Monitoring Pipeline</title>
      <link>https://homelab.nbkelley.com/docs/monitoring/pipeline/</link>
      <pubDate>Tue, 21 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://homelab.nbkelley.com/docs/monitoring/pipeline/</guid>
      <description>&lt;h1 id=&#34;ai-driven-monitoring-pipeline&#34;&gt;AI-Driven Monitoring Pipeline&lt;a class=&#34;anchor&#34; href=&#34;#ai-driven-monitoring-pipeline&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;what-was-established&#34;&gt;What Was Established&lt;a class=&#34;anchor&#34; href=&#34;#what-was-established&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;The monitoring pipeline is fully operational and running hourly. It collects rich structured data from four sources (Prometheus — 7 metrics, Uptime Kuma, UniFi, Synology), runs 4 parallel Ollama summarization calls, synthesises a final status report, and writes everything to Postgres. Hourly snapshots of raw UniFi and Prometheus data are stored in dedicated tables for delta computation. End-to-end runtime is ~13 minutes using &lt;code&gt;gemma4:e4b&lt;/code&gt; CPU-only on the Pavilion — accepted as-is pending Mac Studio.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Book Discovery Pipeline</title>
      <link>https://homelab.nbkelley.com/docs/projects/book_discovery_pipeline/</link>
      <pubDate>Mon, 13 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://homelab.nbkelley.com/docs/projects/book_discovery_pipeline/</guid>
      <description>&lt;h1 id=&#34;book-discovery-pipeline&#34;&gt;Book Discovery Pipeline&lt;a class=&#34;anchor&#34; href=&#34;#book-discovery-pipeline&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;what-was-established&#34;&gt;What Was Established&lt;a class=&#34;anchor&#34; href=&#34;#what-was-established&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;A multi-agent, multi-node pipeline designed to identify high-prestige, upcoming literary works by analyzing critical reviews before they hit the mainstream.&lt;/p&gt;&#xA;&lt;h2 id=&#34;key-decisions&#34;&gt;Key Decisions&lt;a class=&#34;anchor&#34; href=&#34;#key-decisions&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Architecture:&lt;/strong&gt; Two-tier agent system. Lightweight models (E4B) on the Orchestrator (T480) handle routing/filtering; heavier models (26B) on the Inference node (Pavilion) handle deep analysis.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tech Stack:&lt;/strong&gt; n8n (Orchestration), PostgreSQL (Data Storage), Hugo (Static Site Generation), Python/JS (Custom Logic).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Data Sources:&lt;/strong&gt; RSS feeds (Literary Hub, etc.), Web Scraping (for indie blogs), and Goodreads API/Scraping for popularity comparison.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;current-configuration&#34;&gt;Current Configuration&lt;a class=&#34;anchor&#34; href=&#34;#current-configuration&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;the-pipeline-chain&#34;&gt;The Pipeline Chain&lt;a class=&#34;anchor&#34; href=&#34;#the-pipeline-chain&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;Ingestion:&lt;/strong&gt; n8n fetches RSS feeds and scrapes blogs.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Filtering (E4B):&lt;/strong&gt; Classifies content (Review vs. News). Discards non-reviews.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Extraction (26B):&lt;/strong&gt; Extracts title, author, publisher, and critical language.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Scoring (26B):&lt;/strong&gt; Analyates &amp;ldquo;prestige signals&amp;rdquo; (e.g., phrases like &amp;ldquo;formally ambitious&amp;rdquo;) and compares against Goodreads popularity.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Aggregation:&lt;/strong&gt; Aggregates data into PostgreSQL.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Publication:&lt;/strong&gt; n8n generates a Markdown file and commits it to a Hugo repository.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h3 id=&#34;data-schema-postgresql&#34;&gt;Data Schema (PostgreSQL)&lt;a class=&#34;anchor&#34; href=&#34;#data-schema-postgresql&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;sources&lt;/code&gt;: RSS metadata.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;articles&lt;/code&gt;: Raw ingested content.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;books&lt;/code&gt;: Normalized book records.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;reviews&lt;/code&gt;: Links articles to books + extracted critical language.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;prestige_scores&lt;/code&gt;: Historical scoring for trend tracking.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;open-questions&#34;&gt;Open Questions&lt;a class=&#34;anchor&#34; href=&#34;#open-questions&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;How to effectively scrape Substack/paywalled content without high costs.&lt;/li&gt;&#xA;&lt;li&gt;Determining the optimal frequency for the pipeline run (Weekly vs. Bi-weekly).&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;related-pages&#34;&gt;Related Pages&lt;a class=&#34;anchor&#34; href=&#34;#related-pages&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://homelab.nbkelley.com/docs/services/open_webui_deployment/&#34;&gt;Open WebUI Deployment&lt;/a&gt;, &lt;a href=&#34;https://homelab.nbkelley.com/docs/services/ollama_config/&#34;&gt;Ollama Configuration&lt;/a&gt;, &lt;a href=&#34;https://homelab.nbkelley.com/docs/monitoring/pipeline/&#34;&gt;AI-Driven Monitoring Pipeline&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ollama Configuration</title>
      <link>https://homelab.nbkelley.com/docs/services/ollama_config/</link>
      <pubDate>Mon, 13 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://homelab.nbkelley.com/docs/services/ollama_config/</guid>
      <description>&lt;h1 id=&#34;ollama-configuration&#34;&gt;Ollama Configuration&lt;a class=&#34;anchor&#34; href=&#34;#ollama-configuration&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;what-was-established&#34;&gt;What Was Established&lt;a class=&#34;anchor&#34; href=&#34;#what-was-established&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Ollama is used as the primary model backend across the fleet. The configuration focuses on making the API accessible to other nodes (like the T480 orchestrator) and running models like Gemma 4.&lt;/p&gt;&#xA;&lt;h2 id=&#34;key-decisions&#34;&gt;Key Decisions&lt;a class=&#34;anchor&#34; href=&#34;#key-decisions&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;To allow remote access from other machines in the homelab (e.g., from a Docker container or another PC), the Ollama service must be configured to listen on all network interfaces, not just localhost.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Open WebUI Deployment</title>
      <link>https://homelab.nbkelley.com/docs/services/open_webui_deployment/</link>
      <pubDate>Mon, 13 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://homelab.nbkelley.com/docs/services/open_webui_deployment/</guid>
      <description>&lt;h1 id=&#34;open-webui-deployment&#34;&gt;Open WebUI Deployment&lt;a class=&#34;anchor&#34; href=&#34;#open-webui-deployment&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;what-was-established&#34;&gt;What Was Established&lt;a class=&#34;anchor&#34; href=&#34;#what-was-established&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Open WebUI is deployed via Docker to provide a ChatGPT-like interface for interacting with local Ollama instances. It is configured to connect to the host&amp;rsquo;s Ollama API.&lt;/p&gt;&#xA;&lt;h2 id=&#34;key-decisions&#34;&gt;Key Decisions&lt;a class=&#34;anchor&#34; href=&#34;#key-decisions&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Because the WebUI runs inside a Docker container, it cannot reach &lt;code&gt;localhost:11434&lt;/code&gt; of the host machine directly. The &lt;code&gt;OLLMA_BASE_URL&lt;/code&gt; must point to the host&amp;rsquo;s actual LAN IP or use the &lt;code&gt;host.docker.internal&lt;/code&gt; gateway.&lt;/p&gt;&#xA;&lt;h2 id=&#34;current-configuration&#34;&gt;Current Configuration&lt;a class=&#34;anchor&#34; href=&#34;#current-configuration&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;docker-deployment&#34;&gt;Docker Deployment&lt;a class=&#34;anchor&#34; href=&#34;#docker-deployment&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;docker run -d &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  --name open-webui &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  --restart always &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  -p 3000:8080 &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  -v open-webui:/app/backend/data &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  --add-host&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;host.docker.internal:host-gateway &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  -e OLLAMA_BASE_URL&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;http://&amp;lt;YOUR_HOST_IP&amp;gt;:11434 &lt;span style=&#34;color:#ae81ff&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  ghcr.io/open-webui/open-webui:main&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;Note: Replace &lt;code&gt;&amp;lt;YOUR_HOST_IP&amp;gt;&lt;/code&gt; with the actual IP of the machine (e.g., 192.168.172.168) to ensure the container can route to the Ollama service.&lt;/em&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Troubleshooting DeepSeek Language Switching</title>
      <link>https://homelab.nbkelley.com/docs/ai/deepseek_language_switching/</link>
      <pubDate>Tue, 25 Mar 2025 00:00:00 +0000</pubDate>
      <guid>https://homelab.nbkelley.com/docs/ai/deepseek_language_switching/</guid>
      <description>&lt;h1 id=&#34;troubleshooting-deepseek-language-switching&#34;&gt;Troubleshooting DeepSeek Language Switching&lt;a class=&#34;anchor&#34; href=&#34;#troubleshooting-deepseek-language-switching&#34;&gt;#&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;what-was-established&#34;&gt;What Was Established&lt;a class=&#34;anchor&#34; href=&#34;#what-was-established&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Local DeepSeek models may intermittently switch from English to Chinese mid-response. This is typically caused by training bias (heavy Chinese dataset influence), loss of context during long conversations, or mixed-language input prompts.&lt;/p&gt;&#xA;&lt;h2 id=&#34;key-decisions&#34;&gt;Key Decisions&lt;a class=&#34;anchor&#34; href=&#34;#key-decisions&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;To maintain English-only responses, the following parameters and prompting strategies should be applied:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Explicit Instruction&lt;/strong&gt;: Always include a system-level or initial prompt instruction to respond exclusively in English.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Temperature Control&lt;/strong&gt;: Use lower temperature settings (e.g., &lt;code&gt;0.3&lt;/code&gt;) to make the model more deterministic and less likely to drift.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Repetition Penalty&lt;/strong&gt;: Implement a &lt;code&gt;repetition_penalty&lt;/code&gt; (e.g., &lt;code&gt;1.2&lt;/code&gt;) to discourage the model from falling into repetitive patterns that might trigger language switching.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;current-configuration&#34;&gt;Current Configuration&lt;a class=&#34;anchor&#34; href=&#34;#current-configuration&#34;&gt;#&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;system-message-pattern&#34;&gt;System Message Pattern&lt;a class=&#34;anchor&#34; href=&#34;#system-message-pattern&#34;&gt;#&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;p&gt;When using APIs or local inference engines that support system roles:&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
