<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Tools on Corey Daley</title><link>https://coreydaley.dev/categories/tools/</link><description>Recent content in Tools on Corey Daley</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 27 Apr 2026 14:25:00 -0400</lastBuildDate><atom:link href="https://coreydaley.dev/categories/tools/rss.xml" rel="self" type="application/rss+xml"/><item><title>Catching Twilio SMS Locally: MessagePit Extends Mailpit</title><link>https://coreydaley.dev/posts/2026/04/messagepit-catching-twilio-sms-locally/</link><pubDate>Mon, 27 Apr 2026 14:25:00 -0400</pubDate><guid>https://coreydaley.dev/posts/2026/04/messagepit-catching-twilio-sms-locally/</guid><description>&lt;p&gt;Most teams have a tidy local story for email and a weird one for SMS. Mailpit catches every transactional email in dev — clean web UI, nothing leaks. For SMS, the usual options are stub the Twilio client, disable sends in dev entirely, or eat the cost of real messages during CI runs. None of those are good.&lt;/p&gt;
&lt;p&gt;MessagePit is a fork of Ralph Slooten&amp;rsquo;s Mailpit that closes the gap. It exposes a Twilio-compatible HTTP endpoint at the real &lt;code&gt;/2010-04-01/Accounts/{AccountSid}/Messages.json&lt;/code&gt; shape, validates &lt;code&gt;X-Twilio-Signature&lt;/code&gt; if you opt into it, and surfaces every captured SMS in the same web UI Mailpit ships for email. Point your Twilio SDK at &lt;code&gt;http://localhost:1775&lt;/code&gt; instead of &lt;code&gt;api.twilio.com&lt;/code&gt; and the rest of your code stays exactly the same.&lt;/p&gt;
&lt;p&gt;What other third-party integrations in your stack would get dramatically easier if you stopped mocking them and started catching them locally?&lt;/p&gt;
&lt;p&gt;Read more at &lt;a
 href="https://coreydaley.dev/posts/2026/04/messagepit-catching-twilio-sms-locally/" target="_blank" rel="noopener noreferrer"&gt;https://coreydaley.dev/posts/2026/04/messagepit-catching-twilio-sms-locally/&lt;/a&gt;
&lt;/p&gt;</description></item><item><title>From Config Hub to Competing Voices: How agent-config Became My AI Collaboration Stack</title><link>https://coreydaley.dev/posts/2026/04/agent-config-from-sharing-to-competing-voices/</link><pubDate>Sat, 11 Apr 2026 14:50:00 -0400</pubDate><guid>https://coreydaley.dev/posts/2026/04/agent-config-from-sharing-to-competing-voices/</guid><description>&lt;p&gt;I started agent-config as a shared configuration hub: one repository to rule Claude, Codex, Copilot, and Gemini. That lasted about two iterations before the cracks showed. Forcing every AI agent to share the same configuration format was the wrong abstraction — different tools, different philosophies, different file formats. The solution wasn&amp;rsquo;t more uniformity. It was a different model of collaboration entirely.&lt;/p&gt;
&lt;p&gt;Today agent-config is Claude-specific, but Codex is still central to how I work. The difference: Codex is no longer a configuration &lt;em&gt;target&lt;/em&gt;. It&amp;rsquo;s a competitive &lt;em&gt;collaborator&lt;/em&gt;. Sprint plans, blog posts, security audits — every significant output runs through a workflow where Claude and Codex produce independent drafts, critique each other&amp;rsquo;s work, and force synthesis from the tension. Two AI voices with different instincts produce better output than either would alone — just like a team of people with different backgrounds does.&lt;/p&gt;
&lt;p&gt;Is your multi-agent workflow built for sharing configuration, or for generating the productive disagreement that makes output actually better?&lt;/p&gt;
&lt;p&gt;Read more at &lt;a
 href="https://coreydaley.dev/posts/2026/04/agent-config-from-sharing-to-competing-voices/" target="_blank" rel="noopener noreferrer"&gt;https://coreydaley.dev/posts/2026/04/agent-config-from-sharing-to-competing-voices/&lt;/a&gt;
