# ai-learning-bits > A professional blog on AI coding tools — Claude Code, GitHub Copilot, Codex, Gemini — agent architecture, local models, cost/token savings, and a sortable LLM benchmark. Opinionated, practical writing on AI coding tools, agent architecture, local models, and cost/token discipline. Author: Jakub Jirák (ai@jakubjirak.com). ## Key pages - [LLM coding benchmark](https://ai.jakubjirak.com/benchmark): sortable comparison of frontier and open coding models — context, SWE-bench Verified, and price. - [LLM API price board](https://ai.jakubjirak.com/prices): live price board per 1M tokens (input, cached, output), fetched from OpenRouter. - [Model cost comparison](https://ai.jakubjirak.com/compare): effective per-task cost — token price weighted by SWE-bench Verified solve probability, with a token-burn slider. - [Local-model cost calculator](https://ai.jakubjirak.com/local-cost): self-host tok/s, GPU count, and price per 1M tokens across ~90 cards (buy and rent), next to the API price. - [About](https://ai.jakubjirak.com/about): what this blog is and who writes it. ## Articles - [After word2vec: what Mikolov built next](https://ai.jakubjirak.com/p/mikolov-after-word2vec): word2vec won a NeurIPS Test of Time award and passed 40,000 citations, then quietly stopped being the thing anyone runs. The tool that actually inherited it, and the swerve its author took next, make a better story than the paper everyone quotes. - [DeepSeek in mid-2026: the open frontier that keeps undercutting everyone](https://ai.jakubjirak.com/p/deepseek-in-2026): V4 Pro just landed at 80.6% on SWE-bench Verified (the highest open-weight score on the board, ahead of Opus 4.8) at a fraction of Opus's price, MIT-licensed. The lineup, the price war, and what self-hosting it actually costs. - [Gemini 3.6 Flash: the price cut that's actually a token cut](https://ai.jakubjirak.com/p/gemini-36-flash): Google's new Flash is cheaper per token and higher on every published benchmark, but the number that changes agent-pipeline math is the 17% fewer output tokens it spends doing the same work. - [A local SQL assistant still needs guardrails](https://ai.jakubjirak.com/p/local-sql-assistant-guardrails): Data stays nearby, but generated queries can still be expensive, destructive, or misleading. - [Paged attention is memory management, not magic speed](https://ai.jakubjirak.com/p/paged-attention-local-serving): Better KV-cache allocation raises serving capacity while kernels and workload still determine latency. - [Vision models for document vision: preprocessing before the vision model](https://ai.jakubjirak.com/p/vision-models-documents-preprocessing): Rotation, cropping, contrast, frame selection, and metadata often improve results more cheaply than a larger model. - [AI hardware ROI for a shared team GPU server: the utilization curve](https://ai.jakubjirak.com/p/ai-hardware-roi-shared-gpu-server-utilization): A fast GPU that waits all day can have worse economics than an expensive API used only when needed. - [External GPUs and local LLMs: mind the enclosure](https://ai.jakubjirak.com/p/external-gpu-local-llm): Thunderbolt makes capacity portable, but power, bandwidth, sleep, and driver behavior shape the experience. - [Swap is a warning light for interactive local inference](https://ai.jakubjirak.com/p/swap-local-llm-warning): A model may remain technically alive while memory pressure turns every token into an I/O event. - [Commercial vs free models for customer-support automation: tools and integration quality](https://ai.jakubjirak.com/p/commercial-vs-free-customer-support-tool-ecosystem): Native tools save glue code, while open stacks preserve portability and make boundaries inspectable. - [OCR models for tables and statements: structured OCR with provenance](https://ai.jakubjirak.com/p/ocr-models-tables-statements-structured-provenance): Every consequential field should point back to the pixels that support it. - [ThinkingCap: Qwen3.6-27B with half the thinking tokens](https://ai.jakubjirak.com/p/thinkingcap-qwen36-27b): BottleCap AI finetuned Qwen3.6-27B to reason in half the tokens without touching answer quality. I dug into the numbers, and the interesting part is where the savings don't come from. - [From the RTX lab to the H100s: what transfers and what doesn't](https://ai.jakubjirak.com/p/rtx-lab-to-h100-prod): Our models earn their way from Blackwell test boxes to H100 production through a checklist. Quality verdicts survive the trip; performance numbers, TP configs, and compiled engines do not. - [Hopper vs Blackwell: notes from running both generations](https://ai.jakubjirak.com/p/hopper-vs-blackwell): We serve on Hopper and experiment on Blackwell, which makes the architecture comparison a daily lived experience rather than a spec-sheet exercise. What actually separates the generations, and which one to buy in 2026. - [Version prompts like small programs](https://ai.jakubjirak.com/p/prompt-versioning-small-team): A prompt change is a behavior change, even when it looks like copy editing. - [Put IoT devices and AI services on deliberate networks](https://ai.jakubjirak.com/p/iot-vlan-local-ai): Segmentation limits compromised devices while still allowing the controller to reach exactly what it needs. - [Commercial vs free models for coding assistants: the real cost per completed task](https://ai.jakubjirak.com/p/commercial-vs-free-coding-real-cost): Free tokens and cheap hardware can both become expensive after retries, review, and operations. - [OCR models for invoices and receipts: capture quality before recognition](https://ai.jakubjirak.com/p/ocr-models-invoices-receipts-capture-quality): Focus, exposure, perspective, resolution, and compression set an upper bound no OCR prompt can repair. - [The server around the GPUs: DL380 Gen11 host tuning notes](https://ai.jakubjirak.com/p/dl380-h100-host-tuning): The H100s get the glory, but NUMA pinning, BIOS power profiles, FC storage reality, and a kill-joy about fan noise are what made them fast. Field notes from tuning the box itself. - [Fine-tuning on the office H100 pair: what two 96 GB cards buy you](https://ai.jakubjirak.com/p/h100-lora-finetuning): LoRA on 70B-class models is an evening job on two H100s. Full fine-tunes stop at 8B. Where the memory actually goes, a minimal axolotl config, and why data prep is still 80% of the work. - [Why our test bench is Blackwell RTX, not more H100s](https://ai.jakubjirak.com/p/blackwell-rtx-test-bench): We put two RTX PRO 6000 Blackwell cards next to our H100 NVL pair. Same 96 GB per card, a fraction of the price, half the bandwidth, and that trade is exactly right for a test bench. - [NVFP4 on the Blackwell test boxes: quantization as a pipeline, not an event](https://ai.jakubjirak.com/p/blackwell-nvfp4-pipeline): Our RTX PRO 6000 test bench has native FP4 and our H100s don't. So the test boxes became a quantization lab, and quantization became a repeatable pipeline with evals, not a one-off conversion you trust forever. - [Sizing a unified-memory Mac for local models](https://ai.jakubjirak.com/p/unified-memory-mac-sizing): Why advertised memory is not model memory, and how to choose 24, 36, 64, or 128 GB without guessing. - [Use mmWave presence before adding an AI camera](https://ai.jakubjirak.com/p/mmwave-presence-home-ai): For occupancy, a private sensor often answers the question more directly than computer vision. - [GLM-5.1: Long context without the token landfill](https://ai.jakubjirak.com/p/glm-51-current-long-context): A large window is capacity, not permission to resend every available document. - [Vision models for chart and diagram understanding: reasoning across multiple images](https://ai.jakubjirak.com/p/vision-models-charts-diagrams-multiple-images): Image order, identity, duplicated views, and changing scenes make multi-image prompts a data-association problem. - [AI hardware ROI for an edge or SBC AI fleet: renting GPU capacity versus buying](https://ai.jakubjirak.com/p/ai-hardware-roi-edge-sbc-fleet-rent-or-buy): Rental converts capacity risk into hourly cost; ownership converts hourly cost into utilization risk. - [Best-value coding models for a team GPU pair](https://ai.jakubjirak.com/p/h100-coding-models-value): Five models fit on our H100 pair. Only some of them are worth the electrons. The fun-per-dollar ranking, why MoE wins team serving, and where we still pay for hosted APIs. - [The H100s work nights: our overnight batch queue](https://ai.jakubjirak.com/p/h100-overnight-batch): From 19:00 to 07:00 our H100 pair stops answering people and starts chewing through backlogs. A directory of job files, vLLM offline mode, and the cheapest tokens we will ever produce. - [MIG-slicing one H100 so the whole team stops fighting over it](https://ai.jakubjirak.com/p/h100-mig-team-slices): We kept GPU 0 whole for the serving model and carved GPU 1 into MIG slices: embeddings, Whisper, a CI model, and a dev playground, each with hard isolation. Here is the layout and the fine print. - [Hybrid search is a practical default for technical RAG](https://ai.jakubjirak.com/p/hybrid-search-local-rag): Lexical search catches exact identifiers while embeddings recover paraphrases and concepts. - [Measure quality-adjusted token speed](https://ai.jakubjirak.com/p/quality-adjusted-token-speed): A fast model that needs retries or produces unusable output is not the faster workflow. - [Vision models for document vision: local, hosted, and hybrid vision deployment](https://ai.jakubjirak.com/p/vision-models-documents-local-hybrid-deployment): Local vision protects data and predictable volume; hosted models provide elastic capacity and a higher capability ceiling. - [AI hardware ROI for a used-GPU inference build: comparing the complete purchase price](https://ai.jakubjirak.com/p/ai-hardware-roi-used-gpu-build-purchase-price): The GPU sticker is not the price of a working inference system. - [vLLM on two H100s: the config that serves our whole team](https://ai.jakubjirak.com/p/h100-vllm-team-serving): The exact flags, the systemd unit, the Prometheus alerts, and the honest throughput numbers behind the single endpoint our whole team codes against every day. - [2 TB of RAM changes which models you can run](https://ai.jakubjirak.com/p/h100-moe-2tb-offload): Everyone stares at the H100s and forgets the DL380 has 2 TB of DDR5 one PCIe hop away. Expert offload, KV spill, and RAM-staged models: what host memory actually buys you. - [Metal-backed llama.cpp or MLX?](https://ai.jakubjirak.com/p/metal-vs-mlx-local-models): Both are good Apple Silicon paths; model availability and workflow integration usually decide. - [Size the PSU for inference, transients, and efficient idle](https://ai.jakubjirak.com/p/psu-efficiency-local-ai): Oversizing and undersizing both carry costs when a machine alternates between waiting and heavy accelerator load. - [Commercial vs free models for document extraction: latency, throughput, and queues](https://ai.jakubjirak.com/p/commercial-vs-free-document-extraction-latency-throughput): A local model avoids the WAN; a commercial fleet avoids waiting behind one busy GPU. - [OCR models for technical documents and labels: handwriting mixed with printed text](https://ai.jakubjirak.com/p/ocr-models-technical-documents-handwriting-mixed-text): Printed labels and handwritten values need different recognition assumptions and confidence thresholds. - [The sizing math for a 2× H100 96GB pair: what actually fits](https://ai.jakubjirak.com/p/h100-pair-what-fits): 192 GB of HBM3 sounds like a lot until you do the arithmetic. Weights, KV cache, and activation budgets for every model class we tried on our NVLink-bridged pair. - [Update models across an air gap without improvising](https://ai.jakubjirak.com/p/air-gapped-model-updates): Manifests, checksums, and staged media make offline model operations routine. - [Tokens per watt makes sense on small boards](https://ai.jakubjirak.com/p/tokens-per-watt-sbc): Low absolute speed can still be efficient for queued household jobs and always-on services. - [Commercial vs free models for coding assistants: reliability and exit strategy](https://ai.jakubjirak.com/p/commercial-vs-free-coding-reliability-exit): Provider outages and local hardware failures are different risks; neither architecture is automatically resilient. - [OCR models for invoices and receipts: an OCR evaluation that predicts production](https://ai.jakubjirak.com/p/ocr-models-invoices-receipts-evaluation): Average character accuracy hides catastrophic errors in dates, totals, units, and identifiers. - [Routing your agent's spend down with OpenRouter](https://ai.jakubjirak.com/p/openrouter-cost-routing): Cascading cheap models before expensive ones, pooling rate limits across providers, and the one thing OpenRouter routing quietly breaks for chatty agents. - [The overlooked hardware upgrade: a small UPS](https://ai.jakubjirak.com/p/ups-for-home-llm-server): Graceful shutdown beats rebuilding indexes after a two-second power cut. - [Use MQTT as the narrow bridge to local AI](https://ai.jakubjirak.com/p/mqtt-ai-event-bus): A topic-based event bus decouples sensors and inference when payloads and permissions stay disciplined. - [Kimi K2.5: Long context without the token landfill](https://ai.jakubjirak.com/p/kimi-k25-current-long-context): A large window is capacity, not permission to resend every available document. - [Vision models for product-image analysis: preprocessing before the vision model](https://ai.jakubjirak.com/p/vision-models-product-images-preprocessing): Rotation, cropping, contrast, frame selection, and metadata often improve results more cheaply than a larger model. - [Containers rarely cause the local inference slowdown](https://ai.jakubjirak.com/p/container-gpu-overhead): Driver compatibility, storage mounts, CPU limits, and configuration mistakes matter more than container overhead. - [Detect water anomalies before asking an LLM](https://ai.jakubjirak.com/p/water-leak-anomaly-detection): Flow thresholds, valve states, and occupancy provide strong signals for leaks with explainable behavior. - [Gemini 3.5 Flash: Migrating without changing behavior by accident](https://ai.jakubjirak.com/p/gemini-35-flash-migration): A model swap changes templates, defaults, tools, output shape, and failure modes—not just an identifier. - [MiniMax M2.7: The cost and latency worksheet](https://ai.jakubjirak.com/p/minimax-m27-cost-latency): Token prices, reasoning effort, caching, retries, and review time belong in one calculation. - [Vision models for UI and screenshot understanding: video through frame sampling](https://ai.jakubjirak.com/p/vision-models-ui-screenshots-video-frame-sampling): A vision model sees selected evidence; poor frame sampling can make the decisive moment nonexistent. - [AI hardware ROI for a used-GPU inference build: valuing productivity without inventing savings](https://ai.jakubjirak.com/p/ai-hardware-roi-used-gpu-build-productivity-value): Time saved becomes ROI only when it reduces cost, increases valuable output, or removes a real constraint. - [OpenRouter: one API key for every model you actually use](https://ai.jakubjirak.com/p/openrouter-unified-api): A single endpoint, model IDs instead of five separate SDKs, and automatic failover when a provider has a bad day: the setup that replaced four API keys on my machine. - [Where Ollama stops being the right server](https://ai.jakubjirak.com/p/ollama-production-boundary): Ollama is excellent glue; concurrency, isolation, and scheduling eventually demand more machinery. - [Tokenizer mismatch breaks budgets quietly](https://ai.jakubjirak.com/p/tokenizer-mismatch-local-api): Counting with one tokenizer and generating with another corrupts limits, chunking, and cost estimates. - [Prompt, retrieve, or fine-tune?](https://ai.jakubjirak.com/p/fine-tune-vs-rag-vs-prompt): Use prompts for instructions, retrieval for changing facts, and tuning for durable behavior—with overlap handled deliberately. - [Commercial vs free models for tool-using agents: the real cost per completed task](https://ai.jakubjirak.com/p/commercial-vs-free-agents-real-cost): Free tokens and cheap hardware can both become expensive after retries, review, and operations. - [AI hardware ROI for a personal AI workstation: five-year total cost of ownership](https://ai.jakubjirak.com/p/ai-hardware-roi-personal-workstation-total-cost-ownership): Purchase price starts the comparison; energy, maintenance, downtime, and replacement finish it. - [Time to first token is a pipeline metric](https://ai.jakubjirak.com/p/time-to-first-token-local): Loading, queueing, tokenization, prompt ingestion, and network hops all contribute to the pause. - [When a distilled model is the better local model](https://ai.jakubjirak.com/p/distilled-model-local-value): Distillation can preserve a useful behavior profile at a size that stays resident and responsive. - [Commercial vs free models for RAG systems: the operational burden](https://ai.jakubjirak.com/p/commercial-vs-free-rag-operations): A model endpoint is a service with upgrades, capacity, monitoring, incidents, and recovery. - [OCR models for forms and handwriting: languages, scripts, and mixed alphabets](https://ai.jakubjirak.com/p/ocr-models-forms-handwriting-languages-scripts): Language detection, diacritics, transliteration, and visually similar scripts can change names and identifiers. - [Three months of Headroom sitting between me and the model](https://ai.jakubjirak.com/p/headroom-field-notes): I wired a compression proxy into my agent in April and mostly forgot it was there. The stats page says 12.4 million tokens never left my machine. Field notes: what broke, what didn't, and the one habit that made it stick. - [A month in caveman mode](https://ai.jakubjirak.com/p/caveman-after-a-month): I turned on the terse-output skill as a joke during a long debugging night and never turned it back off. Four weeks later my transcripts are a third the size and, uncomfortably, easier to read. Notes from living with it. - [Ponytail rewired how I review agent code](https://ai.jakubjirak.com/p/ponytail-changed-my-diffs): The lazy-senior-dev skill cut my agent's diffs by a third and started arguments in code review we should have been having for years. Two of those arguments it lost. A review-side field report. - [I stopped grepping my own codebase](https://ai.jakubjirak.com/p/code-graph-for-review): A tree-sitter knowledge graph over the repo turned code review from file-stuffing into queries. Reviews that used to pull sixty thousand tokens of context now run on six. The workflow, the numbers, and the two ways the graph lies. - [The full token stack, six weeks in: a field report](https://ai.jakubjirak.com/p/token-stack-field-report): Graph-first retrieval, Headroom on input, Caveman on prose, Ponytail on code. I ran all four on production work for six weeks and kept receipts. The bill dropped roughly 8×. The surprise was which layer mattered most. - [Mistral in mid-2026: the lineup, the bet, the gap](https://ai.jakubjirak.com/p/mistral-in-2026): Europe's frontier lab ships a full stack now: Large, Medium 3.5, an Apache-2.0 Small, and two coding specialists. A field guide to what each one is for, and an honest look at where the benchmark silence gets loud. - [Devstral: the open coding agent model that earns its keep](https://ai.jakubjirak.com/p/devstral-agentic-coding): Mistral's agentic-coding specialist is the rare open-weights model built for harnesses, not chat. The 25.12 revision with 262k context runs my open-CLI stack surprisingly well, inside a specific envelope you should know before you commit. - [Mistral Small: the most boring model I recommend the most](https://ai.jakubjirak.com/p/mistral-small-workhorse): Fifteen cents per million tokens, Apache-2.0, 262k context. Small 26.03 wins no benchmarks and appears in no keynotes. It just quietly does 80% of my LLM work for a rounding error. An argument for the unglamorous tier. - [The sovereignty trade: what picking Mistral actually buys you](https://ai.jakubjirak.com/p/mistral-eu-sovereignty): For a growing slice of European engineering, model choice is made by lawyers before engineers get a vote. What EU-native AI genuinely buys (data residency, on-prem weights, regulatory legibility) and what it still costs in capability and ecosystem. - [SpaceX, xAI, and the orbital compute bet](https://ai.jakubjirak.com/p/spacex-ai-orbital-compute): The wildest infrastructure story in AI right now: putting the data center in orbit, where the sun never sets and the launch manifest is the supply chain. An engineer's read on what's physics, what's economics, and what's theater. - [The caveman prompt cookbook: 250 before-and-after examples](https://ai.jakubjirak.com/p/caveman-prompt-cookbook): Every caveman question I get reduces to 'what do I actually type?' Here's the answer at reference length: 250 real prompts across backend, frontend, UI, UX, ops, and testing. Polite version, compressed version, and exactly what the compression deleted. - [Nobody reads the transcript: meeting AI is an action-item problem](https://ai.jakubjirak.com/p/meeting-actions-not-transcripts): A 4000-word transcript that nobody opens is worth nothing. The value is the three action items with owners that actually reach a tracker someone checks. I built that pipe, watched it work, then watched the tickets die in an app no one opened. - [What meeting AI still gets wrong (accents, jargon, and who said what)](https://ai.jakubjirak.com/p/notetaker-accuracy-reality): The transcription is good until it hits my Czech-accented English, a product codename, or two people talking over each other. And diarization (who actually said it) is still mediocre everywhere, including on my own machine. Trust the gist; verify quotes and owners. - [Cursor or VS Code with Copilot: is leaving the mothership worth it?](https://ai.jakubjirak.com/p/cursor-vs-vscode-copilot): I have switched between Cursor and stock VS Code with Copilot three times in two years. Here is the honest fork math: what the tighter integration buys, what the update tax costs, and where I finally landed for client versus personal work. - [Every AI IDE is becoming the same shape](https://ai.jakubjirak.com/p/agentic-ide-convergence): Cursor, Google Antigravity, and JetBrains Air started from opposite ends and are landing in the same place: the IDE built around the agent, not the other way round. The interesting fights are now about supervision, isolation, and who owns the model. - [ACP: the quiet protocol that lets any agent live in any editor](https://ai.jakubjirak.com/p/acp-the-agent-standard): MCP gave agents a standard way to reach tools. ACP, pushed by JetBrains and Zed, does the same for the editor itself: any agent in any editor. I was a protocol skeptic, and Air changed my mind partway. - [Quantize the KV cache before shrinking the model](https://ai.jakubjirak.com/p/kv-cache-quantization): For long-context workloads, cache precision can be the cleaner memory lever. - [Use edge vision to watch a garden selectively](https://ai.jakubjirak.com/p/garden-camera-edge-ai): Timelapse, animal detection, and plant monitoring need different cameras, schedules, and models. - [MiniMax M2.7: Long context without the token landfill](https://ai.jakubjirak.com/p/minimax-m27-long-context): A large window is capacity, not permission to resend every available document. - [Vision models for product-image analysis: local, hosted, and hybrid vision deployment](https://ai.jakubjirak.com/p/vision-models-product-images-local-hybrid-deployment): Local vision protects data and predictable volume; hosted models provide elastic capacity and a higher capability ceiling. - [Rolling Junie out to a team without the chaos](https://ai.jakubjirak.com/p/junie-team-rollout): One developer with Junie is a productivity story; ten developers with ten private styles is a review nightmare. The rollout playbook: a shared guidelines file, one review bar, deliberate first tasks, and honest measurement. - [When Codex is the right tool (and when it isn't)](https://ai.jakubjirak.com/p/codex-when-it-wins): Codex's real edges are unattended grinding in a sandbox and PR-native GitHub integration; its real weakness is mid-task steering. Decision rules by task shape, because brand loyalty is a lousy engineering criterion. - [Multimodal in the terminal: screenshots, PDFs, and Gemini CLI](https://ai.jakubjirak.com/p/gemini-cli-multimodal): Screenshots, PDFs, and whiteboard photos are first-class input to Gemini CLI, and almost nobody uses them. Two workflows that pay off immediately (bug-from-screenshot and spec-to-scaffold) plus the token tax that comes with pixels. - [Managing Claude Code's context budget like memory](https://ai.jakubjirak.com/p/claude-code-context-budget): Claude Code's context window is a heap: every file read, tool result, and CLAUDE.md line is an allocation, and nothing frees itself. Measure it, compact it, clear it, or watch quality degrade mid-session. - [Before you trust an open-source agent with your shell](https://ai.jakubjirak.com/p/vetting-open-agents): An agent CLI runs commands, reads secrets, and talks to the network. And open source alone proves nothing. The one-hour audit worth doing before granting shell access, and why the supply chain is the scarier half. - [The meeting-notetaker landscape, mapped by someone who churned through six](https://ai.jakubjirak.com/p/meeting-notetakers-2026): Six notetakers in eight months, one client that could not send audio to a US cloud, and a slow realization that the summaries barely differ. Here is the map I wish I had before I started churning. - [Granola and the notepad that writes the second half for you](https://ai.jakubjirak.com/p/granola-augmented-notes): The augmented-notepad idea flipped how I take notes: type a few thin lines during the call, let it capture audio locally and finish the thought afterward. It fit my brain for standups and failed me when I needed a verbatim quote. - [Cursor has two brains: knowing when to Tab and when to delegate](https://ai.jakubjirak.com/p/cursor-agent-vs-tab): Cursor's Tab and its Composer agent are not two settings of one dial; they are two different jobs. Here is how I decide which one to reach for mid-task, and the mistake I still make when I pick wrong. - [The agent that opens a browser to check its own work](https://ai.jakubjirak.com/p/antigravity-browser-loop): The genuinely new idea in Antigravity: the agent opens a browser, clicks through what it built, and verifies the result before calling the job done. When that loop works, it's the future. When it doesn't, it lies to itself. - [Air, Junie, or plain IntelliJ: untangling JetBrains' three AI things](https://ai.jakubjirak.com/p/air-vs-junie): AI Assistant, Junie, and now Air: JetBrains ships three different AI things and the names help nobody. Here's the map I wish someone had handed me, plus who should actually use which. - [When cross-vendor orchestration isn't worth it](https://ai.jakubjirak.com/p/cross-vendor-orchestration-limits): Three models reviewing each other sounds bulletproof until you hit the latency bill, the correlated failure mode, and the day one vendor's API just times out. - [Orange Pi 5 as a low-power AI node](https://ai.jakubjirak.com/p/orange-pi-5-ai-node): The RK3588 offers attractive CPU, memory, and NPU hardware, but software support decides the useful workload. - [GPT-5.6: Migrating without changing behavior by accident](https://ai.jakubjirak.com/p/gpt-56-family-migration): A model swap changes templates, defaults, tools, output shape, and failure modes—not just an identifier. - [Vision models for camera-event understanding: prompts grounded in visible evidence](https://ai.jakubjirak.com/p/vision-models-camera-events-grounded-prompting): A good vision prompt separates observation, inference, uncertainty, and the requested action. - [AI hardware ROI for an Apple Silicon local-model system: electricity and cooling economics](https://ai.jakubjirak.com/p/ai-hardware-roi-apple-silicon-electricity-cooling): Board power is not wall energy, and wall energy is not the entire cooling cost. - [Junie's quota model: what an IDE agent costs in practice](https://ai.jakubjirak.com/p/junie-quota-economics): JetBrains bundles AI quota into its subscriptions, and agent work burns it far faster than chat ever did. How to reason about the shape of the cost, and how to stop the meter from managing you. - [The model dial: matching Codex's brain to the task](https://ai.jakubjirak.com/p/codex-model-dial): Codex ships two cost levers most people never touch: model tier and reasoning effort. Matching them to task shape is the difference between a sane bill and paying deliberation prices for grep-shaped work. - [Checkpoints, sandboxes, and trust in Gemini CLI](https://ai.jakubjirak.com/p/gemini-cli-safety): Gemini CLI stacks approvals, checkpoints, and sandboxes, and each layer catches a failure class the others miss. How the layers actually work, where each one leaks, and why YOLO mode is named as a warning. - [The permission model: Claude Code's most underrated feature](https://ai.jakubjirak.com/p/claude-code-permissions): Everyone notices the permission prompts and nobody studies the permission system. Allow and deny rules in settings.json are how you build a per-repo trust profile instead of clicking allow until the prompts stop meaning anything. - [Where does your meeting audio actually go?](https://ai.jakubjirak.com/p/meeting-notes-privacy): Follow the audio, not the feature list. A meeting recording is a file with your client's voice in it, and the only question that matters is whose disks it lands on and what they're allowed to do with it after. - [Rolling your own meeting notes when the vendors are a no](https://ai.jakubjirak.com/p/self-hosted-meeting-notes): When a compliance clause deletes your entire shortlist of meeting tools, there's a fallback the SaaS market would rather you forget: whisper.cpp, a local summarizer, and a weekend. It buys total custody and charges you in maintenance. - [Cursor rules that actually steer (and the ones that just decorate)](https://ai.jakubjirak.com/p/cursor-rules-that-work): My .cursor/rules file grew to 900 lines and quietly made the agent worse. The fix was deleting most of it. What actually earns a rule, what just decorates, and why scope beats volume every single time. - [Antigravity's Agent Manager: mission control for parallel agents](https://ai.jakubjirak.com/p/antigravity-agent-manager): Antigravity lets you run several agents at once from one mission-control view. That sounds like pure upside, and it is, right up until you notice you've quietly made yourself the bottleneck. Field notes from the week I over-launched. - [Air's task model: every job gets its own sandbox](https://ai.jakubjirak.com/p/air-tasks-and-worktrees): In Air, every task runs in its own isolated workspace: a local checkout, a git worktree, a Docker container. I spent a decade fighting parallel work on a single branch. This is the fix I didn't know I wanted. - [Find the token leaks in an agent loop](https://ai.jakubjirak.com/p/agent-loop-token-leaks): Repeated tool schemas, verbose observations, and duplicated history can dominate the actual task. - [RoPE scaling can extend context and degrade it](https://ai.jakubjirak.com/p/rope-scaling-local-models): Configuration overrides may make a model accept more tokens without preserving useful long-range behavior. - [Commercial vs free models for tool-using agents: reliability and exit strategy](https://ai.jakubjirak.com/p/commercial-vs-free-agents-reliability-exit): Provider outages and local hardware failures are different risks; neither architecture is automatically resilient. - [AI hardware ROI for a personal AI workstation: pricing risk and downtime](https://ai.jakubjirak.com/p/ai-hardware-roi-personal-workstation-risk-downtime): A cheap single box becomes expensive when its failure stops a workflow with no usable fallback. - [Gemini Code Assist or Gemini CLI? Google ships both](https://ai.jakubjirak.com/p/gemini-code-assist-vs-cli): Google ships an IDE agent and a terminal agent on the same models, and teams keep asking which to standardize on. Wrong question: the surfaces are converging, and the choice is per task, not per team. - [Parallel Claude Code sessions with git worktrees](https://ai.jakubjirak.com/p/claude-code-worktrees): One repo, several git worktrees, one Claude Code session in each: parallel agent work without cloud infrastructure. The catch is that merging (not writing) becomes your job description. - [Open CLI or vendor CLI? The honest trade-off table](https://ai.jakubjirak.com/p/open-cli-vs-vendor): Vendor CLIs sell a co-tuned harness and someone to call; open CLIs sell model freedom, auditability, and immunity to rug-pulls. The honest trade-off table, and why harness tuning matters more than the feature lists admit. - [Jamie: the meeting notetaker that never joins the meeting](https://ai.jakubjirak.com/p/jamie-ai-notetaker): I got tired of a robot participant sliding into client 1:1s and announcing itself. Jamie skips that entirely: it grabs the audio on my Mac, no bot in the call, and it even catches the in-person meetings the others never could. - [The real split in meeting AI: a bot in the call or audio on your device](https://ai.jakubjirak.com/p/bot-vs-botless-notetakers): Every meeting-notes tool argument is really one architecture question wearing a marketing costume: does a bot join your call, or does software on your laptop listen to the audio? Almost everything else follows from that. - [Cursor in 2026: still the one to beat](https://ai.jakubjirak.com/p/cursor-in-2026): I spent eighteen months trying to leave Cursor and kept coming back for one feature. Here is why the incumbent AI editor still holds the crown in 2026, what the fork actually costs me, and where the agent-first rivals land. - [A week inside Google Antigravity](https://ai.jakubjirak.com/p/antigravity-first-look): Google's agent-first IDE has been in public preview since November, and I finally gave it a real week on client work. Here's what surprised me, what still feels like a preview, and the question my client's security lead asked first. - [JetBrains Air: an IDE built around the agent, on Fleet's bones](https://ai.jakubjirak.com/p/jetbrains-air-first-look): JetBrains built a whole new IDE around the agent instead of stapling a chat box to IntelliJ, and they built it on the corpse of Fleet. I gave it a week on real Kotlin work. Here's what stuck. - [Orchestrating ChatGPT and Gemini from Claude Fable 5](https://ai.jakubjirak.com/p/fable-5-orchestrating-chatgpt-gemini): Claude Fable 5 as the lead agent, GPT-5.6 and Gemini 3.1 Pro as tools it calls out to: what the wiring actually looks like and why I bother. - [Semantic caching needs a narrow blast radius](https://ai.jakubjirak.com/p/llm-cache-semantic-danger): Similar questions are not always equivalent, especially when answers depend on time, identity, or permissions. - [Memory channels matter for CPU LLM inference](https://ai.jakubjirak.com/p/ddr5-channels-cpu-llm): Capacity lets a model load; aggregate bandwidth determines how quickly weights can be revisited. - [Commercial vs free models for customer-support automation: quality ceiling versus sufficient quality](https://ai.jakubjirak.com/p/commercial-vs-free-customer-support-quality-ceiling): The strongest answer is valuable only when the workflow benefits from the difference. - [OCR models for tables and statements: preprocessing for OCR models](https://ai.jakubjirak.com/p/ocr-models-tables-statements-preprocessing): Deskewing and contrast can help recognition; aggressive cleanup can manufacture or erase characters. - [MCP in Junie: plugging your stack into JetBrains' agent](https://ai.jakubjirak.com/p/junie-mcp): Junie speaks MCP, which means your issue tracker, database, and internal APIs can sit inside the agent's reach. Here's the setup pattern, why the cross-vendor standard matters, and the surface area you're quietly signing up for. - [Codex in the editor: the IDE extension bridges two worlds](https://ai.jakubjirak.com/p/codex-ide-extension): The Codex IDE extension is the same agent on a surface built for reviewing diffs, not just producing them. Where it beats the CLI, where the terminal stays king, and why the answer is both. - [Open CLIs + local models: the fully sovereign coding stack](https://ai.jakubjirak.com/p/open-cli-local-models): Aider, OpenCode, or Goose pointed at a local model through Ollama or llama.cpp: the fully sovereign stack is real in 2026. What it genuinely handles, where it still breaks, and what hardware honesty looks like. - [Time travel debugging: replaying yesterday's failure](https://ai.jakubjirak.com/p/langgraph-time-travel): A customer's ticket failed on Tuesday; I forked their thread and reproduced it exactly on Thursday. Checkpoint history is a time machine, as long as you remember it rewinds your state, not the world, and you stub the node that sends email. - [The inference box in my closet: a year later](https://ai.jakubjirak.com/p/homelab-llm-server): A used 3090 in a hallway closet, one year in: what it cost, what it serves, eleven days of downtime, two honest regrets, and why I'd build it again anyway. - [Do not spend inference on deterministic work](https://ai.jakubjirak.com/p/stop-using-llm-for-deterministic-work): Regex, parsers, SQL, and ordinary code should surround the model, not be replaced by it. - [Occupancy-aware HVAC without camera surveillance](https://ai.jakubjirak.com/p/occupancy-aware-hvac): Door, motion, mmWave, and device-presence signals can control comfort while revealing less about household life. - [Qwen 3.6 Plus: Long context without the token landfill](https://ai.jakubjirak.com/p/qwen-36-plus-long-context): A large window is capacity, not permission to resend every available document. - [OCR models for scanned archives: tables and key-value association](https://ai.jakubjirak.com/p/ocr-models-scanned-archives-tables-key-values): Recognizing tokens is easier than proving which label, column, row, and unit they belong to. - [Gemini CLI in CI: the free tier meets GitHub Actions](https://ai.jakubjirak.com/p/gemini-cli-ci): Gemini CLI is a well-behaved Unix citizen, which makes it dangerously easy to wire into GitHub Actions. The patterns that pay off, the guardrails unattended runs demand, and where the free tier quietly falls short in CI. - [Plan mode: making the agent read before it writes](https://ai.jakubjirak.com/p/claude-code-plan-mode): Plan mode locks Claude Code into read-only exploration until you approve an approach. It looks like a speed bump; it is actually the cheapest place in the whole workflow to catch a wrong decision. - [Qwen Code: what a Gemini CLI fork tells us about open harnesses](https://ai.jakubjirak.com/p/qwen-code-cli): Qwen Code is Gemini CLI forked, re-pointed at Qwen's coder models, and retuned where it counts. It is the cleanest evidence yet that the agent harness is becoming a commodity, and that model-harness fit is the real product. - [Output parsers: retry, fix, or fail loudly](https://ai.jakubjirak.com/p/langchain-output-parsers): OutputFixingParser once turned a malformed invoice total into a clean, plausible, completely wrong number that sat in a client's export for days. My ladder now: constrain first, retry once, then fail loudly to a human. - [Long-term memory in LangGraph: the Store, and what I regret storing](https://ai.jakubjirak.com/p/langgraph-long-term-memory): The Store gave my assistant memory across threads in a day. Preference memory earned its keep immediately. The raw conversation snippets I also stored came back three weeks later as stale facts, delivered with total confidence. - [LM Studio vs Ollama: GUI comfort vs pipeline glue](https://ai.jakubjirak.com/p/lmstudio-vs-ollama): I've run both on the same MacBook for a year: LM Studio to audition models, Ollama to put the winners to work. The only real fight they ever had was over a port. - [The LoRA I trained on a weekend (and what it fixed)](https://ai.jakubjirak.com/p/lora-fine-tune-at-home): Two days, the closet 3090, and 1,660 pairs of my own edits: a weekend QLoRA that made an 8B write in our house format. What it fixed, what it refused to fix, and the forgetting scare in the middle. - [A Raspberry Pi cluster is not one large LLM computer](https://ai.jakubjirak.com/p/raspberry-pi-cluster-llm): Clusters teach orchestration and run parallel jobs well, but they do not pool memory bandwidth for free. - [Grok 4.5: Migrating without changing behavior by accident](https://ai.jakubjirak.com/p/grok-45-migration): A model swap changes templates, defaults, tools, output shape, and failure modes—not just an identifier. - [Vision models for chart and diagram understanding: choosing the right vision model](https://ai.jakubjirak.com/p/vision-models-charts-diagrams-model-selection): A vision leaderboard cannot tell you whether the model reads your images at your resolution. - [AI hardware ROI for an edge or SBC AI fleet: five-year total cost of ownership](https://ai.jakubjirak.com/p/ai-hardware-roi-edge-sbc-fleet-total-cost-ownership): Purchase price starts the comparison; energy, maintenance, downtime, and replacement finish it. - [IDE-native vs terminal-native: Junie against the CLI agents](https://ai.jakubjirak.com/p/junie-vs-terminal-agents): Forget model-versus-model. The real architectural split in coding agents is the surface: IDE-native like Junie, or terminal-native like Claude Code. Each buys you something the other structurally can't. - [How Codex keeps itself in a box](https://ai.jakubjirak.com/p/codex-sandbox-internals): Codex assumes its own model will eventually do something dumb, so it builds kernel-level walls: OS sandboxing, workspace-scoped writes, network off by default. Why that last choice carries the security load, and what the box cannot save you from. - [claude -p: headless mode turns the agent into infrastructure](https://ai.jakubjirak.com/p/claude-code-headless-ci): The -p flag strips away the chat and leaves a Unix program: prompt in, JSON out, exit code. That is the piece of Claude Code you can wire into CI, cron, and GitHub, if you cap its blast radius. - [Caching LLM calls: the free lunch with a stale aftertaste](https://ai.jakubjirak.com/p/langchain-caching-costs): Response caching cut my CI bill by roughly 70% and made dev loops feel free. It also served nine days of answers from a prompt I'd already replaced. Both facts belong in the same article. - [Subgraphs: composing agents like functions (almost)](https://ai.jakubjirak.com/p/langgraph-subgraphs): I extracted a research subgraph and reused it across two products. It really is composition, minus the part where you write and maintain the state-mapping glue by hand. - [Tracing graphs: watching state mutate is the real debugger](https://ai.jakubjirak.com/p/langgraph-tracing): For a graph the debugger is a diff: the change in state between two nodes. I spent an afternoon blaming the model for dropping evidence before a state diff showed me a reducer was silently overwriting the list. - [Local vision models earn their disk space](https://ai.jakubjirak.com/p/ollama-vision-local): I fed 531 receipt photos to a local vision model expecting a toy and got an accountant. Where local vision genuinely earns its keep, the resolution limit that wrecked a night's run, and why offline was the whole point. - [Speculative decoding: free speed with strings attached](https://ai.jakubjirak.com/p/speculative-decoding-local): A small draft model guesses, the big one checks, and my 3090 writes code somewhere between 1.6× and 2.2× faster. Then I left it on for prose and made everything slower. Here's the fine print. - [Split the stack: local embeddings, cloud generation (or the reverse)](https://ai.jakubjirak.com/p/embeddings-vs-generation-local): Two clients, same month, opposite architectures: one generated locally and embedded in the cloud, the other the exact reverse. Both were right, and the deciding matrix is smaller than you'd think. - [Hardware for a local voice pipeline](https://ai.jakubjirak.com/p/local-voice-pipeline-hardware): Speech recognition, diarization, generation, and synthesis compete differently for CPU, GPU, and memory. - [Session affinity reduces cache misses and creates failure domains](https://ai.jakubjirak.com/p/session-affinity-local-llm): Routing a conversation back to one worker improves reuse but needs explicit recovery behavior. - [Vision models for document vision: structured output from images](https://ai.jakubjirak.com/p/vision-models-documents-structured-output): JSON syntax is the easy part; visual grounding and semantic validation decide whether the record is usable. - [AI hardware ROI for a shared team GPU server: depreciation and resale value](https://ai.jakubjirak.com/p/ai-hardware-roi-shared-gpu-server-depreciation-resale): AI hardware loses economic value when capacity, software support, or workload fit moves—not only when it breaks. - [Five orders of magnitude on one chart](https://ai.jakubjirak.com/p/five-orders-of-magnitude): The same Mandelbrot set, computed seven ways on one laptop: SQLite recursive CTEs up to a Metal GPU shader. From the better part of four minutes down to a third of a millisecond. What a 100,000× spread actually teaches you about where speed lives. - [Fable 5 as advisor: near-frontier judgment at Sonnet 5 and Haiku prices](https://ai.jakubjirak.com/p/fable-5-advisor-tool): The advisor tool lets a cheap executor consult a stronger model mid-generation without switching your whole agent to the expensive model. Fable 5 is a valid advisor for both Sonnet 5 and Haiku 4.5. Here's the wiring, the gotchas, and the cost controls. - [AGI is still a marketing word: what Fable 5, Mythos 5, and GPT-5.6 actually measure](https://ai.jakubjirak.com/p/agi-distance-check): Every release cycle someone asks if this is the one. It isn't. Here's what the last few weeks of Fable, Mythos, and GPT-5.6 actually tell you about the distance left, if you read past the press release. - [Junie and your test suite: the oracle pattern in an IDE](https://ai.jakubjirak.com/p/junie-tests-oracle): An agent that can't check its own work only produces plausible text. Wire Junie to your test suite (the oracle you already own) and it starts shipping verified diffs instead of confident guesses. - [Running Codex as a fleet: parallel tasks, best-of-n](https://ai.jakubjirak.com/p/codex-parallel-fleet): Codex cloud tasks are cheap to launch and fully isolated, which makes five-at-once the natural unit of work. The fan-out and best-of-n playbook, and how to survive the review queue it creates. - [What a million tokens actually buys you in a terminal](https://ai.jakubjirak.com/p/gemini-long-context-workflows): A million-token window is the least understood spec in terminal agents. Three workflows that genuinely need it (module audits, log forensics, spec reconciliation) and the attention, cost, and latency fine print the pitch leaves out. - [Crush: Charm's take on the coding agent](https://ai.jakubjirak.com/p/crush-terminal-agent): Charm built the TUI stack the modern terminal runs on, and Crush is that taste applied to a coding agent. Why interface craft is a real differentiator, what sits under the paint, and where a design-first agent fits. - [Tool calling through LangChain: bind_tools and its moods](https://ai.jakubjirak.com/p/langchain-tool-calling): bind_tools turns your functions into something a model can call, and mostly hides the fact that every provider does it differently. Mostly. The docstring that cost me a morning, the quirks it doesn't hide, and how I test tools without a model. - [Surviving LangChain upgrades: a scar tissue report](https://ai.jakubjirak.com/p/langchain-upgrade-pain): Most of my LangChain scars date to the pre-1.0 churn of late 2025: moving imports, deprecated memory classes, a month running a pinned fork. The quiet policy that stopped the bleeding, and why I bill maintenance as a line item. - [Streaming graph events: progress bars for agents](https://ai.jakubjirak.com/p/langgraph-streaming-events): Our graph runs take three to eight minutes, and users kept killing them halfway. A progress UI built on LangGraph's stream modes fixed that without making anything faster. Notes on modes, noise, and what to show. - [Migrating from chains to graphs without a rewrite weekend](https://ai.jakubjirak.com/p/langgraph-from-chains): We moved a client's ticket triage pipeline from LCEL chains to LangGraph over two weeks in May, shipping the whole time. The first version was a graph with exactly one node, and putting that into production was the point. - [Local embeddings: the part of the stack that never left](https://ai.jakubjirak.com/p/ollama-local-embeddings): My generation traffic drifted to cloud models years ago. My embeddings never left the 3090: too cheap and too private to move. One warning: the embedding model is a schema, and I learned that the expensive way. - [vLLM at home: throughput machine in a latency world](https://ai.jakubjirak.com/p/vllm-at-home): vLLM turned a five-hour Ollama backfill into 47 minutes on the same 3090, then spent a week teaching me it has no business being my chat server. - [New model dropped. Now what?](https://ai.jakubjirak.com/p/local-model-updates): Something new tops the local charts every other Thursday. My defense is a fixed 20-prompt gauntlet, ruthless disk hygiene, and a two-week probation: a routine that exists because I once ignored my own results for a month. - [Overnight agents on local models: cheap, slow, surprisingly useful](https://ai.jakubjirak.com/p/local-agents-overnight): Nobody waits for a model at 3 am. I queue bounded agent tasks against the 3090 box at midnight (test triage, doc drafts, dataset cleanup) and review branches over coffee. One night it looped for six hours. - [Use a mini PC as the control plane, not the muscle](https://ai.jakubjirak.com/p/mini-pc-local-ai-node): Small machines make excellent routers, embedding nodes, and automation hosts around a larger inference server. - [Resizable BAR and local inference](https://ai.jakubjirak.com/p/gpu-resizable-bar-local-llm): Large PCIe mappings can matter for some transfer-heavy paths, but runtime and platform behavior need verification. - [Commercial vs free models for customer-support automation: licenses, terms, and redistribution](https://ai.jakubjirak.com/p/commercial-vs-free-customer-support-license-terms): Open weights, open source, free access, and commercial permission describe different things. - [OCR models for tables and statements: local hardware and hybrid OCR deployment](https://ai.jakubjirak.com/p/ocr-models-tables-statements-local-hardware-deployment): OCR can be CPU-friendly, accelerator-heavy, or API-bound depending on page volume and model class. - [Claude Sonnet 5 in GitHub Copilot: what the usage-based pricing shift actually costs](https://ai.jakubjirak.com/p/claude-sonnet-5-copilot-pricing): Copilot dropped the fixed premium-request multiplier for metered AI Credits, and Sonnet 5 launched into it at a promotional rate that expires August 31, 2026. Three separate effects stack on September 1. Here's what they actually add up to. - [Why Junie feels strongest on JVM code](https://ai.jakubjirak.com/p/junie-jvm-advantage): Junie is at its best on Java and Kotlin, and that's not an accident. Twenty years of static-analysis machinery (indexes, inspections, refactorings) become tools the agent can call, and a compiler becomes its oracle. - [Codex as your PR reviewer: useful, with caveats](https://ai.jakubjirak.com/p/codex-github-code-review): Tag Codex on a pull request and it reviews the diff in full repo context. It catches real bugs, and misses design intent entirely. The difference decides how you should deploy it. - [Claude Code as MCP client and server](https://ai.jakubjirak.com/p/claude-code-mcp): Claude Code speaks MCP in both directions: it consumes servers for browsers, databases, and trackers, and can serve its own tools to other clients. The wiring takes minutes; budgeting the context and the trust is the real work. - [LangSmith traces: the first honest look at my own pipeline](https://ai.jakubjirak.com/p/langsmith-tracing): I flipped on tracing expecting a victory lap and got a confession: my pipeline had been running its retrieval step twice on every single request for about five weeks. That was just the first trace. - [interrupt(): human-in-the-loop that doesn't feel bolted on](https://ai.jakubjirak.com/p/langgraph-interrupts): An agent that credits customer accounts needs a human gate. interrupt() gave me a pause that survives deploys and vacations. The screen the approver stares at was still mine to build. - [Deploying LangGraph: platform, container, or cron job](https://ai.jakubjirak.com/p/langgraph-deploy-options): Managed platform, a container I babysit, or a cron job that runs and dies: I've shipped the same graph all three ways. The container with a Postgres checkpointer is my default, right up until the checkpoint table quietly hit 14 GB. - [keep_alive and the cold-start tax](https://ai.jakubjirak.com/p/ollama-keep-alive): The slowest part of local inference is the twelve seconds before it starts. How I tune keep_alive, what pinning really costs in VRAM, and the two-model mistake that ran half on CPU for four days. - [Benchmark your own box or believe strangers](https://ai.jakubjirak.com/p/measuring-local-tokens): I bought RAM off a stranger's tok/s number and it measured the wrong thing entirely. Prefill versus generation, context depth, thermal sag: how I benchmark my own machines now, in nine lines of shell. - [Who made your GGUF? The supply chain nobody audits](https://ai.jakubjirak.com/p/gguf-supply-chain): I pulled a 19 GB quant from a stranger and gave it shell access the same evening. The chat template inside a GGUF is the supply-chain risk nobody reads. Here's my rule now. - [An AI-enhanced home should survive an internet outage](https://ai.jakubjirak.com/p/offline-first-ai-home): Local DNS, time, speech, automation, and model artifacts all need an offline path to make the claim real. - [Commercial vs free models for coding assistants: privacy and data control](https://ai.jakubjirak.com/p/commercial-vs-free-coding-privacy-control): Local weights reduce data movement; commercial services may offer stronger managed controls than an improvised server. - [OCR models for invoices and receipts: layout and reading order](https://ai.jakubjirak.com/p/ocr-models-invoices-receipts-layout-reading-order): Perfect words in the wrong sequence are a failed document extraction. - [Ollama in practice: context, GPU control, the API, and when to graduate to vLLM](https://ai.jakubjirak.com/p/ollama-in-practice): The quickstart gets Ollama running. This is how to run it well: the context-length gotcha that silently truncates, keeping big models warm, GPU/VRAM control, the OpenAI-compatible API and Modelfiles, and the point where you outgrow it. - [Gemini CLI extensions: packaged superpowers](https://ai.jakubjirak.com/p/gemini-cli-extensions): Extensions bundle MCP servers, context files, and custom commands into one versioned install. When your team should build one, when a GEMINI.md alone is plenty, and the supply-chain bill that arrives with the convenience. - [Skills: teaching Claude Code your team's playbook](https://ai.jakubjirak.com/p/claude-code-skills): Skills turn the procedures you keep re-explaining into files Claude Code loads only when they are needed. One description sentence stays resident; the playbook arrives on demand. The craft is in the description, and in knowing when a hook or CLAUDE.md fits better. - [Goose: Block's MCP-native agent and its recipe system](https://ai.jakubjirak.com/p/goose-recipes): Goose is what you get when a large company builds an agent MCP-first and then has to make it work far beyond its engineering org. Recipes (shareable, parameterized agent workflows) are the idea worth stealing. - [with_structured_output is the reason I keep LangChain around](https://ai.jakubjirak.com/p/langchain-structured-output): If I could keep one feature from LangChain and drop the rest, it's this one. A Pydantic schema in, a validated object out, the same code across providers, plus the three sharp edges that drew blood. - [Testing LangChain apps without burning tokens](https://ai.jakubjirak.com/p/langchain-testing): Real model calls in CI were quietly burning around 90 dollars a month on a two-person project. Here's the test pyramid that fixed the bill, and the one prompt regression that sailed clean through every mock anyway. - [Retry nodes, fallback edges: error handling as graph topology](https://ai.jakubjirak.com/p/langgraph-error-recovery): One flaky third-party API kept killing 40-minute pipeline runs. Moving error handling out of node bodies and into the graph (retry policies, fallback edges, a dead-letter key) is the most durable thing I built this spring. - [The layer-offload math nobody explains](https://ai.jakubjirak.com/p/ollama-gpu-offload-math): Two layers on the CPU cost me most of my tokens per second, and I blamed the model for two weeks. The offload math is brutally nonlinear: this is the napkin version I wish someone had shown me. - [llama-server flags I actually change (and the ones I don't)](https://ai.jakubjirak.com/p/llamacpp-server-flags): Out of llama-server's hundred-odd flags I change six. Two more I copied from a forum and ran for five weeks before llama-bench told me they did nothing on my 3090. - [A RAG stack with the wifi off](https://ai.jakubjirak.com/p/local-rag-fully-offline): Built for a client whose security lead switched the wifi off mid-kickoff: local embeddings, sqlite-vec, BM25, an 8B generator. What held up, the one query type that didn't, and the latency numbers I quoted them. - [Meeting notes that never leave my machine](https://ai.jakubjirak.com/p/local-whisper-pipeline): Client calls under NDA shouldn't route through someone else's transcription API. My whole meeting-notes flow (record, transcribe, summarize, file) runs on the M2 Ultra, offline, and the weakest part is still the speaker labels. - [Power-limit the GPU before buying more cooling](https://ai.jakubjirak.com/p/power-limit-local-gpu): Local inference often keeps most of its speed well below the card’s factory power target. - [Running Whisper on Raspberry Pi without wishful thinking](https://ai.jakubjirak.com/p/whisper-on-raspberry-pi): Tiny and base models can handle bounded transcription when audio length and response expectations are controlled. - [GLM-5.1: Migrating without changing behavior by accident](https://ai.jakubjirak.com/p/glm-51-current-migration): A model swap changes templates, defaults, tools, output shape, and failure modes—not just an identifier. - [Vision models for chart and diagram understanding: an evaluation set for visual reasoning](https://ai.jakubjirak.com/p/vision-models-charts-diagrams-evaluation): Vision evaluations need blur, glare, occlusion, tiny text, bad crops, and examples that cannot be answered. - [AI hardware ROI for an edge or SBC AI fleet: pricing risk and downtime](https://ai.jakubjirak.com/p/ai-hardware-roi-edge-sbc-fleet-risk-downtime): A cheap single box becomes expensive when its failure stops a workflow with no usable fallback. - [Junie or AI Assistant? JetBrains ships both for a reason](https://ai.jakubjirak.com/p/junie-vs-ai-assistant): JetBrains ships a chat assistant and a coding agent side by side, and they share your AI quota. Knowing which task goes to which tool is the actual skill, and it's cheaper to learn than to guess. - [Codex in the cloud: fire-and-forget engineering](https://ai.jakubjirak.com/p/codex-cloud-delegation): Hand Codex an issue and it returns a pull request from a container you never see. The parallelism is real. And so is the new bottleneck: whether your environment setup actually tells the truth. - [Streaming through chains without losing your mind](https://ai.jakubjirak.com/p/langchain-streaming): Streaming turned a nine-second wait into something users forgave. Then one parser at the end of my chain silently turned the stream back into a batch, and I spent four days blaming the wrong thing. - [Checkpointers: the feature that made LangGraph production-real for me](https://ai.jakubjirak.com/p/langgraph-checkpointing): We deployed mid-run on a Tuesday and the triage graph picked up exactly where it stopped. That was the day durable execution stopped being a slide-deck word for me. - [LangGraph or Temporal? Durable execution from two directions](https://ai.jakubjirak.com/p/langgraph-vs-temporal): Both hand you a workflow that survives a crash, from opposite worlds: Temporal from workflow engines, LangGraph from agents. For a client's invoicing flow I put the LLM reasoning on LangGraph and left the money in Temporal, after a checkpoint replay double-posted a ledger entry in staging. - [When LangGraph is overkill (a love letter and a warning)](https://ai.jakubjirak.com/p/langgraph-when-overkill): I run a production graph I'd defend to anyone. I also ripped LangGraph out of a second service in one afternoon and the code got better. Here are the four questions I now ask before reaching for the graph. - [One GPU box for the whole team](https://ai.jakubjirak.com/p/ollama-team-server): We pointed five developers at one leftover RTX 3090 running Ollama. Embeddings and short completions were great, parallel long generations were not, and an intern taught me why a reverse proxy isn't optional. - [llamafile: the USB-stick LLM](https://ai.jakubjirak.com/p/llamafile-one-binary): One executable, weights included, runs on whatever machine you plug it into. llamafile rescued a client demo for me in June. And it's still the wrong tool for daily work. Both halves matter. - [Three models, one GPU: the juggling act](https://ai.jakubjirak.com/p/multi-model-vram-juggling): An embedder, a chat model, and a 32B coder all want the same 24 GB card. My loading policy, the real gigabyte math, and the night everything spilled to CPU without a single error. - [Run the reranker on CPU when the GPU is busy](https://ai.jakubjirak.com/p/rerank-on-cpu): A compact cross-encoder can improve retrieval without evicting the generation model. - [Gemini 3.5 Flash: Finding the production fit](https://ai.jakubjirak.com/p/gemini-35-flash-production-fit): A model should earn a traffic class before it earns the default route. - [Vision models for UI and screenshot understanding: resolution and visual-token budgets](https://ai.jakubjirak.com/p/vision-models-ui-screenshots-resolution-token-budget): Higher resolution helps small details until preprocessing, visual tokens, memory, and latency become the product. - [AI hardware ROI for a used-GPU inference build: break-even against commercial APIs](https://ai.jakubjirak.com/p/ai-hardware-roi-used-gpu-build-api-break-even): Local hardware wins only after enough equivalent accepted work crosses the machine. - [Wiring MCP servers into Gemini CLI](https://ai.jakubjirak.com/p/gemini-cli-mcp): Gemini CLI's built-in tools stop at your repo's edge. MCP servers connect it to databases, issue trackers, and browsers: the settings.json wiring, the transport options, and the discipline that keeps each server from becoming a liability. - [CLAUDE.md that actually steers: lessons from real repos](https://ai.jakubjirak.com/p/claude-md-in-practice): CLAUDE.md rides along on every turn, which makes it the most expensive text in your repo. What earns a line, what belongs in a linter instead, and why the best files read like a senior engineer's onboarding note. - [OpenHands: from research project to daily driver](https://ai.jakubjirak.com/p/openhands-cli-tour): OpenHands grew from the OpenDevin research effort into the most rigorously evaluated open coding agent. What its event-stream architecture and sandboxed runtime buy you, and the operational weight they cost. - [LCEL in anger: pipes, parallelism, and the day I over-composed](https://ai.jakubjirak.com/p/lcel-in-anger): The pipe syntax feels like a magic trick the first time and a crime scene the ninth. What LCEL composition actually buys you, the nine-stage chain I couldn't debug, and the readability rule I use now. - [The two-line provider swap is real (mostly)](https://ai.jakubjirak.com/p/langchain-provider-swap): LangChain's init_chat_model really does swap providers in two lines, and I proved it on a client cost review. Then I spent two weeks learning which parts of the migration the abstraction quietly refuses to carry for you. - [Controlled loops: cycles without the infinite part](https://ai.jakubjirak.com/p/langgraph-cycles): LangGraph makes loops a first-class move, which means it also makes infinite loops a first-class move. Notes on exit conditions that fire, convergence you can measure, and the revise loop that ran all night. - [Model churn: my quarterly ritual of re-testing local models](https://ai.jakubjirak.com/p/ollama-model-churn): Local models churn fast enough that loyalty rots. I keep a 23-prompt eval file, re-run it every quarter, delete whatever loses, and admit the boring result: for bounded tasks, most upgrades change nothing. - [Tool calling on local models: usable, with an asterisk](https://ai.jakubjirak.com/p/ollama-function-calling): I gave the same five tools to an 8B, a 30B, and a frontier model, then counted who called what. Local tool calling is real now, as long as you respect the asterisk. - [Temperature isn't a vibe: sampler settings that matter locally](https://ai.jakubjirak.com/p/local-sampling-settings): I shipped a week of mangled JSON because of one sampler default I never chose. What temperature, top_p, top_k, min_p and repeat_penalty actually do on local models, and the per-task presets I pin before judging anything. - [Read the license before you ship the weights](https://ai.jakubjirak.com/p/local-model-licenses): Open weights come with fine print, and the fine print differs wildly. I almost shipped a research-only model inside a client deliverable in April. Here's the five-minute check I run now. - [Why the Neural Engine rarely runs your chat model](https://ai.jakubjirak.com/p/apple-neural-engine-llm): The ANE is powerful specialized hardware, but common local LLM runtimes primarily target GPU and CPU paths. - [Should model files live on a NAS?](https://ai.jakubjirak.com/p/network-storage-model-files): Central storage simplifies a library, while cold loads and concurrent reads can punish a slow network. - [Commercial vs free models for document extraction: long-context economics](https://ai.jakubjirak.com/p/commercial-vs-free-document-extraction-context-economics): A giant context window can replace engineering discipline with a large recurring bill. - [OCR models for technical documents and labels: tables and key-value association](https://ai.jakubjirak.com/p/ocr-models-technical-documents-tables-key-values): Recognizing tokens is easier than proving which label, column, row, and unit they belong to. - [Fable 5 is back — but the two-week gap already made its point](https://ai.jakubjirak.com/p/fable-5-is-back): The US lifted its national-security order on June 27, fifteen days after forcing Claude Fable 5 offline worldwide. Restoration doesn't undo the architecture lesson the withdrawal taught. - [Junie's leash: approvals, Brave mode, and when to let go](https://ai.jakubjirak.com/p/junie-brave-mode): By default Junie asks before every terminal command; Brave mode lets it run free. The right setting isn't a personality trait. It's a function of blast radius, revert cost, and how good your sandbox is. - [Suggest, auto-edit, full-auto: choosing Codex's leash](https://ai.jakubjirak.com/p/codex-approval-modes): Codex's three approval modes are a risk dial, not a convenience setting. Match the mode to how cheaply you can undo a mistake, and make every repo earn its autonomy separately. - [Conversation memory: buffers, summaries, and what I actually use](https://ai.jakubjirak.com/p/langchain-memory-patterns): Full-buffer memory blew up my token bill, and the summarizer forgot a customer's name mid-demo. Why I stopped trusting memory classes entirely and moved to explicit, checkpointed state. - [Design the state first: my LangGraph rule number one](https://ai.jakubjirak.com/p/langgraph-state-design): The state schema is the real API of a LangGraph app. I learned that by stuffing raw documents into state until the checkpointer ate 9 GB of disk in nine days. - [The supervisor pattern: one boss agent, several specialists](https://ai.jakubjirak.com/p/langgraph-supervisor-pattern): My best supervisor graph and my most embarrassing one shared a diagram. A specialist earns its latency only when it carries fewer tools or a cleaner context than the generalist it replaced. And I once shipped two agents that were secretly one. - [Ollama in Docker: three gotchas and a compose file](https://ai.jakubjirak.com/p/ollama-in-docker): Same Ollama, new failure modes: a GPU flag that fails silently and a healthcheck that lies. Plus the volume mount that would have saved us a terabyte of re-pulls, and the compose file I actually run. - [Picking a quant: the twenty minutes that decide everything](https://ai.jakubjirak.com/p/gguf-quant-picking): Fourteen files in every GGUF repo and no advice. My rules: Q4_K_M by default, Q5 and up for code, never below Q4 for work I bill. Plus the blind test where I couldn't tell, until the code broke. - [Your laptop is lying about its tok/s](https://ai.jakubjirak.com/p/laptop-llm-thermals): My fanless MacBook opens at 29 tok/s and settles at 18.5 once the aluminium soaks through. I learned the gap mid-demo, in front of a client. Here is the curve and what actually moves it. - [When a reranker earns its latency](https://ai.jakubjirak.com/p/reranker-worth-latency): A second retrieval stage helps only when the candidate set contains better evidence than similarity rank exposes. - [Remote-manage the Raspberry Pi before mounting it](https://ai.jakubjirak.com/p/remote-manage-raspberry-pi-ai): SSH keys, health reporting, logs, reboot control, and a recovery image are easier to prepare on the bench. - [Commercial vs free models for coding assistants: a hybrid route instead of a winner](https://ai.jakubjirak.com/p/commercial-vs-free-coding-hybrid-routing): The useful comparison often ends with two routes: a cheap private default and a visible escalation. - [OCR models for forms and handwriting: choosing an OCR-capable model](https://ai.jakubjirak.com/p/ocr-models-forms-handwriting-model-selection): OCR engines, document parsers, and vision-language models solve overlapping but different layers. - [GEMINI.md: hierarchical context that scales with your repo](https://ai.jakubjirak.com/p/gemini-md-context): Gemini CLI merges context from your home directory, the repo root, and every subdirectory in between. What belongs at each level of the cascade, and why every surviving line has to earn its per-request tax. - [Hooks: deterministic guardrails for a probabilistic tool](https://ai.jakubjirak.com/p/claude-code-hooks): Prompts ask; hooks enforce. Claude Code lets you bind shell commands to lifecycle events: format after every edit, block the scary commands, ping you when it stalls. The rule: never prompt for what you can make deterministic. - [OpenCode: a terminal agent that treats the TUI seriously](https://ai.jakubjirak.com/p/opencode-tour): OpenCode bets that the terminal deserves real UI engineering and that no single provider deserves your loyalty. A tour of the TUI, the client/server split, and the tuning tax that provider-agnosticism quietly charges. - [You probably don't need LangChain (I said it and I use it)](https://ai.jakubjirak.com/p/langchain-when-not-to): A junior asked why we'd pulled a framework into a service that talks to one model and does one thing. I took it out, and forty lines replaced it. The honest rule for when LangChain earns its weight and when it's just cost. - [I rewrote a LangChain app in fifty lines. Then rewrote it back.](https://ai.jakubjirak.com/p/langchain-vs-fifty-lines): I ripped a LangChain app down to fifty lines of raw SDK and felt reborn. Six months later my raw version had regrown retries, provider branching, and a tracing shim: a worse framework, maintained by an audience of one. - [Fan-out in LangGraph: Send() and the join that bit me](https://ai.jakubjirak.com/p/langgraph-fan-out): Send() gave my due-diligence pipeline dynamic parallelism in an afternoon. Then one report in ten came out subtly wrong, and I spent two evenings learning what the join barrier does and doesn't promise. - [Testing graphs: nodes as functions, topology as fixture](https://ai.jakubjirak.com/p/langgraph-testing-graphs): My LangGraph test pyramid after a season in production: unit-test nodes with fake state, assert the path a thread takes instead of what the model says, and replay golden threads from checkpoints. A path test caught what 41 unit tests missed. - [The OpenAI-compatible endpoint is Ollama's best feature](https://ai.jakubjirak.com/p/ollama-openai-compat): Change base_url, fake the key, and a year of OpenAI-SDK code runs against your own machine. That drop-in trick is the best thing Ollama ships, as long as you learn which parameters it swallows silently. - [Forcing local models to speak JSON](https://ai.jakubjirak.com/p/ollama-structured-output): My ticket classifier parsed 83% of Qwen's answers until I stopped begging in the prompt and let Ollama's grammar do the enforcing. Now everything parses. And I learned the hard way what a schema quietly costs. - [The KV cache is eating your VRAM](https://ai.jakubjirak.com/p/local-kv-cache-math): My overnight triage agent OOMed at hour three with the weights sitting untouched. The killer was the half of VRAM nobody budgets: the KV cache. Here's the arithmetic I now run before every long job, and the quantization trade that saved it. - [Logging local inference: you still need receipts](https://ai.jakubjirak.com/p/local-inference-logging): The provider dashboard you lost when you went local was doing real work. I replaced it with a 118-line proxy and a JSONL file, and it caught a clogged heatsink before I did. - [A 128K context window is not free locally](https://ai.jakubjirak.com/p/context-window-cost-local): KV cache math, prompt time, and the case for trimming context before upgrading hardware. - [Place Thread border routers for resilience, not AI](https://ai.jakubjirak.com/p/thread-border-router-placement): A healthy mesh is the foundation beneath any local assistant that wants to control Matter devices. - [Kimi K2.5: Migrating without changing behavior by accident](https://ai.jakubjirak.com/p/kimi-k25-current-migration): A model swap changes templates, defaults, tools, output shape, and failure modes—not just an identifier. - [Vision models for product-image analysis: structured output from images](https://ai.jakubjirak.com/p/vision-models-product-images-structured-output): JSON syntax is the easy part; visual grounding and semantic validation decide whether the record is usable. - [.junie/guidelines.md: teaching Junie your house rules](https://ai.jakubjirak.com/p/junie-guidelines): Junie reads .junie/guidelines.md before every task, which makes it the highest-impact file in your repo. What belongs in it, what doesn't, and why the discipline is the same one CLAUDE.md and AGENTS.md already taught us. - [AGENTS.md: the contract between Codex and your repo](https://ai.jakubjirak.com/p/agents-md-codex): Codex reads AGENTS.md before it reads your code. Treat that file as a contract (setup, tests, conventions, PR rules) and every session starts oriented instead of guessing. Here is what goes in, and what to cut. - [LangChain in 2026: the framework that survived its own hype](https://ai.jakubjirak.com/p/langchain-in-2026): I adopted LangChain early, ripped it out in disgust, and came back years later for reasons I didn't expect. Here's what the post-1.0 framework is actually good at, what it isn't, and who should still walk away. - [The RAG pipeline I actually ship with LangChain](https://ai.jakubjirak.com/p/langchain-rag-pipeline): Loaders, splitters, MMR retrieval, and citations: the exact shape of the RAG pipeline I shipped to a fintech client, including the default setting that quietly served wrong numbers for two weeks. - [LangGraph clicked when I stopped thinking in chains](https://ai.jakubjirak.com/p/langgraph-mental-model): I lost two weeks trying to express an escalation branch as a chain. The fix was admitting I was building a state machine, drawing it on paper, and only then writing code. - [Modelfiles: the Dockerfile nobody reads until they need one](https://ai.jakubjirak.com/p/ollama-modelfiles): I ran Ollama for over a year without writing a single Modelfile. Then five engineers needed the same code-review model, and four keywords ended the prompt-drift mess, right after a whitespace bug taught me some respect. - [Ollama or raw llama.cpp: when the training wheels come off](https://ai.jakubjirak.com/p/ollama-vs-llamacpp): Ollama is llama.cpp with the lifecycle managed for you. I moved one pipeline down to raw llama-server for grammar sampling, learned what the convenience actually costs, and came straight back for everything else. - [A month of MLX as my daily local runtime](https://ai.jakubjirak.com/p/mlx-lm-daily-driver): I moved my Mac's local models from llama.cpp-on-Metal to mlx-lm in late May and mostly haven't looked back. What genuinely got faster, what the conversion step costs, and the memory cap that fooled me for two days. - [Capacity-plan a shared local LLM service](https://ai.jakubjirak.com/p/local-llm-capacity-planning): Concurrency, output length, context size, and model residency matter more than requests per minute alone. - [GPT-5.6: Finding the production fit](https://ai.jakubjirak.com/p/gpt-56-family-production-fit): A model should earn a traffic class before it earns the default route. - [Vision models for UI and screenshot understanding: privacy and security for visual inputs](https://ai.jakubjirak.com/p/vision-models-ui-screenshots-privacy-security): Images leak faces, screens, documents, locations, reflections, and background details beyond the intended task. - [AI hardware ROI for a used-GPU inference build: a sensitivity analysis that can change the answer](https://ai.jakubjirak.com/p/ai-hardware-roi-used-gpu-build-sensitivity-analysis): ROI is a range driven by utilization, lifespan, API price, energy, quality, and demand growth. - [Gemini CLI is open source, and that changes the trust math](https://ai.jakubjirak.com/p/gemini-cli-open-source): The harness is Apache-2.0: the loop, the prompts, and the tool definitions are all readable before you grant shell access. That changes security review, enables forks like Qwen Code, and still leaves one closed box: the model. - [Subagents: how Claude Code fans out without losing the plot](https://ai.jakubjirak.com/p/claude-code-subagents): Claude Code can spawn focused agents that burn their own context and report back only conclusions. The parallelism is nice; the isolation is the feature. Here is how the fan-out works, how to define custom agents, and what never to delegate. - [Aider in 2026: the original terminal agent is still sharp](https://ai.jakubjirak.com/p/aider-still-sharp): Aider predates nearly every coding agent you use today, and its core ideas (the repo map, a commit per change, edit formats matched to models) still haven't been beaten. Where it wins, and where its age shows. - [Temperature zero is not a reproducibility guarantee](https://ai.jakubjirak.com/p/temperature-zero-not-deterministic): Kernel choices, batching, model builds, and tie-breaking can still change outputs. - [Use synthetic training data with a verification funnel](https://ai.jakubjirak.com/p/synthetic-data-local-models): A stronger model can expand coverage, but generated errors become confident habits if accepted wholesale. - [Commercial vs free models for tool-using agents: privacy and data control](https://ai.jakubjirak.com/p/commercial-vs-free-agents-privacy-control): Local weights reduce data movement; commercial services may offer stronger managed controls than an improvised server. - [AI hardware ROI for a personal AI workstation: the utilization curve](https://ai.jakubjirak.com/p/ai-hardware-roi-personal-workstation-utilization): A fast GPU that waits all day can have worse economics than an expensive API used only when needed. - [Junie: the coding agent that lives inside your IDE](https://ai.jakubjirak.com/p/junie-what-it-is): JetBrains put its coding agent inside the IDE instead of a terminal, betting that the editor's index, inspections, and test runner make better context than any grep. Here is what Junie actually does, and where the bet holds. - [Codex CLI: from install to first merged diff](https://ai.jakubjirak.com/p/codex-cli-quickstart): A first session with OpenAI's terminal agent, run the way you'd actually adopt it: install, authenticate, pick a fenced task, and ride the read-propose-run loop to a diff worth merging. - [Gemini CLI: the free-tier workhorse, set up in minutes](https://ai.jakubjirak.com/p/gemini-cli-quickstart): One npm install, a Google sign-in, and you're running a serious terminal agent on a free quota most solo developers won't exhaust. Here's the first session, the built-in tools, and where free honestly ends. - [The open-source coding CLI landscape, mapped](https://ai.jakubjirak.com/p/open-coding-clis-map): Six open coding agents matter in mid-2026: Aider, OpenCode, OpenHands, Goose, Crush, and Qwen Code. Here is what each one bets on, what openness actually buys you, and the assembly work it quietly demands. - [Run the one-hour inference test](https://ai.jakubjirak.com/p/thermal-throttling-hour-test): Short benchmarks miss the heat soak that changes clocks, noise, and reliability. - [Turn a model license into an operational checklist](https://ai.jakubjirak.com/p/model-license-operational-check): Commercial use, redistribution, attribution, and acceptable-use terms need owners, not bookmarks. - [Commercial vs free models for RAG systems: tools and integration quality](https://ai.jakubjirak.com/p/commercial-vs-free-rag-tool-ecosystem): Native tools save glue code, while open stacks preserve portability and make boundaries inspectable. - [OCR models for forms and handwriting: structured OCR with provenance](https://ai.jakubjirak.com/p/ocr-models-forms-handwriting-structured-provenance): Every consequential field should point back to the pixels that support it. - [Microsoft 365 Copilot Chat in the enterprise: your org's knowledge, on tap](https://ai.jakubjirak.com/p/copilot-365-chat-enterprise): Grounded in your company's emails, files, and chats, Copilot Chat is the most powerful and most misunderstood part of the suite. How to use it well, and how to govern it. - [Microsoft 365 Copilot in Outlook: inbox triage that actually saves time](https://ai.jakubjirak.com/p/copilot-outlook): Summarize threads, draft replies in your voice, and stop re-reading 40-message chains. The Outlook Copilot features worth using, and the ones to skip. - [Copilot in Microsoft Teams: meetings you don't have to attend (fully)](https://ai.jakubjirak.com/p/copilot-teams): Real-time catch-up, action items pulled automatically, and chat you can summarize. How Copilot changes Teams meetings, and where it still needs a human in the room. - [Reasoning models and test-time compute: when thinking is worth paying for](https://ai.jakubjirak.com/p/reasoning-models-explained): Extended thinking, effort levels, and the test-time-compute scaling law. How reasoning models work, when the extra tokens pay off, and when they're just burning money. - [Build a coding agent from scratch: the loop is simpler than you think](https://ai.jakubjirak.com/p/build-a-coding-agent): Strip away the frameworks and a coding agent is about fifty lines: a model, a few tools, and a loop. Here's the anatomy (with code) and what the frameworks actually add. - [Agentic RAG: when retrieval becomes a tool the agent drives](https://ai.jakubjirak.com/p/agentic-rag): Classic RAG retrieves once, up front, and hopes. Agentic RAG lets the model decide what to search, read the results, and search again: retrieval as a loop, not a pipeline step. - [AI for data work: text-to-SQL, analysis, and the columns that don't exist](https://ai.jakubjirak.com/p/ai-for-data-and-sql): LLMs turn 'how many customers churned last quarter' into SQL, and confidently invent a column that was never there. How to get reliable data answers, not plausible ones. - [AI for product managers: shipping without waiting for engineering](https://ai.jakubjirak.com/p/ai-for-product-managers): PRDs in minutes, clickable prototypes from a prompt, user research synthesized in seconds. What AI actually changes for PMs, and the judgment it can't replace. - [Why agents fail in production (it's almost never the model)](https://ai.jakubjirak.com/p/why-agents-fail-in-production): Every demo works. That's the trap. The specific, boring reasons agents that dazzled in a notebook fall over with real users, and what the ones that survive do differently. - [Your RAG demo lied to you](https://ai.jakubjirak.com/p/rag-demo-to-product): It answered ten questions flawlessly in the meeting. Then it shipped, and the answers quietly got worse the more people leaned on it. The specific ways retrieval falls apart. - [Designing tools for an agent: the interface is the leash](https://ai.jakubjirak.com/p/designing-agent-tools): Give an agent a bash tool and it can do anything, which means your harness can control nothing. How the shape of a tool decides what you can gate, audit, and run in parallel. - [Multi-tenant AI is where a small mistake becomes a data breach](https://ai.jakubjirak.com/p/multi-tenant-ai-architecture): The moment more than one customer's data flows through your LLM features, isolation stops being a nicety. The specific places tenants leak into each other, and how to wall them off. - [Latency is a feature: architecting AI apps that feel fast](https://ai.jakubjirak.com/p/streaming-latency-architecture): Users don't experience your model's tokens per second. They experience the pause before the first word, and whether the thing feels alive. The architecture of perceived speed. - [Choosing an embedding model is a decision you'll be stuck with](https://ai.jakubjirak.com/p/choosing-an-embedding-model): Pick the wrong one and switching means re-embedding your entire corpus. How to evaluate embedders on your own data instead of trusting a leaderboard, and what actually matters. - [When the model is down: designing AI features that degrade instead of die](https://ai.jakubjirak.com/p/resilient-ai-architecture): Providers have outages, rate limits, and bad days. If your feature is a single unguarded call to one API, those become your outages. Fallbacks, backpressure, and degrading on purpose. - [NUMA can make a large CPU model feel broken](https://ai.jakubjirak.com/p/numa-dual-socket-inference): Memory placement is the hidden variable on dual-socket and high-core-count hosts. - [Forecast home energy on a small board](https://ai.jakubjirak.com/p/home-energy-forecast-sbc): Short-horizon load predictions can schedule appliances without requiring a large language model. - [MiniMax M2.7: Migrating without changing behavior by accident](https://ai.jakubjirak.com/p/minimax-m27-migration): A model swap changes templates, defaults, tools, output shape, and failure modes—not just an identifier. - [OCR models for scanned archives: capture quality before recognition](https://ai.jakubjirak.com/p/ocr-models-scanned-archives-capture-quality): Focus, exposure, perspective, resolution, and compression set an upper bound no OCR prompt can repair. - [Claude Code, Copilot, Codex, Gemini: picking your pair-programmer in 2026](https://ai.jakubjirak.com/p/ai-coding-tools-2026): Four agents now sit between you and your editor. They are not interchangeable. A field guide to what each is actually good at, and where the seams show. - [MCP, explained: the USB-C port for AI tools (and when to build a server)](https://ai.jakubjirak.com/p/mcp-explained): Model Context Protocol is the standard that lets any agent talk to any tool. What it is, why it caught on so fast, and the honest answer to 'should I build an MCP server?' - [Prompt caching: the cheapest 90% off your bill (that you're probably getting wrong)](https://ai.jakubjirak.com/p/prompt-caching-deep-dive): Caching the stable prefix cuts input cost ~10×. But one stray timestamp silently turns it off. And you won't get an error. The mechanics, the silent killers, and how to verify. - [The Teams Facilitator agent: the meeting note-taker that never zones out](https://ai.jakubjirak.com/p/copilot-facilitator): Facilitator takes collaborative notes in real time, tracks the agenda, and surfaces decisions and action items as they happen, so nobody has to be the scribe. - [Meeting recap and summaries with Copilot: from 60 minutes to 6 bullets](https://ai.jakubjirak.com/p/copilot-meeting-summaries): Intelligent recap turns a recorded meeting into a searchable timeline with decisions, action items, and your mentions. What it captures brilliantly, and what it misses. - [Evals and LLM-as-judge: how to know your AI feature actually works](https://ai.jakubjirak.com/p/evals-and-llm-as-judge): Shipping LLM features on vibes is how you ship regressions you find out about from users. Building a golden set, using a model as a judge, and the eval-driven loop. - [Fine-tuning vs RAG vs prompting: the decision, and the honest costs](https://ai.jakubjirak.com/p/fine-tune-rag-prompt): Three ways to make a model do what you want, endlessly confused for each other. Which one your problem actually needs, and why fine-tuning is rarely the right first move. - [Inference optimization: how local model serving gets fast](https://ai.jakubjirak.com/p/inference-optimization): The same model can run several times faster or slower depending on the serving stack. KV cache, batching, paged attention, and speculative decoding: what they do and when they matter. - [AI in CI/CD and DevOps: agents in the pipeline, without the 3am page](https://ai.jakubjirak.com/p/ai-in-devops): From auto-fixing failing builds to writing Terraform, AI is moving into the pipeline. Where it helps, where it's dangerous, and the guardrails between 'useful' and 'incident'. - [AI for design and UX: from prompt to interface, without the AI slop](https://ai.jakubjirak.com/p/ai-for-design-ux): AI can generate a whole UI from a sentence, and a recognizably generic one. How designers use it to move faster, and where it quietly homogenizes everything it touches. - [AI for legal and compliance: useful, until it's confidently wrong about the law](https://ai.jakubjirak.com/p/ai-for-legal-compliance): Contract review, clause extraction, policy questions: real work, done well. It also invents case law with a straight face. Where the line sits, and why 'verify' isn't optional. - [The context window is bigger than the context you can use](https://ai.jakubjirak.com/p/context-windows-are-a-lie): A million-token window sounds like permission to stop thinking about what goes in the prompt. It isn't. The gap between the number on the box and what the model truly reasons over. - [Put a gateway in front of your LLM calls](https://ai.jakubjirak.com/p/llm-gateway-architecture): Scattering raw provider SDK calls across your codebase is a decision you'll regret. One thin layer in front buys routing, fallback, caching, limits, and a kill switch. - [Caching LLM responses by meaning, and when that's a terrible idea](https://ai.jakubjirak.com/p/semantic-caching): Prompt caching saves you on the input. Response caching saves the whole call. Semantic caching saves calls for questions that merely rhyme, which is powerful and occasionally wrong. - [What an agent should remember, and what it should be made to forget](https://ai.jakubjirak.com/p/agent-memory-architecture): Most 'agent memory' systems are a vector database the project didn't need. The real memory problem, the three layers that solve it, and why a remembered mistake is worse than none. - [Your prompts are code. Stop editing them in a playground and shipping.](https://ai.jakubjirak.com/p/prompt-as-code): The prompt is a large part of the program. Treating it as a config string you tweak in a UI and paste into prod is how regressions ship. Version, review, and test it like code. - [The unglamorous half of RAG: getting documents in](https://ai.jakubjirak.com/p/rag-ingestion-pipeline): Everyone obsesses over retrieval. The pipeline that turns messy PDFs and wikis into clean, chunked, current vectors is where RAG quality is actually decided, and where it quietly rots. - [Active cooling is part of a Raspberry Pi AI build](https://ai.jakubjirak.com/p/rpi-ai-active-cooling): Sustained inference heats a Pi differently from occasional web requests and can erase benchmark results. - [Grok 4.5: Finding the production fit](https://ai.jakubjirak.com/p/grok-45-production-fit): A model should earn a traffic class before it earns the default route. - [Vision models for camera-event understanding: reasoning across multiple images](https://ai.jakubjirak.com/p/vision-models-camera-events-multiple-images): Image order, identity, duplicated views, and changing scenes make multi-image prompts a data-association problem. - [AI hardware ROI for an Apple Silicon local-model system: renting GPU capacity versus buying](https://ai.jakubjirak.com/p/ai-hardware-roi-apple-silicon-rent-or-buy): Rental converts capacity risk into hourly cost; ownership converts hourly cost into utilization risk. - [Claude Code: agentic coding from the terminal](https://ai.jakubjirak.com/p/claude-code): A planning loop, multi-file edits, and your test suite as the oracle. What the terminal-native agent gets right, and how to drive it. - [Claude Code vs Copilot vs Cursor vs Codex vs Gemini: the 2026 comparison](https://ai.jakubjirak.com/p/ai-coding-tools-compared): Six AI coding tools, one decision table. Pricing, context, autonomy, and the single task each is actually best at, so you can pick in five minutes, not five tabs. - [Writing a CLAUDE.md (or AGENTS.md) that actually helps your agent](https://ai.jakubjirak.com/p/writing-agent-context-files): The single highest-impact thing you can do for any coding agent is a good context file. What to put in it, what to leave out, and why most of them are useless. - [Using AI to review code and catch bugs — without drowning in false positives](https://ai.jakubjirak.com/p/ai-code-review): LLMs are good at finding real bugs and great at generating noise. How to get a review pass worth reading: scope it, give it the bar, and split finding from filtering. - [Embeddings for code search: why your semantic search misses the obvious](https://ai.jakubjirak.com/p/embeddings-for-code-search): Embedding code isn't embedding prose. Why cosine similarity finds the wrong function, how to chunk code, and the hybrid that actually surfaces what you meant. - [AI for testing: generating tests that catch bugs, not just pass](https://ai.jakubjirak.com/p/ai-for-testing): An LLM will happily write tests that assert the code does whatever it currently does. How to get tests that actually verify behavior, and why tests are the agent's best friend. - [AI for customer support: deflection that helps, not the bot everyone hates](https://ai.jakubjirak.com/p/ai-for-customer-support): RAG over your knowledge base can answer most tickets, or confidently misinform at scale. The architecture, the escalation, and the accuracy bar support actually needs. - [Do you actually need a vector database?](https://ai.jakubjirak.com/p/do-you-need-a-vector-database): Everyone reaches for one the moment they hear 'RAG.' Most of them didn't need it. When Postgres is plenty, when a dedicated store earns its keep, and the cost nobody mentions. - [Upgrading your model is not a one-line change](https://ai.jakubjirak.com/p/model-migration-reality): The new one benchmarks better, so you swap the string and ship. A week later three things that worked are broken. Why model upgrades are migrations, not edits. - [Architecting for agents that run for minutes, not milliseconds](https://ai.jakubjirak.com/p/async-agent-architecture): A request-response mental model breaks the instant an agent runs for ten minutes. Queues, checkpoints, idempotency, and resuming: the systems work behind long-running agents. - [Designing the human into the loop without killing the flow](https://ai.jakubjirak.com/p/human-in-the-loop-design): An agent that asks permission for everything is useless. One that asks for nothing is dangerous. Where to put the human, and how to gate without grinding the work to a halt. - [Rent the model, own the loop: the build-versus-buy line for AI](https://ai.jakubjirak.com/p/build-vs-buy-thin-harness): There's a framework for everything now, and a pull to adopt one before you understand the problem. Where to build, where to buy, and why the harness is the part worth owning. - [Never trust the model's output: the validation layer](https://ai.jakubjirak.com/p/guardrails-output-validation): The model returns text, and text can be malformed, off-policy, or an injection's payload. The layer that checks what comes back before your code acts on it, and what it can't do. - [The data flywheel: turning production usage into a better product](https://ai.jakubjirak.com/p/feedback-loops-ai): Every thumbs-down, every edited response, every escalation is a signal. The architecture that captures it and feeds it back is what separates a product that improves from one that just runs. - [Keep shell output from eating the context window](https://ai.jakubjirak.com/p/shell-output-agent-context): Test runners and build tools are written for humans; agents benefit from quieter machine-oriented modes. - [Prompt ingestion can dominate local latency](https://ai.jakubjirak.com/p/prompt-ingestion-bottleneck): Long contexts punish prefill even when generation tokens arrive quickly afterward. - [Commercial vs free models for tool-using agents: a hybrid route instead of a winner](https://ai.jakubjirak.com/p/commercial-vs-free-agents-hybrid-routing): The useful comparison often ends with two routes: a cheap private default and a visible escalation. - [AI hardware ROI for a shared team GPU server: comparing the complete purchase price](https://ai.jakubjirak.com/p/ai-hardware-roi-shared-gpu-server-purchase-price): The GPU sticker is not the price of a working inference system. - [GitHub Copilot in 2026: from autocomplete to background agent](https://ai.jakubjirak.com/p/github-copilot): Ghost-text was the gateway drug. The interesting Copilot now is the one that opens pull requests while you're at lunch. - [The best local LLMs for coding in 2026](https://ai.jakubjirak.com/p/best-local-llms-for-coding): Ranked picks for running a coding model on your own hardware: by use case and by how much memory you've got. Plus what to skip, and the honest gap to the frontier. - [LLM application security: prompt injection, jailbreaks, and red-teaming](https://ai.jakubjirak.com/p/llm-security-red-teaming): The attack surface of an LLM app isn't the model. It's everything you wired around it. The threats that actually matter, and the layered defenses that actually help. - [AI for documentation: fighting the staleness that makes docs lie](https://ai.jakubjirak.com/p/ai-for-documentation): AI can write docs in seconds, but writing was never the problem. Keeping them true was. How to use AI for documentation that stays honest, for humans and agents alike. - [On-device and edge AI: running models where the cloud can't reach](https://ai.jakubjirak.com/p/on-device-edge-ai): Phones, laptops, and embedded devices can run real models now. The constraints, the use cases, and why 'it runs on the device' is sometimes the whole product. - [Where Intel Arc fits in a local LLM setup](https://ai.jakubjirak.com/p/intel-arc-local-llm): Arc can be useful hardware when the workload matches its memory and software constraints. - [AVX-512 helps only inside the complete CPU path](https://ai.jakubjirak.com/p/avx512-local-inference): Vector instructions matter, but memory bandwidth and runtime kernels can keep them from deciding performance. - [Commercial vs free models for customer-support automation: latency, throughput, and queues](https://ai.jakubjirak.com/p/commercial-vs-free-customer-support-latency-throughput): A local model avoids the WAN; a commercial fleet avoids waiting behind one busy GPU. - [OCR models for tables and statements: handwriting mixed with printed text](https://ai.jakubjirak.com/p/ocr-models-tables-statements-handwriting-mixed-text): Printed labels and handwritten values need different recognition assumptions and confidence thresholds. - [Codex and GPT-5: OpenAI's autonomous coding stack](https://ai.jakubjirak.com/p/codex-gpt5): A CLI and a cloud agent tuned for long, unattended runs in a sandbox. What 'let it grind' actually buys you. - [How to run a local LLM for coding: the complete setup guide](https://ai.jakubjirak.com/p/run-local-llm-guide): From zero to a private coding model wired into your editor in about fifteen minutes. Ollama, the right model for your hardware, and the endpoint that makes everything just work. - [Cap output length before tuning the model](https://ai.jakubjirak.com/p/llm-output-length-cap): The fastest token is the one you never ask the model to generate. - [Use local AI to reduce notification fatigue](https://ai.jakubjirak.com/p/smart-home-notification-fatigue): Clustering and ranking can turn repeated sensor events into one useful alert when hard safety paths remain untouched. - [Qwen 3.6 Plus: Migrating without changing behavior by accident](https://ai.jakubjirak.com/p/qwen-36-plus-migration): A model swap changes templates, defaults, tools, output shape, and failure modes—not just an identifier. - [OCR models for scanned archives: an OCR evaluation that predicts production](https://ai.jakubjirak.com/p/ocr-models-scanned-archives-evaluation): Average character accuracy hides catastrophic errors in dates, totals, units, and identifiers. - [Gemini for developers: a million tokens of context in practice](https://ai.jakubjirak.com/p/gemini): The 1M-token window isn't a bigger version of the same tool. It changes what 'give it the codebase' means, and what breaks when you do. - [The complete guide to AI-assisted coding in 2026](https://ai.jakubjirak.com/p/complete-guide-ai-coding-2026): The whole landscape on one page: the tools, the models, the shift to agents, running locally, and the cost discipline that makes it sustainable, with a map to every deep dive. - [Using a Hailo accelerator with Raspberry Pi](https://ai.jakubjirak.com/p/hailo-raspberry-pi-ai-kit): The AI Kit can add efficient vision inference, provided model conversion and pipeline integration are planned first. - [GLM-5.1: Finding the production fit](https://ai.jakubjirak.com/p/glm-51-current-production-fit): A model should earn a traffic class before it earns the default route. - [Vision models for chart and diagram understanding: preprocessing before the vision model](https://ai.jakubjirak.com/p/vision-models-charts-diagrams-preprocessing): Rotation, cropping, contrast, frame selection, and metadata often improve results more cheaply than a larger model. - [AI hardware ROI for an edge or SBC AI fleet: the utilization curve](https://ai.jakubjirak.com/p/ai-hardware-roi-edge-sbc-fleet-utilization): A fast GPU that waits all day can have worse economics than an expensive API used only when needed. - [AI agent architectures that don't fall over](https://ai.jakubjirak.com/p/agent-architecture): Context, tools, memory, and evals: the boring scaffolding that decides whether your agent is a product or a demo. - [Squeeze the local tier: do everything you can before you pay](https://ai.jakubjirak.com/p/squeeze-the-local-tier): In a cascade, every step a free local model clears is a step you never pay for. A task-by-task guide to what local nails, how to push it further, and when to stop. - [Run OCR before reaching for a vision LLM](https://ai.jakubjirak.com/p/ocr-before-vision-llm): Traditional extraction is faster, cheaper, and more auditable when the page is mostly text. - [Set different timeouts for queue, first token, and stream](https://ai.jakubjirak.com/p/local-inference-timeouts): One giant request timeout hides whether the server is overloaded, loading, or stalled mid-generation. - [Vision models for document vision: video through frame sampling](https://ai.jakubjirak.com/p/vision-models-documents-video-frame-sampling): A vision model sees selected evidence; poor frame sampling can make the decisive moment nonexistent. - [AI hardware ROI for a shared team GPU server: valuing productivity without inventing savings](https://ai.jakubjirak.com/p/ai-hardware-roi-shared-gpu-server-productivity-value): Time saved becomes ROI only when it reduces cost, increases valuable output, or removes a real constraint. - [Running capable code models locally: Ollama, llama.cpp, vLLM](https://ai.jakubjirak.com/p/local-models): When the code can't leave the building, or you just want zero marginal cost. What's realistic on a laptop, a workstation, and a server in 2026. - [Building an autorouter: local-first, paid only when it must](https://ai.jakubjirak.com/p/building-an-autorouter): The cascade is only as good as the function that decides when to escalate. How to build a router that drains work to local, prepares a clean handoff, then steps up to Haiku → Sonnet → Opus. - [Reach a home model safely with WireGuard](https://ai.jakubjirak.com/p/remote-local-llm-over-wireguard): A private tunnel preserves the convenience of a local endpoint without publishing it to the internet. - [Model parallelism across home GPUs](https://ai.jakubjirak.com/p/multi-gpu-model-parallel-home): Splitting weights expands capacity, but unequal cards and interconnect traffic can set an awkward speed ceiling. - [Commercial vs free models for document extraction: the real cost per completed task](https://ai.jakubjirak.com/p/commercial-vs-free-document-extraction-real-cost): Free tokens and cheap hardware can both become expensive after retries, review, and operations. - [OCR models for technical documents and labels: capture quality before recognition](https://ai.jakubjirak.com/p/ocr-models-technical-documents-capture-quality): Focus, exposure, perspective, resolution, and compression set an upper bound no OCR prompt can repair. - [What hardware actually runs these models — decently](https://ai.jakubjirak.com/p/hardware-for-local-llms): VRAM is the gate, quantization is the key, and Apple's unified memory quietly changed the math. A buyer's guide by model size, not by hype. - [GLM-5.2 shipped without benchmarks — and that's the story](https://ai.jakubjirak.com/p/glm-5-2-no-benchmarks): Z.ai released GLM-5.2 the day after the US forced Anthropic to pull Fable 5 globally. A reaction: no-data is not good news, but the withdrawal is the lesson. - [Put authentication in front of the local API](https://ai.jakubjirak.com/p/local-api-auth): Listening on the LAN is not a security model, even when the model itself is private. - [Containerize SBC AI services selectively](https://ai.jakubjirak.com/p/containers-on-raspberry-pi-ai): Containers improve repeatability, but device access, architecture builds, and memory limits need explicit handling. - [Commercial vs free models for coding assistants: the operational burden](https://ai.jakubjirak.com/p/commercial-vs-free-coding-operations): A model endpoint is a service with upgrades, capacity, monitoring, incidents, and recovery. - [OCR models for invoices and receipts: languages, scripts, and mixed alphabets](https://ai.jakubjirak.com/p/ocr-models-invoices-receipts-languages-scripts): Language detection, diacritics, transliteration, and visually similar scripts can change names and identifiers. - [Apple Silicon, MLX, and Core ML for on-device LLMs](https://ai.jakubjirak.com/p/apple-mlx-coreml): Unified memory made the Mac a serious local-inference box. MLX and Core ML are the two ways to actually use it, and they're for different jobs. - [Keep the model library on NVMe, not your home directory](https://ai.jakubjirak.com/p/nvme-model-library-layout): A boring storage layout that shortens cold starts and makes large model collections manageable. - [Keep wake-word detection at the edge](https://ai.jakubjirak.com/p/wake-word-edge-device): A tiny always-listening model can decide when audio leaves the room device. - [Kimi K2.5: Finding the production fit](https://ai.jakubjirak.com/p/kimi-k25-current-production-fit): A model should earn a traffic class before it earns the default route. - [Vision models for chart and diagram understanding: local, hosted, and hybrid vision deployment](https://ai.jakubjirak.com/p/vision-models-charts-diagrams-local-hybrid-deployment): Local vision protects data and predictable volume; hosted models provide elastic capacity and a higher capability ceiling. - [RAG that actually retrieves the right thing](https://ai.jakubjirak.com/p/rag-that-retrieves): Most RAG systems fail at retrieval, not generation. The fixes are unglamorous: chunk with intent, rerank, and evaluate the retriever on its own. - [A model-server health check should prove readiness](https://ai.jakubjirak.com/p/model-server-health-checks): A process can accept TCP connections while weights are missing, the GPU is wedged, or generation is impossible. - [Gemini 3.5 Flash: Tool calling without magical thinking](https://ai.jakubjirak.com/p/gemini-35-flash-tool-calling): The model proposes calls; the application owns permissions, validation, retries, and state. - [Vision models for UI and screenshot understanding: prompts grounded in visible evidence](https://ai.jakubjirak.com/p/vision-models-ui-screenshots-grounded-prompting): A good vision prompt separates observation, inference, uncertainty, and the requested action. - [AI hardware ROI for a used-GPU inference build: electricity and cooling economics](https://ai.jakubjirak.com/p/ai-hardware-roi-used-gpu-build-electricity-cooling): Board power is not wall energy, and wall energy is not the entire cooling cost. - [Agentic architectures: the four topologies and where they break](https://ai.jakubjirak.com/p/agentic-architecture-patterns): Single agent, orchestrator-worker, evaluator loop, multi-agent. Most teams reach for the most complex one first. Here's when each earns its keep. - [Read GGUF quant names without memorizing folklore](https://ai.jakubjirak.com/p/gguf-k-quant-names): K-quants, importance matrices, and mixed precision are easier to choose when the labels map to trade-offs. - [LoRA adapters are small, but serving them is not free](https://ai.jakubjirak.com/p/lora-inference-memory-cost): Base weights can be shared while adapter loading, batching, and cache identity add operational complexity. - [Commercial vs free models for document extraction: reliability and exit strategy](https://ai.jakubjirak.com/p/commercial-vs-free-document-extraction-reliability-exit): Provider outages and local hardware failures are different risks; neither architecture is automatically resilient. - [OCR models for technical documents and labels: an OCR evaluation that predicts production](https://ai.jakubjirak.com/p/ocr-models-technical-documents-evaluation): Average character accuracy hides catastrophic errors in dates, totals, units, and identifiers. - [The architecture that cuts 99% of your LLM bill](https://ai.jakubjirak.com/p/99-percent-cost-architecture): Not one trick: five multiplicative levers. Cache, route, batch, compress, and shape output, and an order-of-magnitude bill becomes a rounding error. - [Do the vector-storage math early](https://ai.jakubjirak.com/p/embedding-dimensions-storage): Embedding dimension, precision, metadata, and index overhead can outweigh the source corpus. - [Choose a local model by active parameters, not its logo](https://ai.jakubjirak.com/p/choose-model-by-active-parameters): Dense and mixture-of-experts models put different pressure on memory, compute, and storage. - [Commercial vs free models for RAG systems: quality ceiling versus sufficient quality](https://ai.jakubjirak.com/p/commercial-vs-free-rag-quality-ceiling): The strongest answer is valuable only when the workflow benefits from the difference. - [OCR models for forms and handwriting: preprocessing for OCR models](https://ai.jakubjirak.com/p/ocr-models-forms-handwriting-preprocessing): Deskewing and contrast can help recognition; aggressive cleanup can manufacture or erase characters. - [Stop burning tokens in GitHub Copilot](https://ai.jakubjirak.com/p/copilot-token-diet): Premium requests, model pickers, and a chat that hoards context. A practical diet for getting Copilot's value without torching your quota. - [Batching helps throughput and can ruin chat](https://ai.jakubjirak.com/p/batching-local-llm-requests): How to choose between continuous batching, queues, and immediate execution on a shared local server. - [Design a smart camera that stays private](https://ai.jakubjirak.com/p/private-smart-camera-design): Local detection helps, but retention, thumbnails, notifications, and remote access still expose household images. - [MiniMax M2.7: Finding the production fit](https://ai.jakubjirak.com/p/minimax-m27-production-fit): A model should earn a traffic class before it earns the default route. - [Vision models for product-image analysis: video through frame sampling](https://ai.jakubjirak.com/p/vision-models-product-images-video-frame-sampling): A vision model sees selected evidence; poor frame sampling can make the decisive moment nonexistent. - [Headroom: a compression layer between your agent and the model](https://ai.jakubjirak.com/p/headroom): Tool outputs, logs, and RAG chunks are mostly filler. Headroom compresses them before they hit the model: 60–95% fewer tokens, accuracy preserved. - [Make generation cancellation actually stop compute](https://ai.jakubjirak.com/p/cancel-local-generation): Closing the browser is not enough if the server continues producing unseen tokens. - [GPT-5.6: Tool calling without magical thinking](https://ai.jakubjirak.com/p/gpt-56-family-tool-calling): The model proposes calls; the application owns permissions, validation, retries, and state. - [Vision models for camera-event understanding: choosing the right vision model](https://ai.jakubjirak.com/p/vision-models-camera-events-model-selection): A vision leaderboard cannot tell you whether the model reads your images at your resolution. - [AI hardware ROI for an Apple Silicon local-model system: five-year total cost of ownership](https://ai.jakubjirak.com/p/ai-hardware-roi-apple-silicon-total-cost-ownership): Purchase price starts the comparison; energy, maintenance, downtime, and replacement finish it. - [Caveman: why use many token when few token do trick](https://ai.jakubjirak.com/p/caveman): A skill that makes your agent talk like a caveman: drop filler, keep substance. ~65% fewer output tokens, and the accuracy often goes up, not down. - [Grammar-constrained decoding beats repeated JSON pleading](https://ai.jakubjirak.com/p/grammar-constrained-decoding): Constraining valid tokens can turn format compliance from a prompt hope into a runtime property. - [Evaluate the adapter against the base model](https://ai.jakubjirak.com/p/adapter-evaluation-matrix): A fine-tune earns deployment only when gains exceed new regressions and operational cost. - [Commercial vs free models for tool-using agents: the operational burden](https://ai.jakubjirak.com/p/commercial-vs-free-agents-operations): A model endpoint is a service with upgrades, capacity, monitoring, incidents, and recovery. - [AI hardware ROI for a personal AI workstation: depreciation and resale value](https://ai.jakubjirak.com/p/ai-hardware-roi-personal-workstation-depreciation-resale): AI hardware loses economic value when capacity, software support, or workload fit moves—not only when it breaks. - [Ponytail: the lazy senior dev inside your agent](https://ai.jakubjirak.com/p/ponytail): He looks at your fifty lines, says nothing, replaces them with one. Ponytail forces the laziest solution that works: 80–94% less code, 47–77% cheaper. - [Small local models are excellent classifiers—after calibration](https://ai.jakubjirak.com/p/small-model-classification): Constrained labels, confidence thresholds, and an abstain path turn cheap inference into useful routing. - [Do not compare models with one universal prompt](https://ai.jakubjirak.com/p/compare-models-same-prompt-template): A fair evaluation preserves the task while respecting each model’s supported conversation template. - [Commercial vs free models for RAG systems: licenses, terms, and redistribution](https://ai.jakubjirak.com/p/commercial-vs-free-rag-license-terms): Open weights, open source, free access, and commercial permission describe different things. - [OCR models for forms and handwriting: local hardware and hybrid OCR deployment](https://ai.jakubjirak.com/p/ocr-models-forms-handwriting-local-hardware-deployment): OCR can be CPU-friendly, accelerator-heavy, or API-bound depending on page volume and model class. - [Stacking it all: ultra token savings at the same quality](https://ai.jakubjirak.com/p/ultra-token-savings): Caching, routing, compression, terse prose, lazy code. Wire all of them together and a real agent bill drops by an order of magnitude, without giving up output quality. - [Give the model a repository budget](https://ai.jakubjirak.com/p/prompt-budget-repository-work): A strict evidence budget produces better coding answers than dumping every file into context. - [Where AI belongs around a heat pump](https://ai.jakubjirak.com/p/heat-pump-ai-boundaries): Prediction and comfort modeling can help, but compressor protection and temperature limits stay deterministic. - [Qwen 3.6 Plus: Finding the production fit](https://ai.jakubjirak.com/p/qwen-36-plus-production-fit): A model should earn a traffic class before it earns the default route. - [OCR models for scanned archives: layout and reading order](https://ai.jakubjirak.com/p/ocr-models-scanned-archives-layout-reading-order): Perfect words in the wrong sequence are a failed document extraction. - [Vibe coding, honestly: what changes when the agent writes the code](https://ai.jakubjirak.com/p/vibe-coding-honestly): Strip the hype and 'vibe coding' is a real workflow shift with a real set of new failure modes. What actually changes, what doesn't, and why the harness beats the model. - [Do not debug AI on an underpowered SBC supply](https://ai.jakubjirak.com/p/sbc-power-supply-ai-load): Inference creates sustained CPU, USB, and storage load that exposes marginal cables and adapters. - [Grok 4.5: Tool calling without magical thinking](https://ai.jakubjirak.com/p/grok-45-tool-calling): The model proposes calls; the application owns permissions, validation, retries, and state. - [Vision models for camera-event understanding: an evaluation set for visual reasoning](https://ai.jakubjirak.com/p/vision-models-camera-events-evaluation): Vision evaluations need blur, glare, occlusion, tiny text, bad crops, and examples that cannot be answered. - [AI hardware ROI for an Apple Silicon local-model system: pricing risk and downtime](https://ai.jakubjirak.com/p/ai-hardware-roi-apple-silicon-risk-downtime): A cheap single box becomes expensive when its failure stops a workflow with no usable fallback. - [Sandboxing the agent: letting AI run code without losing the building](https://ai.jakubjirak.com/p/sandboxing-coding-agents): An agent that can run a command can run the wrong command. Isolation, least privilege, and approval gates are the line between a teammate and an incident. - [Make review severity operational](https://ai.jakubjirak.com/p/llm-code-review-severity): A useful finding states impact, evidence, and a plausible failure path instead of sounding concerned. - [Tune continuous batching for the users you have](https://ai.jakubjirak.com/p/continuous-batching-tuning): Scheduler limits determine whether shared inference feels efficient or merely crowded. - [Vision models for document vision: resolution and visual-token budgets](https://ai.jakubjirak.com/p/vision-models-documents-resolution-token-budget): Higher resolution helps small details until preprocessing, visual tokens, memory, and latency become the product. - [AI hardware ROI for a shared team GPU server: break-even against commercial APIs](https://ai.jakubjirak.com/p/ai-hardware-roi-shared-gpu-server-api-break-even): Local hardware wins only after enough equivalent accepted work crosses the machine. - [Is a subscription the wrong business model for AI coding tools?](https://ai.jakubjirak.com/p/subscription-wrong-for-ai): Flat-rate pricing assumes a human-sized appetite for compute. Agents don't have one. Why usage is eating subscriptions, and what pricing survives. - [Consumer or workstation GPU for local AI?](https://ai.jakubjirak.com/p/consumer-gpu-vs-workstation-gpu): Capacity, ECC, cooling, virtualization, and warranty matter differently from raw inference speed. - [Understand memory-mapped model loading](https://ai.jakubjirak.com/p/memory-mapped-model-loading): Fast startup and low apparent RAM use can hide page faults and storage dependence during early requests. - [Commercial vs free models for customer-support automation: long-context economics](https://ai.jakubjirak.com/p/commercial-vs-free-customer-support-context-economics): A giant context window can replace engineering discipline with a large recurring bill. - [OCR models for tables and statements: tables and key-value association](https://ai.jakubjirak.com/p/ocr-models-tables-statements-tables-key-values): Recognizing tokens is easier than proving which label, column, row, and unit they belong to. - [Observability for agents: you can't operate what you can't see](https://ai.jakubjirak.com/p/agent-observability): A coding agent in production is a nondeterministic, multi-step, tool-calling system. Traces, token accounting, and eval dashboards are how you keep it honest. - [Treat summaries as lossy state, not memory](https://ai.jakubjirak.com/p/summaries-are-lossy-state): Compression keeps sessions affordable, but important constraints need a different home. - [Prompt injection can enter through a camera or calendar](https://ai.jakubjirak.com/p/prompt-injection-smart-home): Household assistants consume untrusted text from emails, QR codes, webpages, notifications, and visual scenes. - [Routing Gemini, GPT-5.6, Grok, GLM, Kimi, MiniMax, and Qwen](https://ai.jakubjirak.com/p/frontier-model-router-2026): A practical model portfolio starts with traffic classes, quality gates, and explicit fallbacks. - [OCR models for invoices and receipts: choosing an OCR-capable model](https://ai.jakubjirak.com/p/ocr-models-invoices-receipts-model-selection): OCR engines, document parsers, and vision-language models solve overlapping but different layers. - [Governing skills at scale: progressive disclosure and software as memory](https://ai.jakubjirak.com/p/governing-skills-at-scale): Skills turn a general agent into a specialist. But a folder of prompts per developer is chaos. Central management, progressive disclosure, and institutional memory. - [The used RTX 3090 buyer’s checklist for local LLMs](https://ai.jakubjirak.com/p/used-3090-local-llm-checklist): What matters beyond 24 GB on the sticker: power, cooling, connectors, and signs of a tired card. - [Run Frigate around an SBC, not necessarily on it](https://ai.jakubjirak.com/p/frigate-sbc-architecture): A small board can coordinate cameras while a Coral, GPU, or stronger host handles sustained detection. - [GLM-5.1: Tool calling without magical thinking](https://ai.jakubjirak.com/p/glm-51-current-tool-calling): The model proposes calls; the application owns permissions, validation, retries, and state. - [Vision models for chart and diagram understanding: structured output from images](https://ai.jakubjirak.com/p/vision-models-charts-diagrams-structured-output): JSON syntax is the easy part; visual grounding and semantic validation decide whether the record is usable. - [AI hardware ROI for an edge or SBC AI fleet: depreciation and resale value](https://ai.jakubjirak.com/p/ai-hardware-roi-edge-sbc-fleet-depreciation-resale): AI hardware loses economic value when capacity, software support, or workload fit moves—not only when it breaks. - [Long-running autonomous agents: letting it work while you sleep](https://ai.jakubjirak.com/p/long-running-autonomous-agents): The frontier of agentic coding isn't a smarter chat. It's an agent you can trust to grind unattended for an hour. Budgets, checkpoints, and knowing when to walk away. - [Price the RAG rebuild before changing chunking](https://ai.jakubjirak.com/p/rag-index-rebuild-cost): A small retrieval improvement may require days of parsing, embedding, transfer, and validation. - [Deduplicate identical in-flight LLM requests](https://ai.jakubjirak.com/p/llm-request-deduplication): Concurrent callers can share one generation when prompt, settings, permissions, and freshness requirements truly match. - [Vision models for document vision: privacy and security for visual inputs](https://ai.jakubjirak.com/p/vision-models-documents-privacy-security): Images leak faces, screens, documents, locations, reflections, and background details beyond the intended task. - [AI hardware ROI for a shared team GPU server: a sensitivity analysis that can change the answer](https://ai.jakubjirak.com/p/ai-hardware-roi-shared-gpu-server-sensitivity-analysis): ROI is a range driven by utilization, lifespan, API price, energy, quality, and demand growth. - [Export controls and the geopolitics of your AI coding stack](https://ai.jakubjirak.com/p/ai-export-controls): The model behind your agent is also a geopolitical artifact. Export rules, open weights, and why where a model comes from is now an architecture decision. - [Batch size on Apple Silicon is a memory decision](https://ai.jakubjirak.com/p/apple-mlx-batch-size): Unified memory makes experimentation easy, but larger batches can crowd out the rest of the workstation. - [Idle power belongs in the GPU purchase decision](https://ai.jakubjirak.com/p/gpu-idle-power-model-server): An always-on local server can spend more energy waiting than generating. - [Commercial vs free models for document extraction: privacy and data control](https://ai.jakubjirak.com/p/commercial-vs-free-document-extraction-privacy-control): Local weights reduce data movement; commercial services may offer stronger managed controls than an improvised server. - [OCR models for technical documents and labels: layout and reading order](https://ai.jakubjirak.com/p/ocr-models-technical-documents-layout-reading-order): Perfect words in the wrong sequence are a failed document extraction. - [Knowledge graphs vs vector RAG: when relationships beat similarity](https://ai.jakubjirak.com/p/knowledge-graphs-vs-rag): Vector search finds chunks that look like your query. Some questions need chunks that are connected to each other. A practical comparison, and the hybrid that wins. - [Back up configuration, not 500 GB of weights](https://ai.jakubjirak.com/p/local-llm-backup-plan): A local AI rebuild is fast when the small, irreplaceable parts are identified correctly. - [Benchmark AI on an SBC without fooling yourself](https://ai.jakubjirak.com/p/benchmark-ai-on-sbc): Cold storage, thermal state, power mode, and background services dominate small-board results. - [Commercial vs free models for coding assistants: tools and integration quality](https://ai.jakubjirak.com/p/commercial-vs-free-coding-tool-ecosystem): Native tools save glue code, while open stacks preserve portability and make boundaries inspectable. - [OCR models for invoices and receipts: structured OCR with provenance](https://ai.jakubjirak.com/p/ocr-models-invoices-receipts-structured-provenance): Every consequential field should point back to the pixels that support it. - [Using AI to learn faster, not just to type faster](https://ai.jakubjirak.com/p/ai-for-learning): The biggest gain from these tools isn't the code they write. It's how fast they get you to competence in something you didn't understand yesterday. If you let them. - [Build a local AI workstation you can live beside](https://ai.jakubjirak.com/p/quiet-local-ai-workstation): Fan curves, case pressure, power caps, and why acoustic comfort changes how often local models get used. - [Design the smart home to work when AI is down](https://ai.jakubjirak.com/p/smart-home-ai-fallback): Lights, locks, alarms, and heating should not depend on a model server completing a generation. - [Kimi K2.5: Tool calling without magical thinking](https://ai.jakubjirak.com/p/kimi-k25-current-tool-calling): The model proposes calls; the application owns permissions, validation, retries, and state. - [Vision models for product-image analysis: resolution and visual-token budgets](https://ai.jakubjirak.com/p/vision-models-product-images-resolution-token-budget): Higher resolution helps small details until preprocessing, visual tokens, memory, and latency become the product. - [Advanced agent architecture: context is the scarce resource](https://ai.jakubjirak.com/p/advanced-agent-architecture): Past the basics, every hard agent problem is a context problem. Compaction, context editing, memory tiers, sub-agent isolation, and keeping intermediate results out of the window. - [Run the model server under systemd](https://ai.jakubjirak.com/p/systemd-local-llm-service): Restart policies, resource limits, logs, and dependencies make a home service boring in the best way. - [Gemini 3.5 Flash: The cost and latency worksheet](https://ai.jakubjirak.com/p/gemini-35-flash-cost-latency): Token prices, reasoning effort, caching, retries, and review time belong in one calculation. - [Vision models for UI and screenshot understanding: reasoning across multiple images](https://ai.jakubjirak.com/p/vision-models-ui-screenshots-multiple-images): Image order, identity, duplicated views, and changing scenes make multi-image prompts a data-association problem. - [AI hardware ROI for a used-GPU inference build: renting GPU capacity versus buying](https://ai.jakubjirak.com/p/ai-hardware-roi-used-gpu-build-rent-or-buy): Rental converts capacity risk into hourly cost; ownership converts hourly cost into utilization risk. - [Local-first, last-mile-paid: the model cascade that runs mostly free](https://ai.jakubjirak.com/p/local-first-cascade): Do the bulk of the work on a free local model; escalate to Haiku, then Sonnet, then Opus only at the last mile where it's actually needed. The architecture and the triggers. - [The prompt template can ruin a good local model](https://ai.jakubjirak.com/p/model-prompt-template-mismatch): Chat markers and system-message conventions are part of the model, not cosmetic wrapper text. - [Budget home hardware for QLoRA honestly](https://ai.jakubjirak.com/p/qlora-home-hardware-budget): Quantized training saves weight memory, but gradients, optimizer state, activations, sequence length, and batches remain. - [Commercial vs free models for document extraction: a hybrid route instead of a winner](https://ai.jakubjirak.com/p/commercial-vs-free-document-extraction-hybrid-routing): The useful comparison often ends with two routes: a cheap private default and a visible escalation. - [AI hardware ROI for a personal AI workstation: comparing the complete purchase price](https://ai.jakubjirak.com/p/ai-hardware-roi-personal-workstation-purchase-price): The GPU sticker is not the price of a working inference system. - [Measure tokens per joule, not only tokens per second](https://ai.jakubjirak.com/p/tokens-per-joule): Energy efficiency reveals better hardware and settings for long-running local workloads. - [Put a reasoning budget on local models](https://ai.jakubjirak.com/p/reasoning-model-budget-local): Long hidden or visible reasoning can consume latency and energy without improving routine answers. - [Commercial vs free models for RAG systems: latency, throughput, and queues](https://ai.jakubjirak.com/p/commercial-vs-free-rag-latency-throughput): A local model avoids the WAN; a commercial fleet avoids waiting behind one busy GPU. - [OCR models for forms and handwriting: handwriting mixed with printed text](https://ai.jakubjirak.com/p/ocr-models-forms-handwriting-handwriting-mixed-text): Printed labels and handwritten values need different recognition assumptions and confidence thresholds. - [Find the speculative-decoding break-even point](https://ai.jakubjirak.com/p/speculative-decoding-break-even): Draft models are useful only when acceptance rate repays their memory and coordination overhead. - [Local package detection is a good edge-AI project](https://ai.jakubjirak.com/p/package-detection-doorbell): The event is narrow, visually distinct, and useful even when the detector occasionally abstains. - [MiniMax M2.7: Tool calling without magical thinking](https://ai.jakubjirak.com/p/minimax-m27-tool-calling): The model proposes calls; the application owns permissions, validation, retries, and state. - [Vision models for product-image analysis: privacy and security for visual inputs](https://ai.jakubjirak.com/p/vision-models-product-images-privacy-security): Images leak faces, screens, documents, locations, reflections, and background details beyond the intended task. - [What a Raspberry Pi 5 can realistically do with a local LLM](https://ai.jakubjirak.com/p/raspberry-pi-5-local-llm): Small quantized models are useful on a Pi when the job is narrow and latency is not disguised. - [GPT-5.6: The cost and latency worksheet](https://ai.jakubjirak.com/p/gpt-56-family-cost-latency): Token prices, reasoning effort, caching, retries, and review time belong in one calculation. - [Vision models for camera-event understanding: preprocessing before the vision model](https://ai.jakubjirak.com/p/vision-models-camera-events-preprocessing): Rotation, cropping, contrast, frame selection, and metadata often improve results more cheaply than a larger model. - [AI hardware ROI for an Apple Silicon local-model system: the utilization curve](https://ai.jakubjirak.com/p/ai-hardware-roi-apple-silicon-utilization): A fast GPU that waits all day can have worse economics than an expensive API used only when needed. - [How large must a local tool-calling model be?](https://ai.jakubjirak.com/p/model-size-for-tool-calling): Tool count, schema complexity, argument precision, and recovery matter more than a single parameter threshold. - [Sliding-window attention changes long-context expectations](https://ai.jakubjirak.com/p/sliding-window-attention-local): A large advertised window may not give every token equal access to every earlier detail. - [Commercial vs free models for tool-using agents: tools and integration quality](https://ai.jakubjirak.com/p/commercial-vs-free-agents-tool-ecosystem): Native tools save glue code, while open stacks preserve portability and make boundaries inspectable. - [AI hardware ROI for a personal AI workstation: valuing productivity without inventing savings](https://ai.jakubjirak.com/p/ai-hardware-roi-personal-workstation-productivity-value): Time saved becomes ROI only when it reduces cost, increases valuable output, or removes a real constraint. - [A practical local-first, cloud-second policy](https://ai.jakubjirak.com/p/hybrid-local-cloud-routing): Keep ordinary and sensitive work nearby while escalating cases that need capability or context. - [A portfolio of small models can beat one large resident model](https://ai.jakubjirak.com/p/task-specific-small-model-portfolio): Specialists reduce latency and memory when routing and maintenance stay simple. - [Commercial vs free models for customer-support automation: the real cost per completed task](https://ai.jakubjirak.com/p/commercial-vs-free-customer-support-real-cost): Free tokens and cheap hardware can both become expensive after retries, review, and operations. - [OCR models for tables and statements: capture quality before recognition](https://ai.jakubjirak.com/p/ocr-models-tables-statements-capture-quality): Focus, exposure, perspective, resolution, and compression set an upper bound no OCR prompt can repair. - [Put a retry budget on structured output](https://ai.jakubjirak.com/p/structured-output-retry-budget): Schemas help automation, but blind retries can turn one malformed response into a latency spiral. - [Analyze indoor air quality locally](https://ai.jakubjirak.com/p/indoor-air-quality-local-analysis): CO2, particles, humidity, and VOC sensors become useful when calibration and room context are respected. - [Qwen 3.6 Plus: Tool calling without magical thinking](https://ai.jakubjirak.com/p/qwen-36-plus-tool-calling): The model proposes calls; the application owns permissions, validation, retries, and state. - [OCR models for scanned archives: languages, scripts, and mixed alphabets](https://ai.jakubjirak.com/p/ocr-models-scanned-archives-languages-scripts): Language detection, diacritics, transliteration, and visually similar scripts can change names and identifiers. - [Power edge AI nodes with PoE when wiring allows](https://ai.jakubjirak.com/p/poe-raspberry-pi-edge-ai): One cable simplifies placement and recovery, but the thermal and power budget still needs arithmetic. - [Grok 4.5: The cost and latency worksheet](https://ai.jakubjirak.com/p/grok-45-cost-latency): Token prices, reasoning effort, caching, retries, and review time belong in one calculation. - [Vision models for camera-event understanding: local, hosted, and hybrid vision deployment](https://ai.jakubjirak.com/p/vision-models-camera-events-local-hybrid-deployment): Local vision protects data and predictable volume; hosted models provide elastic capacity and a higher capability ceiling. - [AI hardware ROI for an edge or SBC AI fleet: comparing the complete purchase price](https://ai.jakubjirak.com/p/ai-hardware-roi-edge-sbc-fleet-purchase-price): The GPU sticker is not the price of a working inference system. - [Local inference does not eliminate redaction](https://ai.jakubjirak.com/p/private-document-redaction-local): Logs, caches, vector stores, backups, and screenshots can spread sensitive text after the model call ends. - [Give the KV cache an eviction policy](https://ai.jakubjirak.com/p/kv-cache-eviction-policy): Idle conversations can occupy expensive memory long after their users leave. - [Vision models for document vision: prompts grounded in visible evidence](https://ai.jakubjirak.com/p/vision-models-documents-grounded-prompting): A good vision prompt separates observation, inference, uncertainty, and the requested action. - [AI hardware ROI for a shared team GPU server: electricity and cooling economics](https://ai.jakubjirak.com/p/ai-hardware-roi-shared-gpu-server-electricity-cooling): Board power is not wall energy, and wall energy is not the entire cooling cost. - [Buying a laptop for local models](https://ai.jakubjirak.com/p/laptop-vram-local-models): Soldered memory, reduced GPU power, heat, and battery behavior make desktop advice unreliable. - [zram can save a small host, not accelerate model weights](https://ai.jakubjirak.com/p/zram-local-inference): Compressed swap is useful for ordinary pages while incompressible quantized weights remain a poor target. - [Commercial vs free models for customer-support automation: reliability and exit strategy](https://ai.jakubjirak.com/p/commercial-vs-free-customer-support-reliability-exit): Provider outages and local hardware failures are different risks; neither architecture is automatically resilient. - [OCR models for tables and statements: an OCR evaluation that predicts production](https://ai.jakubjirak.com/p/ocr-models-tables-statements-evaluation): Average character accuracy hides catastrophic errors in dates, totals, units, and identifiers. - [Build a boring local model router](https://ai.jakubjirak.com/p/local-model-router): Simple rules based on task, context size, and latency can outperform a clever learned router. - [Log smart-home AI without logging the household](https://ai.jakubjirak.com/p/smart-home-ai-logs-privacy): Operational metrics can diagnose latency and failures without retaining every utterance, image, and entity state. - [Commercial vs free models for coding assistants: quality ceiling versus sufficient quality](https://ai.jakubjirak.com/p/commercial-vs-free-coding-quality-ceiling): The strongest answer is valuable only when the workflow benefits from the difference. - [OCR models for invoices and receipts: preprocessing for OCR models](https://ai.jakubjirak.com/p/ocr-models-invoices-receipts-preprocessing): Deskewing and contrast can help recognition; aggressive cleanup can manufacture or erase characters. - [PCIe lanes matter less—and more—than you think](https://ai.jakubjirak.com/p/pcie-lanes-dual-gpu-llm): A practical guide to dual-GPU inference without turning motherboard shopping into folklore. - [Build a Raspberry Pi voice satellite, not a second server](https://ai.jakubjirak.com/p/raspberry-pi-voice-satellite): The room device should capture and play audio while central hardware performs heavier speech and language work. - [GLM-5.1: The cost and latency worksheet](https://ai.jakubjirak.com/p/glm-51-current-cost-latency): Token prices, reasoning effort, caching, retries, and review time belong in one calculation. - [Vision models for chart and diagram understanding: video through frame sampling](https://ai.jakubjirak.com/p/vision-models-charts-diagrams-video-frame-sampling): A vision model sees selected evidence; poor frame sampling can make the decisive moment nonexistent. - [AI hardware ROI for an edge or SBC AI fleet: valuing productivity without inventing savings](https://ai.jakubjirak.com/p/ai-hardware-roi-edge-sbc-fleet-productivity-value): Time saved becomes ROI only when it reduces cost, increases valuable output, or removes a real constraint. - [Metadata filters are cheaper than better embeddings](https://ai.jakubjirak.com/p/metadata-filters-rag): Tenant, product, version, language, and time constraints can remove impossible documents before similarity search. - [Include human review in LLM efficiency math](https://ai.jakubjirak.com/p/human-review-cost-llm): Cheap generation can be expensive when every answer requires careful repair. - [Vision models for UI and screenshot understanding: choosing the right vision model](https://ai.jakubjirak.com/p/vision-models-ui-screenshots-model-selection): A vision leaderboard cannot tell you whether the model reads your images at your resolution. - [AI hardware ROI for a used-GPU inference build: five-year total cost of ownership](https://ai.jakubjirak.com/p/ai-hardware-roi-used-gpu-build-total-cost-ownership): Purchase price starts the comparison; energy, maintenance, downtime, and replacement finish it. - [Read macOS memory pressure during inference](https://ai.jakubjirak.com/p/mac-memory-pressure-inference): Free-memory numbers are misleading on a system designed to use RAM aggressively. - [Rack server or tower for local LLMs?](https://ai.jakubjirak.com/p/rack-vs-tower-local-llm): Density and remote management compete with noise, idle power, GPU fit, and household practicality. - [Commercial vs free models for document extraction: the operational burden](https://ai.jakubjirak.com/p/commercial-vs-free-document-extraction-operations): A model endpoint is a service with upgrades, capacity, monitoring, incidents, and recovery. - [OCR models for technical documents and labels: languages, scripts, and mixed alphabets](https://ai.jakubjirak.com/p/ocr-models-technical-documents-languages-scripts): Language detection, diacritics, transliteration, and visually similar scripts can change names and identifiers. - [Separate the embedding server from generation](https://ai.jakubjirak.com/p/local-embedding-server): Embeddings and chat have different latency, batching, and model-residency patterns. - [The enclosure is part of the edge model](https://ai.jakubjirak.com/p/sbc-enclosure-thermal-design): Plastic, metal, vents, dust, orientation, and nearby equipment decide sustained clocks and sensor reliability. - [Commercial vs free models for coding assistants: licenses, terms, and redistribution](https://ai.jakubjirak.com/p/commercial-vs-free-coding-license-terms): Open weights, open source, free access, and commercial permission describe different things. - [OCR models for invoices and receipts: local hardware and hybrid OCR deployment](https://ai.jakubjirak.com/p/ocr-models-invoices-receipts-local-hardware-deployment): OCR can be CPU-friendly, accelerator-heavy, or API-bound depending on page volume and model class. - [A/B test quants with your prompts, not a leaderboard](https://ai.jakubjirak.com/p/quantization-ab-test): A small blind test reveals whether Q4, Q5, or Q8 is worth the memory on your machine. - [Matter does not make the AI layer automatic](https://ai.jakubjirak.com/p/matter-local-ai): Device interoperability solves discovery and control, while reasoning and household policy remain separate. - [Kimi K2.5: The cost and latency worksheet](https://ai.jakubjirak.com/p/kimi-k25-current-cost-latency): Token prices, reasoning effort, caching, retries, and review time belong in one calculation. - [Vision models for product-image analysis: prompts grounded in visible evidence](https://ai.jakubjirak.com/p/vision-models-product-images-grounded-prompting): A good vision prompt separates observation, inference, uncertainty, and the requested action. - [Fix model-cache ownership before the container starts](https://ai.jakubjirak.com/p/docker-model-cache-permissions): Large downloads magnify a small UID, mount, or read-only-volume mistake. - [Gemini 3.5 Flash: An evaluation set worth keeping](https://ai.jakubjirak.com/p/gemini-35-flash-evaluation): Vendor benchmarks orient the search; local failures decide what gets deployed. - [Vision models for UI and screenshot understanding: an evaluation set for visual reasoning](https://ai.jakubjirak.com/p/vision-models-ui-screenshots-evaluation): Vision evaluations need blur, glare, occlusion, tiny text, bad crops, and examples that cannot be answered. - [AI hardware ROI for a used-GPU inference build: pricing risk and downtime](https://ai.jakubjirak.com/p/ai-hardware-roi-used-gpu-build-risk-downtime): A cheap single box becomes expensive when its failure stops a workflow with no usable fallback. - [Use different sampling settings for different jobs](https://ai.jakubjirak.com/p/sampling-settings-by-task): Code repair, extraction, brainstorming, and prose should not share one inherited temperature. - [One hundred clean examples can beat ten thousand scraped ones](https://ai.jakubjirak.com/p/fine-tuning-data-quality-local): Local fine-tuning amplifies contradictions, formatting errors, and accidental shortcuts in the dataset. - [Commercial vs free models for tool-using agents: quality ceiling versus sufficient quality](https://ai.jakubjirak.com/p/commercial-vs-free-agents-quality-ceiling): The strongest answer is valuable only when the workflow benefits from the difference. - [AI hardware ROI for a personal AI workstation: break-even against commercial APIs](https://ai.jakubjirak.com/p/ai-hardware-roi-personal-workstation-api-break-even): Local hardware wins only after enough equivalent accepted work crosses the machine. - [Average latency hides the local server you actually have](https://ai.jakubjirak.com/p/p95-local-inference): Tail latency exposes model swaps, thermal throttling, queues, and background contention. - [Base or instruct model for a local application?](https://ai.jakubjirak.com/p/base-vs-instruct-local-model): Instruction tuning is convenient for assistants; base models still matter for completion and controlled adaptation. - [Commercial vs free models for RAG systems: long-context economics](https://ai.jakubjirak.com/p/commercial-vs-free-rag-context-economics): A giant context window can replace engineering discipline with a large recurring bill. - [OCR models for forms and handwriting: tables and key-value association](https://ai.jakubjirak.com/p/ocr-models-forms-handwriting-tables-key-values): Recognizing tokens is easier than proving which label, column, row, and unit they belong to. - [Stop giving llama.cpp every CPU thread](https://ai.jakubjirak.com/p/llama-cpp-thread-tuning): Thread count, physical cores, and memory bandwidth rarely scale in a straight line. - [Make smart irrigation sensor-first and AI-second](https://ai.jakubjirak.com/p/smart-irrigation-local-ai): Soil moisture, rain, season, and valve feedback should bound any model recommendation. - [OCR models for scanned archives: choosing an OCR-capable model](https://ai.jakubjirak.com/p/ocr-models-scanned-archives-model-selection): OCR engines, document parsers, and vision-language models solve overlapping but different layers. - [Choose Raspberry Pi memory for the whole home stack](https://ai.jakubjirak.com/p/rpi-memory-sizing-home-ai): Home Assistant, containers, caches, and an AI model all compete for the same RAM. - [GPT-5.6: An evaluation set worth keeping](https://ai.jakubjirak.com/p/gpt-56-family-evaluation): Vendor benchmarks orient the search; local failures decide what gets deployed. - [Vision models for camera-event understanding: structured output from images](https://ai.jakubjirak.com/p/vision-models-camera-events-structured-output): JSON syntax is the easy part; visual grounding and semantic validation decide whether the record is usable. - [AI hardware ROI for an Apple Silicon local-model system: depreciation and resale value](https://ai.jakubjirak.com/p/ai-hardware-roi-apple-silicon-depreciation-resale): AI hardware loses economic value when capacity, software support, or workload fit moves—not only when it breaks. - [Return compact tool results to the model](https://ai.jakubjirak.com/p/compact-tool-results): The model needs decision-relevant evidence, not every byte a command produced. - [Design around the lost-in-the-middle problem](https://ai.jakubjirak.com/p/lost-in-middle-local-rag): Relevant evidence buried in a long prompt can be harder to use than a smaller, well-ordered context. - [Commercial vs free models for tool-using agents: licenses, terms, and redistribution](https://ai.jakubjirak.com/p/commercial-vs-free-agents-license-terms): Open weights, open source, free access, and commercial permission describe different things. - [AI hardware ROI for a personal AI workstation: a sensitivity analysis that can change the answer](https://ai.jakubjirak.com/p/ai-hardware-roi-personal-workstation-sensitivity-analysis): ROI is a range driven by utilization, lifespan, API price, energy, quality, and demand growth. - [NVIDIA or AMD for a local inference box?](https://ai.jakubjirak.com/p/nvidia-vs-amd-local-inference): The software stack, memory capacity, power, and maintenance questions that matter after launch-day benchmarks fade. - [Server CPU or desktop CPU for local models?](https://ai.jakubjirak.com/p/server-cpu-vs-desktop-cpu-llm): More channels and capacity compete with higher clocks, lower idle power, and simpler platforms. - [Commercial vs free models for customer-support automation: privacy and data control](https://ai.jakubjirak.com/p/commercial-vs-free-customer-support-privacy-control): Local weights reduce data movement; commercial services may offer stronger managed controls than an improvised server. - [OCR models for tables and statements: layout and reading order](https://ai.jakubjirak.com/p/ocr-models-tables-statements-layout-reading-order): Perfect words in the wrong sequence are a failed document extraction. - [Know when to start a fresh conversation](https://ai.jakubjirak.com/p/conversation-reset-strategy): Long chats accumulate stale assumptions, duplicated evidence, and a growing bill. - [Let an LLM summarize the dashboard, not run it](https://ai.jakubjirak.com/p/llm-smart-home-dashboard-summary): A local model can turn overnight events into a readable briefing without controlling devices. - [Qwen 3.6 Plus: The cost and latency worksheet](https://ai.jakubjirak.com/p/qwen-36-plus-cost-latency): Token prices, reasoning effort, caching, retries, and review time belong in one calculation. - [OCR models for scanned archives: structured OCR with provenance](https://ai.jakubjirak.com/p/ocr-models-scanned-archives-structured-provenance): Every consequential field should point back to the pixels that support it. - [Where a USB Coral still earns its place](https://ai.jakubjirak.com/p/usb-coral-home-ai): A small Edge TPU remains excellent for supported vision models even when it cannot run a general LLM. - [Grok 4.5: An evaluation set worth keeping](https://ai.jakubjirak.com/p/grok-45-evaluation): Vendor benchmarks orient the search; local failures decide what gets deployed. - [Vision models for chart and diagram understanding: resolution and visual-token budgets](https://ai.jakubjirak.com/p/vision-models-charts-diagrams-resolution-token-budget): Higher resolution helps small details until preprocessing, visual tokens, memory, and latency become the product. - [AI hardware ROI for an edge or SBC AI fleet: break-even against commercial APIs](https://ai.jakubjirak.com/p/ai-hardware-roi-edge-sbc-fleet-api-break-even): Local hardware wins only after enough equivalent accepted work crosses the machine. - [Budgeting VRAM for local vision models](https://ai.jakubjirak.com/p/local-vision-model-vram): Image encoders, projected tokens, multiple images, and long outputs alter the familiar text-only calculation. - [OpenAI-compatible does not mean behavior-compatible](https://ai.jakubjirak.com/p/openai-compatible-api-gaps): Streaming events, tool calls, token counts, errors, and unsupported fields vary across local servers. - [Vision models for document vision: reasoning across multiple images](https://ai.jakubjirak.com/p/vision-models-documents-multiple-images): Image order, identity, duplicated views, and changing scenes make multi-image prompts a data-association problem. - [AI hardware ROI for a shared team GPU server: renting GPU capacity versus buying](https://ai.jakubjirak.com/p/ai-hardware-roi-shared-gpu-server-rent-or-buy): Rental converts capacity risk into hourly cost; ownership converts hourly cost into utilization risk. - [How fast should the network be for a local LLM server?](https://ai.jakubjirak.com/p/network-speed-local-llm-server): Chat needs little bandwidth; model transfer, multimodal inputs, and shared storage change the answer. - [GPU passthrough for a local LLM virtual machine](https://ai.jakubjirak.com/p/iommu-gpu-passthrough-llm): Isolation and reproducibility are useful, but IOMMU groups, reset behavior, and memory pinning complicate the build. - [Commercial vs free models for customer-support automation: a hybrid route instead of a winner](https://ai.jakubjirak.com/p/commercial-vs-free-customer-support-hybrid-routing): The useful comparison often ends with two routes: a cheap private default and a visible escalation. - [OCR models for technical documents and labels: choosing an OCR-capable model](https://ai.jakubjirak.com/p/ocr-models-technical-documents-model-selection): OCR engines, document parsers, and vision-language models solve overlapping but different layers. - [When vLLM belongs in a home lab](https://ai.jakubjirak.com/p/vllm-home-lab): Continuous batching is compelling for shared use and unnecessary for many single-user machines. - [Back up the smart-home AI stack in layers](https://ai.jakubjirak.com/p/backup-home-assistant-ai-stack): Configuration and household state are precious; downloaded models, camera buffers, and derived indexes usually are not. - [Commercial vs free models for coding assistants: latency, throughput, and queues](https://ai.jakubjirak.com/p/commercial-vs-free-coding-latency-throughput): A local model avoids the WAN; a commercial fleet avoids waiting behind one busy GPU. - [OCR models for invoices and receipts: handwriting mixed with printed text](https://ai.jakubjirak.com/p/ocr-models-invoices-receipts-handwriting-mixed-text): Printed labels and handwritten values need different recognition assumptions and confidence thresholds. - [System RAM is not slow VRAM](https://ai.jakubjirak.com/p/ram-capacity-for-cpu-offload): How much memory CPU offload needs, what it costs, and when partial offload is still useful. - [Local text-to-speech makes smart-home replies resilient](https://ai.jakubjirak.com/p/local-tts-smart-home): Compact TTS can produce useful announcements without sending household text or voice profiles away. - [GLM-5.1: An evaluation set worth keeping](https://ai.jakubjirak.com/p/glm-51-current-evaluation): Vendor benchmarks orient the search; local failures decide what gets deployed. - [Vision models for chart and diagram understanding: privacy and security for visual inputs](https://ai.jakubjirak.com/p/vision-models-charts-diagrams-privacy-security): Images leak faces, screens, documents, locations, reflections, and background details beyond the intended task. - [AI hardware ROI for an edge or SBC AI fleet: a sensitivity analysis that can change the answer](https://ai.jakubjirak.com/p/ai-hardware-roi-edge-sbc-fleet-sensitivity-analysis): ROI is a range driven by utilization, lifespan, API price, energy, quality, and demand growth. - [The minimum observability for local inference](https://ai.jakubjirak.com/p/local-inference-observability-minimum): Five timestamps and a few resource gauges explain most complaints without collecting prompt content. - [Gemini 3.5 Flash: A coding workflow that survives the demo](https://ai.jakubjirak.com/p/gemini-35-flash-coding-workflow): Repository evidence, tools, tests, and review matter more than one generated function. - [Vision models for UI and screenshot understanding: preprocessing before the vision model](https://ai.jakubjirak.com/p/vision-models-ui-screenshots-preprocessing): Rotation, cropping, contrast, frame selection, and metadata often improve results more cheaply than a larger model. - [AI hardware ROI for a used-GPU inference build: the utilization curve](https://ai.jakubjirak.com/p/ai-hardware-roi-used-gpu-build-utilization): A fast GPU that waits all day can have worse economics than an expensive API used only when needed. - [Mac Studio or multi-GPU PC for local AI?](https://ai.jakubjirak.com/p/mac-studio-vs-pc-local-ai): One offers quiet unified capacity; the other offers modular accelerators and a broader serving ecosystem. - [Deduplicate the local model collection safely](https://ai.jakubjirak.com/p/model-cache-deduplication): Hard links, reflinks, manifests, and content-addressed storage can reclaim space without losing provenance. - [Commercial vs free models for document extraction: tools and integration quality](https://ai.jakubjirak.com/p/commercial-vs-free-document-extraction-tool-ecosystem): Native tools save glue code, while open stacks preserve portability and make boundaries inspectable. - [OCR models for technical documents and labels: structured OCR with provenance](https://ai.jakubjirak.com/p/ocr-models-technical-documents-structured-provenance): Every consequential field should point back to the pixels that support it. - [Chunk code by symbols, not arbitrary token windows](https://ai.jakubjirak.com/p/chunking-code-local-rag): Functions, classes, tests, and call relationships make better retrieval units than sliced text. - [Most smart-home automations do not need an LLM](https://ai.jakubjirak.com/p/when-smart-home-does-not-need-llm): Schedules, thresholds, state machines, and scripts are faster, cheaper, and easier to trust. - [Commercial vs free models for RAG systems: the real cost per completed task](https://ai.jakubjirak.com/p/commercial-vs-free-rag-real-cost): Free tokens and cheap hardware can both become expensive after retries, review, and operations. - [OCR models for forms and handwriting: capture quality before recognition](https://ai.jakubjirak.com/p/ocr-models-forms-handwriting-capture-quality): Focus, exposure, perspective, resolution, and compression set an upper bound no OCR prompt can repair. - [Prefix caching is the easiest local speedup to miss](https://ai.jakubjirak.com/p/prefix-caching-local-inference): Stable instructions and reusable prefixes can remove repeated prompt work without changing the model. - [AI should interpret Zigbee data, not replace Zigbee rules](https://ai.jakubjirak.com/p/zigbee-ai-automation): Fast local automations belong in the coordinator; models can analyze patterns and exceptions afterward. - [Kimi K2.5: An evaluation set worth keeping](https://ai.jakubjirak.com/p/kimi-k25-current-evaluation): Vendor benchmarks orient the search; local failures decide what gets deployed. - [Vision models for product-image analysis: reasoning across multiple images](https://ai.jakubjirak.com/p/vision-models-product-images-multiple-images): Image order, identity, duplicated views, and changing scenes make multi-image prompts a data-association problem. - [Backpressure is kinder than an infinite inference queue](https://ai.jakubjirak.com/p/queue-backpressure-local-llm): Bounded queues make overload visible and prevent ten-minute-old interactive requests from wasting compute. - [GPT-5.6: A coding workflow that survives the demo](https://ai.jakubjirak.com/p/gpt-56-family-coding-workflow): Repository evidence, tools, tests, and review matter more than one generated function. - [Vision models for UI and screenshot understanding: local, hosted, and hybrid vision deployment](https://ai.jakubjirak.com/p/vision-models-ui-screenshots-local-hybrid-deployment): Local vision protects data and predictable volume; hosted models provide elastic capacity and a higher capability ceiling. - [AI hardware ROI for an Apple Silicon local-model system: comparing the complete purchase price](https://ai.jakubjirak.com/p/ai-hardware-roi-apple-silicon-purchase-price): The GPU sticker is not the price of a working inference system. - [Stop sequences are a latency and safety tool](https://ai.jakubjirak.com/p/stop-sequences-local-models): Ending generation at a known boundary prevents rambling and makes parsers less fragile. - [Recognize local fine-tuning overfit early](https://ai.jakubjirak.com/p/fine-tune-overfitting-signs): Training loss can improve while the adapter memorizes phrasing and loses flexibility. - [Commercial vs free models for tool-using agents: latency, throughput, and queues](https://ai.jakubjirak.com/p/commercial-vs-free-agents-latency-throughput): A local model avoids the WAN; a commercial fleet avoids waiting behind one busy GPU. - [AI hardware ROI for a personal AI workstation: electricity and cooling economics](https://ai.jakubjirak.com/p/ai-hardware-roi-personal-workstation-electricity-cooling): Board power is not wall energy, and wall energy is not the entire cooling cost. - [Rank local models by quality per occupied gigabyte](https://ai.jakubjirak.com/p/model-quality-per-gb): Capacity is a portfolio problem when several specialized models share one machine. - [Have a retirement plan for local models](https://ai.jakubjirak.com/p/local-model-deprecation-plan): Old weights linger in scripts, caches, indexes, and prompts long after a better replacement arrives. - [Commercial vs free models for RAG systems: reliability and exit strategy](https://ai.jakubjirak.com/p/commercial-vs-free-rag-reliability-exit): Provider outages and local hardware failures are different risks; neither architecture is automatically resilient. - [OCR models for forms and handwriting: an OCR evaluation that predicts production](https://ai.jakubjirak.com/p/ocr-models-forms-handwriting-evaluation): Average character accuracy hides catastrophic errors in dates, totals, units, and identifiers. - [Warm up, then benchmark the workflow](https://ai.jakubjirak.com/p/warmup-realistic-benchmarks): One cold run and one hot run answer different questions; neither alone describes daily use. - [Keep solar and battery optimization local](https://ai.jakubjirak.com/p/solar-battery-local-optimization): Local forecasts and tariff rules can reduce grid cost while preserving control during internet outages. - [MiniMax M2.7: An evaluation set worth keeping](https://ai.jakubjirak.com/p/minimax-m27-evaluation): Vendor benchmarks orient the search; local failures decide what gets deployed. - [OCR models for scanned archives: preprocessing for OCR models](https://ai.jakubjirak.com/p/ocr-models-scanned-archives-preprocessing): Deskewing and contrast can help recognition; aggressive cleanup can manufacture or erase characters. - [Put Raspberry Pi AI workloads on NVMe](https://ai.jakubjirak.com/p/rpi-nvme-ai-storage): Model loading, databases, camera buffers, and updates are a poor match for an overworked microSD card. - [Grok 4.5: A coding workflow that survives the demo](https://ai.jakubjirak.com/p/grok-45-coding-workflow): Repository evidence, tools, tests, and review matter more than one generated function. - [Vision models for camera-event understanding: video through frame sampling](https://ai.jakubjirak.com/p/vision-models-camera-events-video-frame-sampling): A vision model sees selected evidence; poor frame sampling can make the decisive moment nonexistent. - [AI hardware ROI for an Apple Silicon local-model system: valuing productivity without inventing savings](https://ai.jakubjirak.com/p/ai-hardware-roi-apple-silicon-productivity-value): Time saved becomes ROI only when it reduces cost, increases valuable output, or removes a real constraint. - [Give an LLM the diff plus just enough neighborhood](https://ai.jakubjirak.com/p/diff-only-code-review): Whole-repository review wastes context; diff-only review misses invariants unless retrieval fills the gap. - [Parallel prompt processing needs workload evidence](https://ai.jakubjirak.com/p/parallel-prompt-processing): More batch or parallelism can accelerate ingestion while increasing memory and hurting competing requests. - [Vision models for document vision: choosing the right vision model](https://ai.jakubjirak.com/p/vision-models-documents-model-selection): A vision leaderboard cannot tell you whether the model reads your images at your resolution. - [AI hardware ROI for a shared team GPU server: five-year total cost of ownership](https://ai.jakubjirak.com/p/ai-hardware-roi-shared-gpu-server-total-cost-ownership): Purchase price starts the comparison; energy, maintenance, downtime, and replacement finish it. - [Why memory bandwidth predicts local token speed](https://ai.jakubjirak.com/p/gpu-memory-bandwidth-explained): Parameter count gets the headline, but moving weights repeatedly often sets decoding throughput. - [Huge pages are a measurable optimization, not a ritual](https://ai.jakubjirak.com/p/huge-pages-llm-inference): Reducing translation overhead can help large mappings, but configuration cost and workload shape determine value. - [Commercial vs free models for customer-support automation: the operational burden](https://ai.jakubjirak.com/p/commercial-vs-free-customer-support-operations): A model endpoint is a service with upgrades, capacity, monitoring, incidents, and recovery. - [OCR models for tables and statements: languages, scripts, and mixed alphabets](https://ai.jakubjirak.com/p/ocr-models-tables-statements-languages-scripts): Language detection, diacritics, transliteration, and visually similar scripts can change names and identifiers. - [Lower top-k until retrieval has to earn each chunk](https://ai.jakubjirak.com/p/retrieval-top-k-is-not-quality): More retrieved passages often add contradiction and dilute the evidence the model should follow. - [Draw a hard tool boundary around the house](https://ai.jakubjirak.com/p/home-assistant-llm-tool-boundary): Read-only queries, reversible actions, and dangerous operations should be different interfaces with different approvals. - [Qwen 3.6 Plus: An evaluation set worth keeping](https://ai.jakubjirak.com/p/qwen-36-plus-evaluation): Vendor benchmarks orient the search; local failures decide what gets deployed. - [OCR models for scanned archives: local hardware and hybrid OCR deployment](https://ai.jakubjirak.com/p/ocr-models-scanned-archives-local-hardware-deployment): OCR can be CPU-friendly, accelerator-heavy, or API-bound depending on page volume and model class. - [Do the VRAM budget before downloading the model](https://ai.jakubjirak.com/p/vram-budget-before-model-download): A five-minute worksheet for deciding whether a model, context window, and KV cache will actually fit. - [Design a Pi camera pipeline before choosing the model](https://ai.jakubjirak.com/p/pi-camera-local-inference): Resolution, frame rate, cropping, and motion gates determine more compute than the detector name. - [GLM-5.1: A coding workflow that survives the demo](https://ai.jakubjirak.com/p/glm-51-current-coding-workflow): Repository evidence, tools, tests, and review matter more than one generated function. - [Vision models for chart and diagram understanding: prompts grounded in visible evidence](https://ai.jakubjirak.com/p/vision-models-charts-diagrams-grounded-prompting): A good vision prompt separates observation, inference, uncertainty, and the requested action. - [AI hardware ROI for an edge or SBC AI fleet: electricity and cooling economics](https://ai.jakubjirak.com/p/ai-hardware-roi-edge-sbc-fleet-electricity-cooling): Board power is not wall energy, and wall energy is not the entire cooling cost. - [Plan embedding upgrades as migrations](https://ai.jakubjirak.com/p/embedding-model-upgrade-plan): New vectors are not drop-in replacements for an existing index, even when dimensions match. - [Prevent retry storms on a local model server](https://ai.jakubjirak.com/p/retry-storm-local-model-server): A slow GPU can collapse when every impatient client resubmits the same expensive prompt. - [Vision models for document vision: an evaluation set for visual reasoning](https://ai.jakubjirak.com/p/vision-models-documents-evaluation): Vision evaluations need blur, glare, occlusion, tiny text, bad crops, and examples that cannot be answered. - [AI hardware ROI for a shared team GPU server: pricing risk and downtime](https://ai.jakubjirak.com/p/ai-hardware-roi-shared-gpu-server-risk-downtime): A cheap single box becomes expensive when its failure stops a workflow with no usable fallback. - [Wake the GPU server only when work arrives](https://ai.jakubjirak.com/p/wake-on-demand-gpu-server): A small always-on gateway can remove most idle power without making local inference inconvenient. - [Mixing GPU generations in one inference host](https://ai.jakubjirak.com/p/mixed-gpu-local-inference): Different capacities can cooperate, but kernel support, link speed, and load balance decide whether they should. - [Commercial vs free models for document extraction: quality ceiling versus sufficient quality](https://ai.jakubjirak.com/p/commercial-vs-free-document-extraction-quality-ceiling): The strongest answer is valuable only when the workflow benefits from the difference. - [OCR models for technical documents and labels: preprocessing for OCR models](https://ai.jakubjirak.com/p/ocr-models-technical-documents-preprocessing): Deskewing and contrast can help recognition; aggressive cleanup can manufacture or erase characters. - [Verify what you download from a model hub](https://ai.jakubjirak.com/p/model-download-supply-chain): Weights, tokenizer files, templates, and optional custom code all belong to the supply chain. - [Update edge AI models without visiting every room](https://ai.jakubjirak.com/p/edge-model-update-strategy): Versioned artifacts, staged rollout, health checks, and rollback turn scattered nodes into maintainable infrastructure. - [Commercial vs free models for coding assistants: long-context economics](https://ai.jakubjirak.com/p/commercial-vs-free-coding-context-economics): A giant context window can replace engineering discipline with a large recurring bill. - [OCR models for invoices and receipts: tables and key-value association](https://ai.jakubjirak.com/p/ocr-models-invoices-receipts-tables-key-values): Recognizing tokens is easier than proving which label, column, row, and unit they belong to. - [Do you need ECC for a home LLM server?](https://ai.jakubjirak.com/p/ecc-memory-local-ai): A risk-based answer for inference, fine-tuning, and machines that run unattended. - [Connect a local LLM to Home Assistant carefully](https://ai.jakubjirak.com/p/home-assistant-local-conversation): Natural language is useful for interpretation and explanation, but deterministic automations should remain deterministic. - [Kimi K2.5: A coding workflow that survives the demo](https://ai.jakubjirak.com/p/kimi-k25-current-coding-workflow): Repository evidence, tools, tests, and review matter more than one generated function. - [Vision models for product-image analysis: choosing the right vision model](https://ai.jakubjirak.com/p/vision-models-product-images-model-selection): A vision leaderboard cannot tell you whether the model reads your images at your resolution. - [Restart a local model server without dropping work](https://ai.jakubjirak.com/p/graceful-model-server-restarts): Drain, stop admission, finish bounded requests, and warm the replacement before switching traffic. - [Gemini 3.5 Flash: Long context without the token landfill](https://ai.jakubjirak.com/p/gemini-35-flash-long-context): A large window is capacity, not permission to resend every available document. - [Vision models for UI and screenshot understanding: structured output from images](https://ai.jakubjirak.com/p/vision-models-ui-screenshots-structured-output): JSON syntax is the easy part; visual grounding and semantic validation decide whether the record is usable. - [AI hardware ROI for a used-GPU inference build: depreciation and resale value](https://ai.jakubjirak.com/p/ai-hardware-roi-used-gpu-build-depreciation-resale): AI hardware loses economic value when capacity, software support, or workload fit moves—not only when it breaks. - [What an importance matrix changes](https://ai.jakubjirak.com/p/imatrix-quantization-local): Calibration data can preserve important weights during quantization, but it does not guarantee your workload benefits. - [Merge a LoRA or load it dynamically?](https://ai.jakubjirak.com/p/merge-lora-or-load-dynamically): Merged artifacts simplify inference; dynamic adapters preserve flexibility and shared base weights. - [Commercial vs free models for document extraction: licenses, terms, and redistribution](https://ai.jakubjirak.com/p/commercial-vs-free-document-extraction-license-terms): Open weights, open source, free access, and commercial permission describe different things. - [OCR models for technical documents and labels: local hardware and hybrid OCR deployment](https://ai.jakubjirak.com/p/ocr-models-technical-documents-local-hardware-deployment): OCR can be CPU-friendly, accelerator-heavy, or API-bound depending on page volume and model class. - [Build the eval set from embarrassing failures](https://ai.jakubjirak.com/p/eval-set-from-real-failures): Twenty real mistakes are more useful than a thousand generic benchmark questions. - [Dense or MoE for local inference?](https://ai.jakubjirak.com/p/dense-vs-moe-local-inference): Mixture-of-experts can offer strong quality per active compute while demanding awkward memory capacity. - [Commercial vs free models for RAG systems: privacy and data control](https://ai.jakubjirak.com/p/commercial-vs-free-rag-privacy-control): Local weights reduce data movement; commercial services may offer stronger managed controls than an improvised server. - [OCR models for forms and handwriting: layout and reading order](https://ai.jakubjirak.com/p/ocr-models-forms-handwriting-layout-reading-order): Perfect words in the wrong sequence are a failed document extraction. - [Verify Flash Attention is actually active](https://ai.jakubjirak.com/p/flash-attention-local-check): A flag in a launch command is not proof that the optimized kernel is running. - [Think twice before home face recognition](https://ai.jakubjirak.com/p/face-recognition-home-assistant): Identification can personalize automations, but false matches and biometric retention carry unusual consequences. - [MiniMax M2.7: A coding workflow that survives the demo](https://ai.jakubjirak.com/p/minimax-m27-coding-workflow): Repository evidence, tools, tests, and review matter more than one generated function. - [Vision models for product-image analysis: an evaluation set for visual reasoning](https://ai.jakubjirak.com/p/vision-models-product-images-evaluation): Vision evaluations need blur, glare, occlusion, tiny text, bad crops, and examples that cannot be answered. - [Count the full cost of local inference](https://ai.jakubjirak.com/p/local-llm-cost-accounting): Hardware purchase is only one line beside electricity, idle time, storage, maintenance, and replacement risk. - [GPT-5.6: Long context without the token landfill](https://ai.jakubjirak.com/p/gpt-56-family-long-context): A large window is capacity, not permission to resend every available document. - [Vision models for camera-event understanding: resolution and visual-token budgets](https://ai.jakubjirak.com/p/vision-models-camera-events-resolution-token-budget): Higher resolution helps small details until preprocessing, visual tokens, memory, and latency become the product. - [AI hardware ROI for an Apple Silicon local-model system: break-even against commercial APIs](https://ai.jakubjirak.com/p/ai-hardware-roi-apple-silicon-api-break-even): Local hardware wins only after enough equivalent accepted work crosses the machine. - [Local tool calling is mostly an interface contract](https://ai.jakubjirak.com/p/local-tool-calling-reality): A model does not execute tools; it emits an argument proposal that your application must distrust and manage. - [Compress context with evidence-aware rules](https://ai.jakubjirak.com/p/context-compression-local-models): Removing boilerplate and stale tool output is safer than asking another model to summarize everything blindly. - [Commercial vs free models for tool-using agents: long-context economics](https://ai.jakubjirak.com/p/commercial-vs-free-agents-context-economics): A giant context window can replace engineering discipline with a large recurring bill. - [AI hardware ROI for a personal AI workstation: renting GPU capacity versus buying](https://ai.jakubjirak.com/p/ai-hardware-roi-personal-workstation-rent-or-buy): Rental converts capacity risk into hourly cost; ownership converts hourly cost into utilization risk. - [The CPU-only local model is not a consolation prize](https://ai.jakubjirak.com/p/cpu-only-llm-useful): For background extraction and private utilities, predictable slow inference can be entirely sufficient. - [Teach the local workflow to accept “I do not know”](https://ai.jakubjirak.com/p/local-model-abstention): Abstention prevents a compact model from turning uncertainty into confident automation. - [Commercial vs free models for RAG systems: a hybrid route instead of a winner](https://ai.jakubjirak.com/p/commercial-vs-free-rag-hybrid-routing): The useful comparison often ends with two routes: a cheap private default and a visible escalation. - [OCR models for tables and statements: choosing an OCR-capable model](https://ai.jakubjirak.com/p/ocr-models-tables-statements-model-selection): OCR engines, document parsers, and vision-language models solve overlapping but different layers. - [Use a cheap first pass and an expensive second pass](https://ai.jakubjirak.com/p/two-pass-llm-workflow): Routing by uncertainty beats asking the largest model to perform every mechanical step. - [Qwen 3.6 Plus: A coding workflow that survives the demo](https://ai.jakubjirak.com/p/qwen-36-plus-coding-workflow): Repository evidence, tools, tests, and review matter more than one generated function. - [OCR models for scanned archives: handwriting mixed with printed text](https://ai.jakubjirak.com/p/ocr-models-scanned-archives-handwriting-mixed-text): Printed labels and handwritten values need different recognition assumptions and confidence thresholds. - [A mini UPS keeps the smart home intelligent](https://ai.jakubjirak.com/p/mini-ups-smart-home-ai): Short outages should not corrupt automation state or leave the local AI gateway rebooting repeatedly. - [Grok 4.5: Long context without the token landfill](https://ai.jakubjirak.com/p/grok-45-long-context): A large window is capacity, not permission to resend every available document. - [Vision models for camera-event understanding: privacy and security for visual inputs](https://ai.jakubjirak.com/p/vision-models-camera-events-privacy-security): Images leak faces, screens, documents, locations, reflections, and background details beyond the intended task. - [AI hardware ROI for an Apple Silicon local-model system: a sensitivity analysis that can change the answer](https://ai.jakubjirak.com/p/ai-hardware-roi-apple-silicon-sensitivity-analysis): ROI is a range driven by utilization, lifespan, API price, energy, quality, and demand growth.