Merlin shipped a lot in the last cycle. Here’s the tour of what’s new and why each piece matters.

Talk to Merlin from Discord

The headline this cycle is the Discord bridge. You run it once with a bot token and a channel ID, and Merlin shows up in your server as a real teammate. @Merlin refactor this starts a session; reply to its response and the thread stays in context. Slash commands ship out of the box — /session new, /plugins, /status, and more.

The thinking embed updates while Merlin works: elapsed time, the fledge tool it’s currently running, live token counts. When it finishes, the footer lists the top tools used and how often. No more “is it stuck or just thinking?”

Each Discord channel keeps its own session context, so different conversations don’t blur together.

Run anywhere

The CLI got significantly easier to use:

  • No fledge.toml required. Run merlin from any directory and it falls back to a sensible global config. (Set OPENROUTER_API_KEY and you’re done.)
  • --project <path> — point at any working directory without cd.
  • --system-prompt-file <file> — inject a custom system prompt from disk.
  • --output ndjson — stream the full fledge-v1 event log as JSON lines. Scriptable. Pipeable. The Discord bridge consumes it directly.

The OS keychain is also on by default on all platforms now. The first time you set a provider key, it goes into your keychain and never touches .env again.

Three-tier provider resolution

Picking a provider used to be all-or-nothing: configure one, get one. Now Merlin walks a fallback chain:

  1. Cloud provider you configured (the default — Claude, OpenAI, OpenRouter, etc.)
  2. BYO key — if you have an API key in env, use it
  3. Local Ollama — if all else fails, fall back to a local model

This means new users get a working merlin even without a key. It also means you can configure your team’s preferred provider but still keep working when offline.

A new plugin: specsync-create

A funny incident motivated this one. Merlin opened a PR on a sister project and produced spec files that weren’t valid spec-sync specs — just flat markdown files with no frontmatter, no required sections, not registered. They look right. They don’t count.

So we built specsync-create, a fledge plugin that scaffolds a compliant spec the right way: module-dir layout, valid YAML frontmatter, all required sections stubbed, companion files, registry update. The plugin description tells the agent: “ALWAYS use this when creating a new spec — never write spec files directly.”

This is a pattern we’ll lean on more: when the agent does something subtly wrong, the fix isn’t a prompt change. It’s a plugin that makes the right thing the easy thing.

Smaller things worth knowing

  • Cross-channel posting — Merlin can now post into Discord from inside a session, not just respond to mentions.
  • Plugin visibility/plugins lists every fledge plugin Merlin can see, with descriptions. The session footer tallies tool calls by name.

What’s next

  • More desktop panels for the iced GUI
  • Provider-tier benchmark refresh against the new tool set
  • A bug bounty for finding cases where Merlin produces something subtly wrong (like the spec incident)

The Merlin team