&lt;/p&gt;</description></item><item><title>Opening Polyphon: Trust Needs an Exit</title><link>https://coreydaley.dev/posts/2026/03/polyphon-is-now-open-source/</link><pubDate>Wed, 25 Mar 2026 00:22:00 -0400</pubDate><guid>https://coreydaley.dev/posts/2026/03/polyphon-is-now-open-source/</guid><description>&lt;p&gt;Polyphon is now open source under Apache 2.0. The reason isn&amp;rsquo;t community building or contributor recruitment — it&amp;rsquo;s simpler and more specific than that. When a tool sits in the middle of unfinished thinking, rough drafts, and sensitive code, &amp;ldquo;trust me&amp;rdquo; is not a good enough contract.&lt;/p&gt;
&lt;p&gt;Open source gives users two things that matter here: the ability to inspect the architecture and verify the privacy claims, and a real exit if the project ever changes direction or stops moving. Not everyone will read the source. But anyone can. And the fact that anyone can changes the character of the whole relationship.&lt;/p&gt;
&lt;p&gt;What should users be able to verify for themselves before they trust an AI tool with their unfinished work?&lt;/p&gt;
&lt;p&gt;Read more at &lt;a
 href="https://coreydaley.dev/posts/2026/03/polyphon-is-now-open-source/" target="_blank" rel="noopener noreferrer"&gt;https://coreydaley.dev/posts/2026/03/polyphon-is-now-open-source/&lt;/a&gt;
&lt;/p&gt;</description></item><item><title>Polyphon at v0.8.0: The End of the Prototype Phase</title><link>https://coreydaley.dev/posts/2026/03/polyphon-from-alpha-to-v0-8/</link><pubDate>Mon, 23 Mar 2026 19:55:00 -0400</pubDate><guid>https://coreydaley.dev/posts/2026/03/polyphon-from-alpha-to-v0-8/</guid><description>&lt;p&gt;When I shipped Polyphon v0.1.0-alpha.2, the pitch was simple: put multiple AI voices in one conversation and let them respond to each other. That was useful. But early usefulness and long-term trust are not the same thing.&lt;/p&gt;
&lt;p&gt;v0.8.0 is the release where Polyphon crosses that line. The features that made the difference weren&amp;rsquo;t the ones I planned at launch. Voices can now interact with actual files, with per-voice sandboxing and explicit permission categories. Conversation history is encrypted with SQLCipher whole-database AES-256, with optional password protection. FTS5 search turns the archive into working memory you can actually retrieve from. These aren&amp;rsquo;t incremental improvements — they&amp;rsquo;re the features that decide whether a tool stays an interesting experiment or earns a place near real projects.&lt;/p&gt;
&lt;p&gt;What actually makes you trust an AI tool with real work: capability, privacy, or memory?&lt;/p&gt;
&lt;p&gt;Read more at &lt;a
 href="https://coreydaley.dev/posts/2026/03/polyphon-from-alpha-to-v0-8/" target="_blank" rel="noopener noreferrer"&gt;https://coreydaley.dev/posts/2026/03/polyphon-from-alpha-to-v0-8/&lt;/a&gt;
&lt;/p&gt;</description></item><item><title>Polyphon's MCP Server Makes Your AI Ensemble a Native Agent Tool</title><link>https://coreydaley.dev/posts/2026/03/polyphon-mcp-server/</link><pubDate>Mon, 23 Mar 2026 19:35:00 -0400</pubDate><guid>https://coreydaley.dev/posts/2026/03/polyphon-mcp-server/</guid><description>&lt;p&gt;Polyphon just shipped MCP server support, and it reframes what the tool actually is. You&amp;rsquo;ve been opening it as a UI. Now your coding agent — Claude Code, Cursor, Codex CLI, GitHub Copilot — can call into it directly and broadcast a prompt across your entire Claude + GPT-4o + Gemini ensemble in a single tool call.&lt;/p&gt;
&lt;p&gt;The practical win is not just convenience. It is that you can package disagreement: three independent models, each with different priors, applied to the same question at once. Five tools, two CLI flags, one Settings toggle. The SessionEventSink abstraction is why this works without duplicating orchestration logic — desktop UI and headless agent calls run on the same engine.&lt;/p&gt;
&lt;p&gt;Where in your workflow would paying for disagreement actually change a decision, rather than just produce a louder answer?&lt;/p&gt;
&lt;p&gt;Read more at &lt;a
 href="https://coreydaley.dev/posts/2026/03/polyphon-mcp-server/" target="_blank" rel="noopener noreferrer"&gt;https://coreydaley.dev/posts/2026/03/polyphon-mcp-server/&lt;/a&gt;
