{"@attributes":{"version":"2.0"},"channel":{"title":"corvus","description":"Nicholas Coleman, AI engineer. Projects and posts on LLM agents, evals and MCP security.","link":"https:\/\/corvus-dev.com\/","item":[{"title":"A Software Factory","link":"https:\/\/corvus-dev.com\/blog\/a-software-factory\/","guid":"https:\/\/corvus-dev.com\/blog\/a-software-factory\/","description":"Three tools wired into one gated pipeline, and what happened when I actually ran it: the bill, and why the long-term fix is a GPU of my own.","pubDate":"Sat, 07 Nov 2026 00:00:00 GMT"},{"title":"A Decision That Fits: Jev on Claims Against a Document","link":"https:\/\/corvus-dev.com\/blog\/jev-claims-check\/","guid":"https:\/\/corvus-dev.com\/blog\/jev-claims-check\/","description":"Kev lost to a constant on my agent workflow, so I gave Jev a task that suits a decision model. It found all 8 contradictions planted in a 25-page report, in under a second.","pubDate":"Sun, 01 Nov 2026 00:00:00 GMT"},{"title":"Always Say Large: Testing a Decision Model on My Agent Workflow","link":"https:\/\/corvus-dev.com\/blog\/kev-on-my-coordinator\/","guid":"https:\/\/corvus-dev.com\/blog\/kev-on-my-coordinator\/","description":"I tested Kev, an open decision model, on two calls my coding-agent coordinator makes all day. A constant answer did as well as anything I tried, Opus included, and the reason was the calls I picked.","pubDate":"Wed, 28 Oct 2026 00:00:00 GMT"},{"title":"Switchyard: A Template for Agent-Assisted Development","link":"https:\/\/corvus-dev.com\/blog\/switchyard-template\/","guid":"https:\/\/corvus-dev.com\/blog\/switchyard-template\/","description":"How Switchyard gives new projects an issue-to-merge workflow for coding agents, with OpenSpec, worktrees, review gates, and Herdr.","pubDate":"Sun, 11 Oct 2026 00:00:00 GMT"},{"title":"My Mac, Declared in Nix","link":"https:\/\/corvus-dev.com\/blog\/nix-darwin-on-my-mac\/","guid":"https:\/\/corvus-dev.com\/blog\/nix-darwin-on-my-mac\/","description":"How I run my MacBook from a nix-darwin flake: Homebrew under control, secrets in git, a lint gate on a Linux runner, and the gotchas along the way.","pubDate":"Sat, 03 Oct 2026 00:00:00 GMT"},{"title":"Corv, My Hermes Agent","link":"https:\/\/corvus-dev.com\/blog\/hermes-blog-post\/","guid":"https:\/\/corvus-dev.com\/blog\/hermes-blog-post\/","description":"A tour of the AI agent that lives on my homelab: what runs it, what it can reach, and how it stays useful without being babysat.","pubDate":"Sun, 27 Sep 2026 00:00:00 GMT"},{"title":"Time Machine over SMB in My Homelab","link":"https:\/\/corvus-dev.com\/blog\/time-machine-over-smb\/","guid":"https:\/\/corvus-dev.com\/blog\/time-machine-over-smb\/","description":"A small Debian LXC, Samba's fruit module, and a bind mount to the USB drive that already holds my homelab data.","pubDate":"Sat, 26 Sep 2026 00:00:00 GMT"},{"title":"How I Manage My Homelab Remotely","link":"https:\/\/corvus-dev.com\/blog\/managing-my-homelab-remotely\/","guid":"https:\/\/corvus-dev.com\/blog\/managing-my-homelab-remotely\/","description":"Tailscale gets me into the lab, Termius gives me a shell, and Forgejo makes sure a train-terminal fix still gets a plan and a review.","pubDate":"Thu, 17 Sep 2026 00:00:00 GMT"},{"title":"Rook, My Agent Workstation","link":"https:\/\/corvus-dev.com\/blog\/rook-my-agent-workstation\/","guid":"https:\/\/corvus-dev.com\/blog\/rook-my-agent-workstation\/","description":"How I run coding agents inside a Debian LXC, and keep their infrastructure changes behind OpenTofu plans, Ansible playbooks, and Forgejo review.","pubDate":"Wed, 16 Sep 2026 00:00:00 GMT"},{"title":"In-Place Still Reboots","link":"https:\/\/corvus-dev.com\/blog\/in-place-still-reboots\/","guid":"https:\/\/corvus-dev.com\/blog\/in-place-still-reboots\/","description":"OpenTofu said 16 in-place updates and 0 replacements. It restarted all 16 containers, including the one running the apply.","pubDate":"Wed, 09 Sep 2026 00:00:00 GMT"},{"title":"The [model-dependent] Caveat, Executed","link":"https:\/\/corvus-dev.com\/blog\/model-dependent-executed\/","guid":"https:\/\/corvus-dev.com\/blog\/model-dependent-executed\/","description":"Last time I measured whether a model obeys an injection. I never let it act. So I ran the same chains against real servers, and half my numbers didn't survive.","pubDate":"Mon, 31 Aug 2026 00:00:00 GMT"},{"title":"Trading n8n for Kestra","link":"https:\/\/corvus-dev.com\/blog\/kestra-homelab\/","guid":"https:\/\/corvus-dev.com\/blog\/kestra-homelab\/","description":"Why I moved my homelab's scheduled jobs onto a YAML-first orchestrator, and what it does better than n8n.","pubDate":"Sat, 27 Jun 2026 00:00:00 GMT"},{"title":"The [model-dependent] Caveat, Measured","link":"https:\/\/corvus-dev.com\/blog\/model-dependent-measured\/","guid":"https:\/\/corvus-dev.com\/blog\/model-dependent-measured\/","description":"My MCP audits proved a malicious instruction reaches the agent. They never checked whether it obeys. So I measured it across thirteen models.","pubDate":"Mon, 22 Jun 2026 00:00:00 GMT"},{"title":"Auditing MCP Servers with an AI on a Short Leash","link":"https:\/\/corvus-dev.com\/blog\/auditing-mcp-servers\/","guid":"https:\/\/corvus-dev.com\/blog\/auditing-mcp-servers\/","description":"The methodology behind my MSc dissertation: depth-first security audits of MCP servers, using an LLM as an instrument I'm not allowed to trust.","pubDate":"Mon, 15 Jun 2026 00:00:00 GMT"},{"title":"Ansible for Updating LXCs","link":"https:\/\/corvus-dev.com\/blog\/patching-every-guest\/","guid":"https:\/\/corvus-dev.com\/blog\/patching-every-guest\/","description":"Proxmox patched the hosts and Komodo patched Docker. Nothing patched the 14 LXC guests, so I wrote a playbook.","pubDate":"Wed, 10 Jun 2026 00:00:00 GMT"},{"title":"Real HTTPS for a .lan Network","link":"https:\/\/corvus-dev.com\/blog\/real-https-on-lan\/","guid":"https:\/\/corvus-dev.com\/blog\/real-https-on-lan\/","description":"Pi-hole for names, step-ca for certificates and Traefik in front, so every internal service gets a padlock without a public certificate.","pubDate":"Tue, 09 Jun 2026 00:00:00 GMT"},{"title":"Corvidae Cluster Homelab","link":"https:\/\/corvus-dev.com\/blog\/corvidae-cluster\/","guid":"https:\/\/corvus-dev.com\/blog\/corvidae-cluster\/","description":"Two Proxmox nodes, a Raspberry Pi that only votes, and the services that run on them.","pubDate":"Mon, 08 Jun 2026 00:00:00 GMT"}]}}