<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Guatu Labs Dev</title><description>Technical guides, project walkthroughs, and open-source tools on AI agents, homelab infrastructure, Kubernetes, and IIoT.</description><link>https://guatulabs.dev/</link><language>en-us</language><item><title>Systemd-tmpfiles vs Plex: When /tmp Aging Breaks EAC3 Transcoding</title><link>https://guatulabs.dev/posts/systemd-tmpfiles-and-plex-when-tmp-aging-breaks-eac3-transcoding/</link><guid isPermaLink="true">https://guatulabs.dev/posts/systemd-tmpfiles-and-plex-when-tmp-aging-breaks-eac3-transcoding/</guid><description>Why long-running Plex servers suddenly fail EAC3 transcodes with exit code 187, and how a tmpfiles.d exclusion rule fixes it permanently.</description><pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Tailscale Kernel TUN in Unprivileged LXC: Direct SSH Without Userspace Networking</title><link>https://guatulabs.dev/posts/tailscale-kernel-tun-in-unprivileged-lxc-direct-ssh-without-userspace-networking/</link><guid isPermaLink="true">https://guatulabs.dev/posts/tailscale-kernel-tun-in-unprivileged-lxc-direct-ssh-without-userspace-networking/</guid><description>Two lines in a Proxmox LXC config give Tailscale a real kernel TUN device: direct peer-to-peer SSH, working UDP, and the container stays unprivileged.</description><pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Pushgateway Heartbeat Gotcha: When ndots and NetworkPolicy Silently Eat Your Alerts</title><link>https://guatulabs.dev/posts/pushgateway-heartbeat-gotcha-ndots-and-networkpolicy-interplay/</link><guid isPermaLink="true">https://guatulabs.dev/posts/pushgateway-heartbeat-gotcha-ndots-and-networkpolicy-interplay/</guid><description>How ndots:5, a wildcard DNS record, and a default-deny NetworkPolicy combine to swallow CronJob heartbeats without a single error or alert.</description><pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate></item><item><title>FastMCP Agent Mail: RBAC Tokens vs Anonymous Access, and the 403 Errors in Between</title><link>https://guatulabs.dev/posts/fastmcp-agent-mail-rbac-token-vs-anonymous-lessons-from-403-errors/</link><guid isPermaLink="true">https://guatulabs.dev/posts/fastmcp-agent-mail-rbac-token-vs-anonymous-lessons-from-403-errors/</guid><description>Why a FastMCP agent mail server that works anonymously in dev returns 403 behind TLS ingress, and how to wire bearer tokens without leaking them.</description><pubDate>Mon, 10 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Kyverno allowLatestTag Pitfalls: How Policy Can Stop Pods From Restarting</title><link>https://guatulabs.dev/posts/kyverno-allowlatesttag-pitfalls-how-policy-can-stop-pods-from-restarting/</link><guid isPermaLink="true">https://guatulabs.dev/posts/kyverno-allowlatesttag-pitfalls-how-policy-can-stop-pods-from-restarting/</guid><description>A disallow-latest-tag policy only blocks new admissions. That gap turns a routine pod eviction into a permanent outage. Here&apos;s the failure mode and the fix.</description><pubDate>Fri, 07 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Hybrid Retrieval v2: Qwen Embeddings, BM25, and RRF with a FastEmbed Reranker</title><link>https://guatulabs.dev/posts/hybrid-retrieval-v2-combining-qwen-embeddings-bm25-and-rrf-with-fastembed-reranker/</link><guid isPermaLink="true">https://guatulabs.dev/posts/hybrid-retrieval-v2-combining-qwen-embeddings-bm25-and-rrf-with-fastembed-reranker/</guid><description>Dense vectors miss exact identifiers. Here&apos;s the hybrid Qdrant setup I run: Qwen3 embeddings, BM25 sparse vectors, RRF fusion, and a CPU FastEmbed reranker.</description><pubDate>Wed, 05 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Longhorn Read-Only Mounts: Detection, Recovery, and Closing the Silent Failure Window</title><link>https://guatulabs.dev/posts/handling-longhorn-read-only-mounts-detection-recovery-and-preventing-silent-failures/</link><guid isPermaLink="true">https://guatulabs.dev/posts/handling-longhorn-read-only-mounts-detection-recovery-and-preventing-silent-failures/</guid><description>A Longhorn volume can report Healthy while the filesystem inside your pod has been read-only for hours. How to detect it, recover it, and alert on it.</description><pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate></item><item><title>ForwardAuth with Authentik: Wiring SSO Across Multiple Apps Without Breaking Ingress</title><link>https://guatulabs.dev/posts/forwardauth-with-authentik-wiring-sso-across-multiple-apps-without-breaking-ingress/</link><guid isPermaLink="true">https://guatulabs.dev/posts/forwardauth-with-authentik-wiring-sso-across-multiple-apps-without-breaking-ingress/</guid><description>Authentik ForwardAuth on Traefik fails in ways that look like success. Outpost bindings, NetworkPolicies, secret shape, and header mapping across apps.</description><pubDate>Fri, 31 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Backing Up Qdrant Snapshots Correctly: From emptyDir to NFS Persistent Backups</title><link>https://guatulabs.dev/posts/backing-up-qdrant-snapshots-correctly-from-emptydir-to-nfs-persistent-backups/</link><guid isPermaLink="true">https://guatulabs.dev/posts/backing-up-qdrant-snapshots-correctly-from-emptydir-to-nfs-persistent-backups/</guid><description>Qdrant snapshots on emptyDir vanish on restart, and snapshots on the data PVC die with the disk. Here&apos;s the NFS-backed pattern that survives both.</description><pubDate>Wed, 29 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Traefik Host Collision: Why Duplicate Host Rules Break IngressRoutes</title><link>https://guatulabs.dev/posts/traefik-host-collision-why-duplicate-host-rules-break-ingressroutes/</link><guid isPermaLink="true">https://guatulabs.dev/posts/traefik-host-collision-why-duplicate-host-rules-break-ingressroutes/</guid><description>In Traefik v3, a wildcard router can outrank an exact Host match, because default priority is rule string length. Here&apos;s how it fails and how to fix it.</description><pubDate>Mon, 27 Jul 2026 00:00:00 GMT</pubDate></item><item><title>We Almost Deployed a Temporal Knowledge Graph. The Eval Said No.</title><link>https://guatulabs.dev/posts/we-almost-deployed-a-temporal-knowledge-graph-the-eval-said-no/</link><guid isPermaLink="true">https://guatulabs.dev/posts/we-almost-deployed-a-temporal-knowledge-graph-the-eval-said-no/</guid><description>A temporal knowledge graph passed every static RAG test and still failed. The gap was temporal reasoning, and one eval caught it before prod did.</description><pubDate>Fri, 24 Jul 2026 00:00:00 GMT</pubDate></item><item><title>I Benchmarked My Homelab Memory Stack: Hybrid Search + Local Reranker Took LoCoMo from 63% to 80%</title><link>https://guatulabs.dev/posts/i-benchmarked-my-homelab-memory-stack-hybrid-search-local-reranker-took-locomo-from-63-to-80/</link><guid isPermaLink="true">https://guatulabs.dev/posts/i-benchmarked-my-homelab-memory-stack-hybrid-search-local-reranker-took-locomo-from-63-to-80/</guid><description>How adding BM25 hybrid search and a local BGE reranker to a vector-only agent memory stack moved LoCoMo accuracy from 63% to 80%, and what it cost in latency.</description><pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate></item><item><title>The Write Policy Is the Hard Part: Promotion Pipelines for Agent Memory</title><link>https://guatulabs.dev/posts/the-write-policy-is-the-hard-part-promotion-pipelines-for-agent-memory/</link><guid isPermaLink="true">https://guatulabs.dev/posts/the-write-policy-is-the-hard-part-promotion-pipelines-for-agent-memory/</guid><description>Storing agent memory is easy. Deciding what earns a permanent write, and keeping the write-path alive through RBAC and network policy, is the real work.</description><pubDate>Mon, 20 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Moving Scheduled LLM Curation from Cloud APIs to Local Models</title><link>https://guatulabs.dev/posts/moving-scheduled-llm-curation-from-cloud-apis-to-local-models/</link><guid isPermaLink="true">https://guatulabs.dev/posts/moving-scheduled-llm-curation-from-cloud-apis-to-local-models/</guid><description>A comparison of cloud APIs vs local models for scheduled agent memory curation, and the headless-cron gotchas nobody warns you about.</description><pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Silent Drift: Why Re-Embedding Only on Count Changes Rots Your Semantic Index</title><link>https://guatulabs.dev/posts/silent-drift-why-re-embedding-only-on-count-changes-rots-your-semantic-index/</link><guid isPermaLink="true">https://guatulabs.dev/posts/silent-drift-why-re-embedding-only-on-count-changes-rots-your-semantic-index/</guid><description>Count-based re-embedding leaves stale vectors pointing at edited text. Here&apos;s how semantic drift creeps in and how hash-based validation stops it.</description><pubDate>Wed, 15 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Your Vector DB Snapshots Are Landing on the Same Disk That Will Fail</title><link>https://guatulabs.dev/posts/your-vector-db-snapshots-are-landing-on-the-same-disk-that-will-fail/</link><guid isPermaLink="true">https://guatulabs.dev/posts/your-vector-db-snapshots-are-landing-on-the-same-disk-that-will-fail/</guid><description>Qdrant snapshots default to the same volume as your data. One disk failure takes both, and even a surviving snapshot can fail restore with a 400 error.</description><pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Eviction Without Deletion: Running an ACT-R Decay Policy for Agent Memory</title><link>https://guatulabs.dev/posts/eviction-without-deletion-running-an-act-r-decay-policy-for-agent-memory-in-production/</link><guid isPermaLink="true">https://guatulabs.dev/posts/eviction-without-deletion-running-an-act-r-decay-policy-for-agent-memory-in-production/</guid><description>Stop deleting agent memories to fight vector-store noise. An ACT-R decay policy lowers activation instead, so cold context can re-activate later.</description><pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Prometheus Alerting Rules That Don&apos;t Cry Wolf</title><link>https://guatulabs.dev/posts/prometheus-alerting-rules-that-don-t-cry-wolf/</link><guid isPermaLink="true">https://guatulabs.dev/posts/prometheus-alerting-rules-that-don-t-cry-wolf/</guid><description>How to write Prometheus alerts that carry context, tolerate transient scrape blips, and page only when something is actually broken.</description><pubDate>Mon, 29 Jun 2026 00:00:00 GMT</pubDate></item><item><title>SealedSecrets: Storing Secrets in Git Without the Risk</title><link>https://guatulabs.dev/posts/sealedsecrets-storing-secrets-in-git-without-the-risk/</link><guid isPermaLink="true">https://guatulabs.dev/posts/sealedsecrets-storing-secrets-in-git-without-the-risk/</guid><description>How SealedSecrets lets you commit encrypted secrets to Git safely, why the real risk is losing the controller&apos;s private key, and how to back it up.</description><pubDate>Sat, 27 Jun 2026 00:00:00 GMT</pubDate></item><item><title>MetalLB on Bare Metal: LoadBalancer Without a Cloud Provider</title><link>https://guatulabs.dev/posts/metallb-on-bare-metal-loadbalancer-without-a-cloud-provider/</link><guid isPermaLink="true">https://guatulabs.dev/posts/metallb-on-bare-metal-loadbalancer-without-a-cloud-provider/</guid><description>Your bare-metal LoadBalancer Service is stuck Pending. Here&apos;s how MetalLB hands out real LAN IPs, why L2 mode works, and the traps that cost me hours.</description><pubDate>Fri, 26 Jun 2026 00:00:00 GMT</pubDate></item><item><title>OpenTofu State in MinIO: An S3-Compatible Backend for IaC</title><link>https://guatulabs.dev/posts/opentofu-state-in-minio-s3-compatible-backend-for-iac/</link><guid isPermaLink="true">https://guatulabs.dev/posts/opentofu-state-in-minio-s3-compatible-backend-for-iac/</guid><description>Store OpenTofu state in self-hosted MinIO: S3 backend config, native locking, least-privilege policies, and guards against a CI apply that destroys infra.</description><pubDate>Fri, 19 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Langfuse for LLM Observability: Tracing Agent Calls Instead of Guessing</title><link>https://guatulabs.dev/posts/langfuse-for-llm-observability-tracing-agent-calls/</link><guid isPermaLink="true">https://guatulabs.dev/posts/langfuse-for-llm-observability-tracing-agent-calls/</guid><description>Using Langfuse to trace multi-step agent workflows, replace custom eval logic, and consolidate LLM observability into one tool that actually scales.</description><pubDate>Fri, 19 Jun 2026 00:00:00 GMT</pubDate></item><item><title>CloudNativePG: Running PostgreSQL in Kubernetes Without the Pain</title><link>https://guatulabs.dev/posts/cloudnativepg-running-postgresql-in-kubernetes-without-the-pain/</link><guid isPermaLink="true">https://guatulabs.dev/posts/cloudnativepg-running-postgresql-in-kubernetes-without-the-pain/</guid><description>Running PostgreSQL on Kubernetes with CloudNativePG: the Kyverno policy traps, SSL gotchas, read/write splitting, and the 16.4 segfault to avoid.</description><pubDate>Mon, 15 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Proxmox Backup Server: Incremental Backups for Your Whole Cluster</title><link>https://guatulabs.dev/posts/proxmox-backup-server-incremental-backups-for-your-whole-cluster/</link><guid isPermaLink="true">https://guatulabs.dev/posts/proxmox-backup-server-incremental-backups-for-your-whole-cluster/</guid><description>Setting up Proxmox Backup Server for incremental, deduplicated backups across a multi-node cluster, including the token auth and locking gotchas.</description><pubDate>Mon, 15 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Network Policies with Calico: Default Deny and Namespace Isolation</title><link>https://guatulabs.dev/posts/network-policies-with-calico-default-deny-and-namespace-isolation/</link><guid isPermaLink="true">https://guatulabs.dev/posts/network-policies-with-calico-default-deny-and-namespace-isolation/</guid><description>Rolling out default-deny NetworkPolicies and namespace isolation with Calico without breaking DNS, ingress, or admission webhooks.</description><pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Agent Glass-Break Patterns: Controlled Escalation for Production</title><link>https://guatulabs.dev/posts/agent-glass-break-patterns-controlled-escalation-for-production/</link><guid isPermaLink="true">https://guatulabs.dev/posts/agent-glass-break-patterns-controlled-escalation-for-production/</guid><description>How to implement controlled escalation for AI agents using safeBins and network-level constraints to prevent production catastrophes.</description><pubDate>Wed, 10 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Velero + MinIO: Kubernetes Backup Strategy for Bare Metal</title><link>https://guatulabs.dev/posts/velero-minio-kubernetes-backup-strategy-for-bare-metal/</link><guid isPermaLink="true">https://guatulabs.dev/posts/velero-minio-kubernetes-backup-strategy-for-bare-metal/</guid><description>Moving beyond cloud S3 to a bare-metal backup strategy using Velero, MinIO, and Longhorn. Lessons on CSI snapshots and ETCD persistence.</description><pubDate>Wed, 10 Jun 2026 00:00:00 GMT</pubDate></item><item><title>When Agents Should Stop: Designing Safety Boundaries That Work</title><link>https://guatulabs.dev/posts/when-agents-should-stop-designing-safety-boundaries-that-work/</link><guid isPermaLink="true">https://guatulabs.dev/posts/when-agents-should-stop-designing-safety-boundaries-that-work/</guid><description>Stop conditions are a feature, not a failure state. Budget caps, progress checks, and exit contracts that make autonomous agents quit cleanly.</description><pubDate>Wed, 10 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Edge Computing for IIoT: When to Process at the Source</title><link>https://guatulabs.dev/posts/edge-computing-for-iiot-when-to-process-at-the-source/</link><guid isPermaLink="true">https://guatulabs.dev/posts/edge-computing-for-iiot-when-to-process-at-the-source/</guid><description>Stop sending raw sensor data to the cloud. A deep dive into edge processing, local LLM routing, and the privacy hard-wall for IIoT.</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Grafana Dashboards: Information Density vs Readability</title><link>https://guatulabs.dev/posts/grafana-dashboards-information-density-vs-readability/</link><guid isPermaLink="true">https://guatulabs.dev/posts/grafana-dashboards-information-density-vs-readability/</guid><description>Stop cramming every metric into one screen. A practical look at balancing information density and performance in Grafana dashboards.</description><pubDate>Wed, 03 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Kubernetes RBAC: Building Least-Privilege Service Accounts</title><link>https://guatulabs.dev/posts/kubernetes-rbac-building-least-privilege-service-accounts/</link><guid isPermaLink="true">https://guatulabs.dev/posts/kubernetes-rbac-building-least-privilege-service-accounts/</guid><description>Moving beyond cluster-admin for everything. A practical approach to scoping ServiceAccount permissions for production workloads and AI agents.</description><pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Building Agent Skills: A Pattern for Discoverable Capabilities</title><link>https://guatulabs.dev/posts/building-agent-skills-a-pattern-for-discoverable-capabilities/</link><guid isPermaLink="true">https://guatulabs.dev/posts/building-agent-skills-a-pattern-for-discoverable-capabilities/</guid><description>Moving beyond basic tool-calling to a composable skill pattern that makes agent capabilities discoverable and reusable across different frameworks.</description><pubDate>Fri, 29 May 2026 00:00:00 GMT</pubDate></item><item><title>Tesla P40 in a Homelab: 24GB of Inference on a Budget</title><link>https://guatulabs.dev/posts/tesla-p40-in-a-homelab-24gb-of-inference-on-a-budget/</link><guid isPermaLink="true">https://guatulabs.dev/posts/tesla-p40-in-a-homelab-24gb-of-inference-on-a-budget/</guid><description>Running a Tesla P40 for LLM inference. Why I ditched GPU passthrough for host-level drivers to stop the constant Proxmox crashes.</description><pubDate>Mon, 25 May 2026 00:00:00 GMT</pubDate></item><item><title>Condition-Based vs Time-Based Maintenance: Making the Switch</title><link>https://guatulabs.dev/posts/condition-based-vs-time-based-maintenance-making-the-switch/</link><guid isPermaLink="true">https://guatulabs.dev/posts/condition-based-vs-time-based-maintenance-making-the-switch/</guid><description>Stop replacing parts that aren&apos;t broken. A deep dive into moving from calendar-based schedules to real-time condition-based maintenance in IIoT.</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate></item><item><title>Longhorn Volume Health: The Gap Between &apos;Healthy&apos; and Actually Working</title><link>https://guatulabs.dev/posts/longhorn-volume-health-monitoring-replication-and-capacity/</link><guid isPermaLink="true">https://guatulabs.dev/posts/longhorn-volume-health-monitoring-replication-and-capacity/</guid><description>Stop trusting the Longhorn UI blindly. Learn to monitor replication, fix stale mounts, and manage snapshot bloat in production K8s storage.</description><pubDate>Wed, 20 May 2026 00:00:00 GMT</pubDate></item><item><title>Proxmox Cluster Quorum: How Many Nodes Do You Actually Need</title><link>https://guatulabs.dev/posts/proxmox-cluster-quorum-how-many-nodes-do-you-actually-need/</link><guid isPermaLink="true">https://guatulabs.dev/posts/proxmox-cluster-quorum-how-many-nodes-do-you-actually-need/</guid><description>Stop guessing about Proxmox quorum. A deep dive into 2-node vs 3-node setups, QDevice, and why your cluster suddenly goes read-only.</description><pubDate>Mon, 18 May 2026 00:00:00 GMT</pubDate></item><item><title>Privacy-Routed LLM Inference: Keeping Sensitive Data Out of the Cloud</title><link>https://guatulabs.dev/posts/privacy-routed-llm-inference-local-models-for-sensitive-data/</link><guid isPermaLink="true">https://guatulabs.dev/posts/privacy-routed-llm-inference-local-models-for-sensitive-data/</guid><description>How to build a routing layer for AI agents that ensures sensitive data stays on local hardware while leveraging cloud LLMs for non-private tasks.</description><pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate></item><item><title>Kyverno Admission Controllers: Policy-as-Code That Actually Works</title><link>https://guatulabs.dev/posts/kyverno-admission-controllers-policy-as-code-that-actually-works/</link><guid isPermaLink="true">https://guatulabs.dev/posts/kyverno-admission-controllers-policy-as-code-that-actually-works/</guid><description>Moving beyond the happy path of Kubernetes policy enforcement. Real-world Kyverno pitfalls, mutation loops, and the gap between docs and production.</description><pubDate>Wed, 13 May 2026 00:00:00 GMT</pubDate></item><item><title>Tailscale Subnet Routers: Accessing Your LAN Without the VPN Headache</title><link>https://guatulabs.dev/posts/tailscale-subnet-router-remote-access-without-traditional-vpn/</link><guid isPermaLink="true">https://guatulabs.dev/posts/tailscale-subnet-router-remote-access-without-traditional-vpn/</guid><description>Stop installing Tailscale on every single device. Use a subnet router to expose your home network and IoT gear without traditional VPN complexity.</description><pubDate>Wed, 13 May 2026 00:00:00 GMT</pubDate></item><item><title>PCIe Passthrough: NIC Name Instability and MAC Pinning</title><link>https://guatulabs.dev/posts/pcie-device-passthrough-nic-name-instability-and-mac-pinning/</link><guid isPermaLink="true">https://guatulabs.dev/posts/pcie-device-passthrough-nic-name-instability-and-mac-pinning/</guid><description>Stop your network configs from breaking after a reboot. How to fix unpredictable NIC naming in Proxmox PCIe passthrough.</description><pubDate>Mon, 11 May 2026 00:00:00 GMT</pubDate></item><item><title>Vibration Monitoring Architecture: From Sensor to Dashboard</title><link>https://guatulabs.dev/posts/vibration-monitoring-architecture-from-sensor-to-dashboard/</link><guid isPermaLink="true">https://guatulabs.dev/posts/vibration-monitoring-architecture-from-sensor-to-dashboard/</guid><description>Building a production-ready vibration monitoring pipeline. Lessons on sampling rates, MQTT bottlenecks, and avoiding dashboard lag.</description><pubDate>Fri, 08 May 2026 00:00:00 GMT</pubDate></item><item><title>GPU PCI Address Instability: When Your Card Moves Between Reboots</title><link>https://guatulabs.dev/posts/gpu-pci-address-instability-when-your-card-moves-between-reboots/</link><guid isPermaLink="true">https://guatulabs.dev/posts/gpu-pci-address-instability-when-your-card-moves-between-reboots/</guid><description>Dealing with shifting PCI addresses in Proxmox and how to stop your GPU from disappearing or changing IDs after a reboot.</description><pubDate>Tue, 05 May 2026 00:00:00 GMT</pubDate></item><item><title>Cognitive Memory for Agents: Vector Search vs Activation-Based Recall</title><link>https://guatulabs.dev/posts/cognitive-memory-for-agents-vector-search-vs-activation-based-recall/</link><guid isPermaLink="true">https://guatulabs.dev/posts/cognitive-memory-for-agents-vector-search-vs-activation-based-recall/</guid><description>Comparing vector databases and activation-based memory for AI agents. Trade-offs in latency, scale, and interpretability.</description><pubDate>Sun, 03 May 2026 00:00:00 GMT</pubDate></item><item><title>AdGuard Home: Network-Wide DNS Filtering with Failover</title><link>https://guatulabs.dev/posts/adguard-home-network-wide-dns-filtering-with-failover/</link><guid isPermaLink="true">https://guatulabs.dev/posts/adguard-home-network-wide-dns-filtering-with-failover/</guid><description>Setting up AdGuard Home for network-wide DNS filtering with a robust failover strategy to prevent total internet outages.</description><pubDate>Sat, 02 May 2026 00:00:00 GMT</pubDate></item><item><title>Unprivileged LXC + Docker: The runc Sysctl Permission Trap</title><link>https://guatulabs.dev/posts/unprivileged-lxc-docker-the-runc-sysctl-permission-trap/</link><guid isPermaLink="true">https://guatulabs.dev/posts/unprivileged-lxc-docker-the-runc-sysctl-permission-trap/</guid><description>Fixing the silent failure of sysctl settings when running Docker inside unprivileged Proxmox LXC containers.</description><pubDate>Fri, 01 May 2026 00:00:00 GMT</pubDate></item><item><title>Three-Layer Safety for Autonomous Agents: Stopping the Infinite Loop</title><link>https://guatulabs.dev/posts/three-layer-safety-autonomous-agents/</link><guid isPermaLink="true">https://guatulabs.dev/posts/three-layer-safety-autonomous-agents/</guid><description>Moving beyond prompt engineering to implement token-level schema enforcement, pre-execution gates, and shell-safe execution pipelines for AI agents.</description><pubDate>Tue, 28 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Stop Merging Broken YAML: Kubernetes Manifest Validation in CI</title><link>https://guatulabs.dev/posts/kubernetes-manifest-validation-catching-errors-before-merge/</link><guid isPermaLink="true">https://guatulabs.dev/posts/kubernetes-manifest-validation-catching-errors-before-merge/</guid><description>Don&apos;t let invalid manifests break your GitOps pipeline. Learn how to use kubeconform and Kyverno exclusions to catch errors before they hit production.</description><pubDate>Sat, 25 Apr 2026 00:00:00 GMT</pubDate></item><item><title>GPU D3cold Power States: How to Brick Your Card Without Trying</title><link>https://guatulabs.dev/posts/gpu-d3cold-power-states-how-to-brick-your-card-without-trying/</link><guid isPermaLink="true">https://guatulabs.dev/posts/gpu-d3cold-power-states-how-to-brick-your-card-without-trying/</guid><description>Bricking GPUs with D3cold: Real-world gotchas and fixes for Proxmox users</description><pubDate>Fri, 24 Apr 2026 00:00:00 GMT</pubDate></item><item><title>cert-manager + Cloudflare DNS-01: Automated TLS for Everything</title><link>https://guatulabs.dev/posts/cert-manager-cloudflare-dns-01-automated-tls-for-everything/</link><guid isPermaLink="true">https://guatulabs.dev/posts/cert-manager-cloudflare-dns-01-automated-tls-for-everything/</guid><description>Automating TLS with cert-manager and Cloudflare DNS-01 in Kubernetes</description><pubDate>Thu, 23 Apr 2026 00:00:00 GMT</pubDate></item><item><title>SealedSecrets Key Backup: Don&apos;t Lose Your Encryption Keys</title><link>https://guatulabs.dev/posts/sealedsecrets-key-backup-don-t-lose-your-encryption-keys/</link><guid isPermaLink="true">https://guatulabs.dev/posts/sealedsecrets-key-backup-don-t-lose-your-encryption-keys/</guid><description>How to back up and recover SealedSecrets encryption keys in Kubernetes</description><pubDate>Wed, 22 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Ollama on Kubernetes: Recreate Strategy and Single-GPU Deadlock</title><link>https://guatulabs.dev/posts/ollama-on-kubernetes-recreate-strategy-and-single-gpu-deadlock/</link><guid isPermaLink="true">https://guatulabs.dev/posts/ollama-on-kubernetes-recreate-strategy-and-single-gpu-deadlock/</guid><description>Deploying Ollama on Kubernetes can lead to GPU deadlocks. Here&apos;s how to avoid them.</description><pubDate>Tue, 21 Apr 2026 00:00:00 GMT</pubDate></item><item><title>MQTT Broker Selection: HiveMQ vs Mosquitto for Industrial Use</title><link>https://guatulabs.dev/posts/mqtt-broker-selection-hivemq-vs-mosquitto-for-industrial-use/</link><guid isPermaLink="true">https://guatulabs.dev/posts/mqtt-broker-selection-hivemq-vs-mosquitto-for-industrial-use/</guid><description>Comparing HiveMQ and Mosquitto for industrial IoT: scalability, security, and reliability</description><pubDate>Mon, 20 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Wildcard DNS + ndots:5: The TLS Nightmare and How to Fix It</title><link>https://guatulabs.dev/posts/wildcard-dns-ndots-5-the-tls-nightmare-and-how-to-fix-it/</link><guid isPermaLink="true">https://guatulabs.dev/posts/wildcard-dns-ndots-5-the-tls-nightmare-and-how-to-fix-it/</guid><description>Kubernetes default DNS settings can cause TLS certificate mismatches when using wildcard DNS. Here is how to debug and fix it.</description><pubDate>Mon, 20 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Self-Improving AI Infrastructure: How Your Homelab Wiki Updates Itself</title><link>https://guatulabs.dev/posts/self-improving-ai-infrastructure-how-your-homelab-wiki-updates-itself/</link><guid isPermaLink="true">https://guatulabs.dev/posts/self-improving-ai-infrastructure-how-your-homelab-wiki-updates-itself/</guid><description>How to automate your homelab wiki with self-improving AI infrastructure</description><pubDate>Sat, 18 Apr 2026 00:00:00 GMT</pubDate></item><item><title>The 6-Layer Memory Architecture I Run for Claude Code</title><link>https://guatulabs.dev/posts/six-layer-memory-architecture-for-claude-code/</link><guid isPermaLink="true">https://guatulabs.dev/posts/six-layer-memory-architecture-for-claude-code/</guid><description>Open-sourcing the memory system behind my Claude Code setup: CLAUDE.md, path-scoped rules, wiki, vector search, cognitive memory. With the mistakes.</description><pubDate>Thu, 16 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Building Karpathy&apos;s LLM Wiki: A Production Homelab Implementation</title><link>https://guatulabs.dev/posts/building-karpathy-s-llm-wiki-a-production-homelab-implementation/</link><guid isPermaLink="true">https://guatulabs.dev/posts/building-karpathy-s-llm-wiki-a-production-homelab-implementation/</guid><description>Implementing Karpathy&apos;s LLM Wiki in a homelab with real-world lessons and gotchas</description><pubDate>Mon, 13 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Proxmox API Tokens: Bash History Expansion and the ! Character</title><link>https://guatulabs.dev/posts/proxmox-api-tokens-bash-history-expansion-and-the-character/</link><guid isPermaLink="true">https://guatulabs.dev/posts/proxmox-api-tokens-bash-history-expansion-and-the-character/</guid><description>Bash history expansion breaks Proxmox API tokens — here&apos;s how to fix it</description><pubDate>Sat, 11 Apr 2026 00:00:00 GMT</pubDate></item><item><title>AMD iGPU Stealing Your RAM: UMA Frame Buffer on Headless Servers</title><link>https://guatulabs.dev/posts/amd-igpu-stealing-your-ram-uma-frame-buffer-on-headless-servers/</link><guid isPermaLink="true">https://guatulabs.dev/posts/amd-igpu-stealing-your-ram-uma-frame-buffer-on-headless-servers/</guid><description>AMD iGPU steals RAM on headless servers, here&apos;s how to fix it</description><pubDate>Fri, 10 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Agent Credential Management: Two-Tier Service Accounts for Secure AI Agent Workflows</title><link>https://guatulabs.dev/posts/agent-credential-management-two-tier-service-accounts/</link><guid isPermaLink="true">https://guatulabs.dev/posts/agent-credential-management-two-tier-service-accounts/</guid><description>Managing agent credentials with two-tier service accounts: a secure approach for AI agent orchestration</description><pubDate>Fri, 10 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Infrastructure as Code, but Automated: OpenTofu and GitHub Actions</title><link>https://guatulabs.dev/posts/automating-infrastructure-with-opentofu-and-github-actions/</link><guid isPermaLink="true">https://guatulabs.dev/posts/automating-infrastructure-with-opentofu-and-github-actions/</guid><description>Stop manual applies. Learn how to build a production-ready CI/CD pipeline for your infrastructure using OpenTofu and GitHub Actions.</description><pubDate>Wed, 08 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Equipment Health Scoring: How One Number Made My Operators Stop Checking the Dashboard</title><link>https://guatulabs.dev/posts/equipment-health-scoring-one-number-your-operators-actually-check/</link><guid isPermaLink="true">https://guatulabs.dev/posts/equipment-health-scoring-one-number-your-operators-actually-check/</guid><description>Turn raw sensor data into a single, actionable health score operators actually use</description><pubDate>Tue, 07 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Pod Disruption Budgets: Why kubectl drain Gets Stuck on Longhorn</title><link>https://guatulabs.dev/posts/pod-disruption-budgets-why-kubectl-drain-gets-stuck-on-longhorn/</link><guid isPermaLink="true">https://guatulabs.dev/posts/pod-disruption-budgets-why-kubectl-drain-gets-stuck-on-longhorn/</guid><description>Pod Disruption Budgets can block kubectl drain on Longhorn. Here&apos;s how to avoid it.</description><pubDate>Mon, 06 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Attention Residuals: How Kimi Is Rethinking Transformer Depth</title><link>https://guatulabs.dev/posts/attention-residuals-how-kimi-is-rethinking-transformer-depth/</link><guid isPermaLink="true">https://guatulabs.dev/posts/attention-residuals-how-kimi-is-rethinking-transformer-depth/</guid><description>Kimi&apos;s Attention Residuals replace fixed residual connections with learned layer aggregation. What it means for LLM depth.</description><pubDate>Sun, 05 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Helm fullnameOverride: Naming Sanity in ArgoCD</title><link>https://guatulabs.dev/posts/helm-fullnameoverride-naming-sanity-in-argocd/</link><guid isPermaLink="true">https://guatulabs.dev/posts/helm-fullnameoverride-naming-sanity-in-argocd/</guid><description>Avoid naming chaos in ArgoCD by using Helm fullnameOverride effectively</description><pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate></item><item><title>NVIDIA Container Toolkit: Why the Default Runtime Matters</title><link>https://guatulabs.dev/posts/nvidia-container-toolkit-why-the-default-runtime-matters/</link><guid isPermaLink="true">https://guatulabs.dev/posts/nvidia-container-toolkit-why-the-default-runtime-matters/</guid><description>Fixing default runtime misconfigurations in NVIDIA Container Toolkit for GPU workloads</description><pubDate>Tue, 31 Mar 2026 00:00:00 GMT</pubDate></item><item><title>DOCP/XMP: Why Your Proxmox Node Runs at Half RAM Speed</title><link>https://guatulabs.dev/posts/docp-xmp-why-your-proxmox-node-runs-at-half-ram-speed/</link><guid isPermaLink="true">https://guatulabs.dev/posts/docp-xmp-why-your-proxmox-node-runs-at-half-ram-speed/</guid><description>DOCP/XMP enabled but Proxmox still runs at half RAM speed? Check your kernel and BIOS.</description><pubDate>Sat, 28 Mar 2026 00:00:00 GMT</pubDate></item><item><title>AMD Ryzen C-State Freezes: How `processor.max_cstate=1` Saved My Proxmox Node</title><link>https://guatulabs.dev/posts/amd-ryzen-c-state-freezes-the-processor-max-cstate-1-fix/</link><guid isPermaLink="true">https://guatulabs.dev/posts/amd-ryzen-c-state-freezes-the-processor-max-cstate-1-fix/</guid><description>Ryzen freezes in Proxmox? Learn how to disable deep C-states and stop random system lockups.</description><pubDate>Fri, 27 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Kubernetes Storage on Bare Metal: Longhorn in Practice</title><link>https://guatulabs.dev/posts/kubernetes-storage-on-bare-metal-longhorn-in-practice/</link><guid isPermaLink="true">https://guatulabs.dev/posts/kubernetes-storage-on-bare-metal-longhorn-in-practice/</guid><description>How I configured Longhorn storage for a Kubernetes cluster on bare metal — what worked, what didn&apos;t, and what I&apos;d do differently next time.</description><pubDate>Fri, 27 Mar 2026 00:00:00 GMT</pubDate></item><item><title>GPU Passthrough on Proxmox: A Field Guide to the Gotchas That Bit Me</title><link>https://guatulabs.dev/posts/gpu-passthrough-on-proxmox-gotcha-guide/</link><guid isPermaLink="true">https://guatulabs.dev/posts/gpu-passthrough-on-proxmox-gotcha-guide/</guid><description>The documentation won&apos;t warn you about D3cold bricking, PCIe bus renumbering, or why the NVIDIA device plugin silently fails. This is that guide.</description><pubDate>Thu, 26 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Building MCP Servers with FastMCP: Stop Writing Boilerplate, Start Writing Tools</title><link>https://guatulabs.dev/posts/building-mcp-servers-with-fastmcp/</link><guid isPermaLink="true">https://guatulabs.dev/posts/building-mcp-servers-with-fastmcp/</guid><description>FastMCP makes building Model Context Protocol servers feel like FastAPI. Here&apos;s how to go from zero to a working MCP server in under an hour.</description><pubDate>Sun, 22 Mar 2026 00:00:00 GMT</pubDate></item><item><title>GitOps for Homelabs: How ArgoCD App-of-Apps Scales Your Cluster</title><link>https://guatulabs.dev/posts/gitops-for-homelabs-argocd-app-of-apps/</link><guid isPermaLink="true">https://guatulabs.dev/posts/gitops-for-homelabs-argocd-app-of-apps/</guid><description>How the ArgoCD app-of-apps pattern brings real GitOps discipline to homelab Kubernetes — repo structure, examples, and what I&apos;d do differently.</description><pubDate>Sun, 22 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Multi-Agent AI Systems: Architecture Patterns That Actually Work</title><link>https://guatulabs.dev/posts/multi-agent-ai-systems-architecture-patterns/</link><guid isPermaLink="true">https://guatulabs.dev/posts/multi-agent-ai-systems-architecture-patterns/</guid><description>A practical guide to designing multi-agent AI systems — orchestrator patterns, trust boundaries, and the tradeoffs I learned running agents in production.</description><pubDate>Sun, 22 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Building a Production Homelab: Multi-Node Proxmox Cluster with Kubernetes</title><link>https://guatulabs.dev/posts/building-production-homelab/</link><guid isPermaLink="true">https://guatulabs.dev/posts/building-production-homelab/</guid><description>How I built a multi-node Proxmox cluster running Kubernetes with GPU passthrough, GitOps, and dozens of services — and what broke along the way.</description><pubDate>Sat, 21 Mar 2026 00:00:00 GMT</pubDate></item></channel></rss><!-- b:1787457745037 -->