&lt;/p&gt;</description></item><item><title>Free Doesn't Mean Open: How AI Is Unbundling the Open Source Bargain</title><link>https://coreydaley.dev/posts/2026/03/is-open-source-dead-in-the-age-of-ai/</link><pubDate>Thu, 19 Mar 2026 14:15:00 -0400</pubDate><guid>https://coreydaley.dev/posts/2026/03/is-open-source-dead-in-the-age-of-ai/</guid><description>&lt;p&gt;Open source was never really about the license. It was about economics — no single developer could build everything alone, so you shared the source and let the community help carry the load. AI is making that trade less necessary.&lt;/p&gt;
&lt;p&gt;With Claude Code and Codex, a solo developer can now ship and maintain classes of software that once required a contributor community. A new model is taking shape: users file issues, maintainers decide what&amp;rsquo;s worth building, AI does the implementation. No PRs to review, no design debates in GitHub comments. Meanwhile, tools like Obsidian prove free software doesn&amp;rsquo;t require open source — and have for years. The question is no longer whether to open source, but which parts of the open source bargain still matter to you.&lt;/p&gt;
&lt;p&gt;But here&amp;rsquo;s the counterintuitive part: AI also makes some open source values more important, not less. When software can be shipped and abandoned faster than ever, forkability, auditability, and portability become user protections that matter more. The future isn&amp;rsquo;t open vs. closed — it&amp;rsquo;s deliberate vs. reflexive.&lt;/p&gt;
&lt;p&gt;Read more at &lt;a
 href="https://coreydaley.dev/posts/2026/03/is-open-source-dead-in-the-age-of-ai/" target="_blank" rel="noopener noreferrer"&gt;https://coreydaley.dev/posts/2026/03/is-open-source-dead-in-the-age-of-ai/&lt;/a&gt;
&lt;/p&gt;</description></item><item><title>I Built a Tool So AI Models Could Talk to Each Other</title><link>https://coreydaley.dev/posts/2026/03/launching-polyphon-orchestrating-multiple-ai-voices/</link><pubDate>Mon, 16 Mar 2026 12:30:00 -0400</pubDate><guid>https://coreydaley.dev/posts/2026/03/launching-polyphon-orchestrating-multiple-ai-voices/</guid><description>&lt;p&gt;Every AI power user I know runs the same manual workaround: ask Claude, ask GPT, copy the interesting parts of each into the other, then try to synthesize what you learned. The models are good. The coordination is not.&lt;/p&gt;
&lt;p&gt;I just shipped Polyphon v0.1.0-alpha.2 — a free, local-first desktop app that puts multiple AI voices in the same conversation so they can actually respond to each other. You&amp;rsquo;re the conductor. They&amp;rsquo;re the ensemble. Save a group of voices as a composition and reuse it whenever you need that ensemble again.&lt;/p&gt;
&lt;p&gt;What should a multi-agent conversation feel like when you&amp;rsquo;re not building a pipeline — when you just want to think out loud with several models at once?&lt;/p&gt;
&lt;p&gt;Read more at &lt;a
 href="https://coreydaley.dev/posts/2026/03/launching-polyphon-orchestrating-multiple-ai-voices/" target="_blank" rel="noopener noreferrer"&gt;https://coreydaley.dev/posts/2026/03/launching-polyphon-orchestrating-multiple-ai-voices/&lt;/a&gt;
