# doug.sh

Doug Calobrisi. Things I built, things I broke, and how the second one led to the first.

- 2026-09-15 [Keeping vLLM's Prefix Cache Warm Between Agent Turns](https://doug.sh/posts/vllm-kv-cache-agents/) ([source](https://doug.sh/posts/vllm-kv-cache-agents/index.md)): What vLLM's cache tiers hold, why coding agent traffic keeps invalidating them, and the Bifrost tool schema bug that cost 90 to 180 seconds on the turns it hit.
- 2026-09-13 [Tuning a Local Coding Agent: Oh My Pi and Qwen3.8-27B on Two RTX 3090s](https://doug.sh/posts/tuning-a-local-coding-agent-oh-my-pi/) ([source](https://doug.sh/posts/tuning-a-local-coding-agent-oh-my-pi/index.md)): How I cut a self-hosted coding agent's wait per turn from 28 seconds to 7 with Oh My Pi, a thinking budget and a warm vLLM prefix cache.
- 2026-05-02 [erm: A Local CLI That Strips Ums, Uhs, and Erms From Speech](https://doug.sh/posts/erm-a-local-cli-that-strips-ums-uhs-and-erms-from-speech/) ([source](https://doug.sh/posts/erm-a-local-cli-that-strips-ums-uhs-and-erms-from-speech/index.md)): A tour of erm, a local CLI that removes disfluencies from English speech recordings using faster-whisper, a few detectors that look at the audio directly, and ffmpeg.
- 2026-04-23 [Give Your Coding Agent a Journal](https://doug.sh/posts/give-your-coding-agent-a-journal/) ([source](https://doug.sh/posts/give-your-coding-agent-a-journal/index.md)): A plain markdown journal file, updated as the agent works, is a simple and effective form of memory for LLM harnesses like Claude Code.
- 2026-04-18 [Route53 as a Key Value Store, 2026 Edition](https://doug.sh/posts/route53-as-a-key-value-store-2026-edition/) ([source](https://doug.sh/posts/route53-as-a-key-value-store-2026-edition/index.md)): A modernized take on using Route53 TXT records as a key-value store from GitHub Actions: OIDC auth, no static keys, and a cleaner update flow.
- 2021-12-13 [Using Route53 as a Key Value Store in GitHub Actions](https://doug.sh/posts/using-route53-as-a-key-value-store-in-github-actions/) ([source](https://doug.sh/posts/using-route53-as-a-key-value-store-in-github-actions/index.md)): Use Route53 private hosted zone TXT records as a cheap key-value store for GitHub Actions, with composite actions that set and get values through the AWS CLI.
- 2021-09-11 [Using Composite Actions with GitHub Actions](https://doug.sh/posts/using-composite-actions-with-github-actions/) ([source](https://doug.sh/posts/using-composite-actions-with-github-actions/index.md)): Composite Actions let one GitHub Action run several shell steps in bash, Python, Node or PowerShell. How to write one, pass inputs and outputs, and call it.