&lt;/p&gt;</description></item><item><title>Why I Left Notion and Built My Own AI Agent Plugin for Obsidian</title><link>https://coreydaley.dev/posts/2026/03/obsidian-ai-agent-sidebar-plugin/</link><pubDate>Mon, 09 Mar 2026 11:45:00 -0400</pubDate><guid>https://coreydaley.dev/posts/2026/03/obsidian-ai-agent-sidebar-plugin/</guid><description>&lt;p&gt;I was already paying for Claude, Codex, and several other AI services when Notion started pushing its own AI add-on. The problem wasn&amp;rsquo;t just the price — it was that Notion AI couldn&amp;rsquo;t talk to any of the tools I already had, and my workflow had become a copy-paste treadmill between my notes and my agents. So I switched to Obsidian and hit the same wall: no native way to use your own AI.&lt;/p&gt;
&lt;p&gt;I built the Obsidian AI Agent Sidebar plugin — an open source tool that brings Claude Code, OpenAI Codex, Google Gemini, GitHub Copilot, and any OpenAI-compatible server directly into your Obsidian sidebar, with real vault read/write access. Developed using agentic engineering and the dark factory method, it&amp;rsquo;s the integration I needed and couldn&amp;rsquo;t find.&lt;/p&gt;
&lt;p&gt;What would you build if the tool you needed simply didn&amp;rsquo;t exist yet?&lt;/p&gt;
&lt;p&gt;Read more at &lt;a
 href="https://coreydaley.dev/posts/2026/03/obsidian-ai-agent-sidebar-plugin/" target="_blank" rel="noopener noreferrer"&gt;https://coreydaley.dev/posts/2026/03/obsidian-ai-agent-sidebar-plugin/&lt;/a&gt;
&lt;/p&gt;</description></item><item><title>When Your First Version Fails: Iterating on agent-config with AI</title><link>https://coreydaley.dev/posts/2026/03/agent-config-v2-failing-forward-with-ai/</link><pubDate>Sat, 07 Mar 2026 16:00:00 -0500</pubDate><guid>https://coreydaley.dev/posts/2026/03/agent-config-v2-failing-forward-with-ai/</guid><description>&lt;p&gt;I built agent-config v1 to centralize AI agent configurations across Claude, Codex, Copilot, and Gemini — and it failed. Not dramatically, but fundamentally: I tried to force every agent to follow the same rules in the same format, because that&amp;rsquo;s what my human instincts said made sense. The problem is those agents have completely different requirements. Gemini needs TOML. The others use Markdown. You can&amp;rsquo;t just symlink your way to consistency.&lt;/p&gt;
&lt;p&gt;v2 fixes this by letting AI handle the translation — automated merging of global and per-agent configs, format conversion per tool, and intelligent symlink setup.&lt;/p&gt;
&lt;p&gt;The real lesson isn&amp;rsquo;t about config management, though. It&amp;rsquo;s about failing fast, iterating faster with AI than you ever could alone, and trusting the tools to solve problems your instincts would have you paper over. Are you letting your human instincts slow down your AI iteration cycles?&lt;/p&gt;
&lt;p&gt;Read more at &lt;a
 href="https://coreydaley.dev/posts/2026/03/agent-config-v2-failing-forward-with-ai/" target="_blank" rel="noopener noreferrer"&gt;https://coreydaley.dev/posts/2026/03/agent-config-v2-failing-forward-with-ai/&lt;/a&gt;
&lt;/p&gt;</description></item><item><title>Bring Your Own Key: Why Customers Are Tired of Paying Twice for AI</title><link>https://coreydaley.dev/posts/2026/03/bring-your-own-ai-key/</link><pubDate>Sat, 07 Mar 2026 12:00:00 -0500</pubDate><guid>https://coreydaley.dev/posts/2026/03/bring-your-own-ai-key/</guid><description>&lt;p&gt;There&amp;rsquo;s a quiet frustration building across developer tools right now. You already pay $20/month for Claude Pro or ChatGPT Plus. Then your IDE wants another $10 for AI. Your project management tool wants $8 more. Your Git client wants its cut too. The bill isn&amp;rsquo;t for one AI — it&amp;rsquo;s for the same AI, billed by a dozen different gatekeepers.&lt;/p&gt;
&lt;p&gt;The Bring Your Own Key (BYOK) model is the industry&amp;rsquo;s response: connect your existing API keys and skip the markup. But it&amp;rsquo;s not a clear-cut win. Managed AI subscriptions offer real value — simplicity, support, compliance, and no API wrangling.&lt;/p&gt;
&lt;p&gt;The real question isn&amp;rsquo;t which model is better. It&amp;rsquo;s which model fits you — and whether the tools you&amp;rsquo;re using have even given you a choice. Have you audited how many separate AI subscriptions you&amp;rsquo;re paying for lately?&lt;/p&gt;
&lt;p&gt;Read more at &lt;a
 href="https://coreydaley.dev/posts/2026/03/bring-your-own-ai-key/" target="_blank" rel="noopener noreferrer"&gt;https://coreydaley.dev/posts/2026/03/bring-your-own-ai-key/&lt;/a&gt;
&lt;/p&gt;</description></item><item><title>Attractor: When Chaos Theory Meets AI Pipeline Orchestration</title><link>https://coreydaley.dev/posts/2026/03/attractor-dot-pipeline-orchestration/</link><pubDate>Fri, 06 Mar 2026 12:00:00 -0500</pubDate><guid>https://coreydaley.dev/posts/2026/03/attractor-dot-pipeline-orchestration/</guid><description>&lt;p&gt;Most AI automation breaks for the same reason: the workflow is hidden inside scripts, prompts, and tribal knowledge. Attractor takes a different path — one borrowed from chaos theory. In dynamical systems, an attractor is a state a system naturally converges toward even through turbulence.&lt;/p&gt;
&lt;p&gt;Apply that to AI workflows, and you get directed graphs that pull multi-LLM execution through branching, retries, human review gates, and failure recovery toward a defined goal. The entire codebase is AI-generated, which makes it a working proof-of-concept of the Software Factory philosophy.&lt;/p&gt;
&lt;p&gt;If we can declaratively orchestrate AI agents today, what should we still insist on owning as humans?&lt;/p&gt;
&lt;p&gt;Read more at &lt;a
 href="https://coreydaley.dev/posts/2026/03/attractor-dot-pipeline-orchestration/" target="_blank" rel="noopener noreferrer"&gt;https://coreydaley.dev/posts/2026/03/attractor-dot-pipeline-orchestration/&lt;/a&gt;
&lt;/p&gt;</description></item><item><title>Centralizing AI Agent Configurations with the agent-config Repository</title><link>https://coreydaley.dev/posts/2026/02/centralizing-ai-agent-configurations-with-artificial-intelligence-repo/</link><pubDate>Thu, 19 Feb 2026 20:26:46 -0500</pubDate><guid>https://coreydaley.dev/posts/2026/02/centralizing-ai-agent-configurations-with-artificial-intelligence-repo/</guid><description>&lt;p&gt;If you&amp;rsquo;re juggling Claude Code, Codex, and GitHub Copilot, you know the pain of keeping each one&amp;rsquo;s configuration files in sync. My agent-config repo solves that with a single source of truth: agent instructions, reusable skills, custom commands, subagents, and prompts all live in one place, and a single &lt;code&gt;make symlinks&lt;/code&gt; command wires them up across every tool.&lt;/p&gt;
&lt;p&gt;Each directory is purpose-built—skills for reusable capabilities, commands for CLI tools, subagents for delegation, prompts for task-specific guidance. The setup even backs up any files it would overwrite, so you never lose existing config.&lt;/p&gt;
&lt;p&gt;Whether you&amp;rsquo;re just starting to extend your AI tools or already deep into custom workflows, having everything version-controlled and centralized is a game changer. Are you managing your AI agent configurations in a single repository, or do you keep them scattered across tools?&lt;/p&gt;
&lt;p&gt;Read more at &lt;a
 href="https://coreydaley.dev/posts/2026/02/centralizing-ai-agent-configurations-with-artificial-intelligence-repo/" target="_blank" rel="noopener noreferrer"&gt;https://coreydaley.dev/posts/2026/02/centralizing-ai-agent-configurations-with-artificial-intelligence-repo/&lt;/a&gt;
&lt;/p&gt;</description></item><item><title>Finding Each AI's Place in My Workflow</title><link>https://coreydaley.dev/posts/2026/02/finding-each-ais-place-in-my-workflow/</link><pubDate>Thu, 12 Feb 2026 19:28:28 -0500</pubDate><guid>https://coreydaley.dev/posts/2026/02/finding-each-ais-place-in-my-workflow/</guid><description>&lt;p&gt;I&amp;rsquo;ve stopped trying to pick the &amp;lsquo;best&amp;rsquo; AI tool—instead, I&amp;rsquo;m letting each one find its place in my workflow. Here&amp;rsquo;s what&amp;rsquo;s emerged: Codex, Claude Code, and GitHub Copilot CLI handle my command-line coding from simple to complex. ChatGPT web is my go-to for image creation (oddly, ChatGPT Desktop lacks this). GitHub Copilot in VSCode crushes code completion. Claude Code and Claude Desktop excel at blog writing with Notion integration.&lt;/p&gt;
&lt;p&gt;Each tool has found its niche, and I&amp;rsquo;m more productive because of it. I&amp;rsquo;m still exploring how to use AI as a peer for bouncing ideas off, especially in planning mode.&lt;/p&gt;
&lt;p&gt;The future isn&amp;rsquo;t about one AI to rule them all—it&amp;rsquo;s about orchestrating multiple specialists. How are you integrating AI tools into your workflow? Have you found similar specialization patterns, or are you using a different approach?&lt;/p&gt;
&lt;p&gt;Read more at &lt;a
 href="https://coreydaley.dev/posts/2026/02/finding-each-ais-place-in-my-workflow/" target="_blank" rel="noopener noreferrer"&gt;https://coreydaley.dev/posts/2026/02/finding-each-ais-place-in-my-workflow/&lt;/a&gt;
&lt;/p&gt;</description></item><item><title>A Search UI That Feels Native: Pagefind + Custom JSON Rendering</title><link>https://coreydaley.dev/posts/2026/02/pagefind-custom-search-ui/</link><pubDate>Sun, 08 Feb 2026 19:19:33 -0500</pubDate><guid>https://coreydaley.dev/posts/2026/02/pagefind-custom-search-ui/</guid><description>&lt;p&gt;The default Pagefind UI is great for quick setup, but what if you want search results that feel like they belong to your site? That&amp;rsquo;s exactly what I built for this blog. Instead of using Pagefind&amp;rsquo;s default UI with its own markup and styles, I tapped directly into the Pagefind API to pull JSON results and render them using the same post card structure used throughout the theme.&lt;/p&gt;
&lt;p&gt;The result? Search that feels completely native—same date formats, same taxonomy chips, same layout consistency. This post walks through the technical approach: loading Pagefind as a module, querying for results, and building custom rendering logic.&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re building with Hugo or any static site generator and want full control over your search UI, this approach might inspire you. How are you handling search on your static sites?&lt;/p&gt;
&lt;p&gt;Read more at &lt;a
 href="https://coreydaley.dev/posts/2026/02/pagefind-custom-search-ui/" target="_blank" rel="noopener noreferrer"&gt;https://coreydaley.dev/posts/2026/02/pagefind-custom-search-ui/&lt;/a&gt;
&lt;/p&gt;</description></item><item><title>How GitKraken Simplified My Git Workflows and Boosted Productivity</title><link>https://coreydaley.dev/posts/2026/02/gitkraken-simplified-git-workflows/</link><pubDate>Wed, 04 Feb 2026 12:05:00 -0500</pubDate><guid>https://coreydaley.dev/posts/2026/02/gitkraken-simplified-git-workflows/</guid><description>&lt;p&gt;Git is powerful but complex—until you add GitKraken. After years of command-line Git, switching to GitKraken completely transformed how I work. The interactive commit graph alone is worth it: complex branch structures become instantly clear, and you can navigate your entire repository history with simple clicks.&lt;/p&gt;
&lt;p&gt;But it&amp;rsquo;s not just pretty visualization. GitKraken&amp;rsquo;s merge conflict resolution is intuitive, the built-in code review tools streamline collaboration, and integrations with GitHub, GitLab, and Bitbucket make everything seamless.&lt;/p&gt;
&lt;p&gt;Whether you&amp;rsquo;re a Git beginner finding your footing or a pro looking to boost productivity, GitKraken removes the intimidation factor and makes version control visual and accessible. Have you tried visual Git clients? What&amp;rsquo;s been your experience with GitKraken or similar tools?&lt;/p&gt;
&lt;p&gt;Read more at &lt;a
 href="https://coreydaley.dev/posts/2026/02/gitkraken-simplified-git-workflows/" target="_blank" rel="noopener noreferrer"&gt;https://coreydaley.dev/posts/2026/02/gitkraken-simplified-git-workflows/&lt;/a&gt;
&lt;/p&gt;</description></item></channel></rss>