Elyra · · 4 min read

Elyra 0.9.21: Your Dev Environment Gets a Voice — and Elyra Gets a School

Coding agents are blind to the layer where half your afternoons go: the php-fpm OOM, the .env pointing at nothing, the APP_URL that lies. 0.9.21 ships a Grove integration that reads the environment's own files — plus Freddy the Notetaker, a fourteen-chapter course that builds a real product with Elyra from an empty directory.

Elyra 0.9.21: Your Dev Environment Gets a Voice — and Elyra Gets a School

Most releases teach the agent something new about code. This one teaches it two different things: what's running on your machine, and how to teach you. Version 0.9.21 ships Grove integration and something we've wanted to build for months — a complete course.

Why this release

There's a category of debugging that never shows up in the codebase: the 500 that's actually a php-fpm OOM, the .env pointing at a port nothing listens on, the APP_URL that says http://localhost while your dev environment serves https://myapp.test. None of this is in your repository. All of it costs you afternoons.

Coding agents are blind to this layer by default. They read your code, your config files — but not the actual state of the environment those files are supposed to describe. So they guess. And environment guesses are the worst kind: plausible, confident, wrong.

Meanwhile, a different kind of question kept arriving from users: "I've installed Elyra. Now what — what's the actual workflow?" A command reference answers "what does /rewind do." It doesn't answer "when in a real project's life do I reach for it." That gap needed more than a docs page.

0.9.21 answers both.

1. @elyracode/grove: the agent reads the environment's own files

Grove is a local dev environment manager — PHP and Node runtimes, MySQL/Redis services, TLS, .test domains, all driven by a daemon and a config.toml. No CLI.

That "no CLI" part shaped the whole design. Most environment integrations shell out to a command-line tool and parse whatever it prints. The Grove extension does something more direct: it reads Grove's own files — the config, the service state, the pid files, the logs. No subprocess, no parsing fragile CLI output, no guessing. The agent sees exactly what Grove sees.

elyra install npm:@elyracode/grove

Four tools, three commands. The dashboard:

/grove

Grove Status

Daemon (groved): running TLD: .test

Runtimes

  • PHP: 8.4, 8.5 (default: 8.5)
    • php-fpm 8.5: running
  • Node: 24

Services

  • mysql: autostart, port 3306
  • redis: autostart

Current Project

The one that saves afternoons is the .env sync check. Here's the key detail: it doesn't compare your .env against defaults — it compares against Grove's actual state. The real MySQL port from Grove's service registry. The site's real domain, including whether Grove serves it over TLS:

/grove-sync

Grove .env Sync Check

Found 1 issue:

Matching:

  • DB_HOST matches Grove MySQL
  • DB_PORT matches Grove MySQL (3306)

And when something breaks, /grove-logs pulls MySQL, Redis, php-fpm, your site's vite/queue dev logs, and the Laravel log into one view — so "the page 500s" becomes "php-fpm hit its memory limit at 14:32" in one command instead of four terminal tabs.

Bonus: Elyra notices on its own. Stack detection now recognizes Grove sites. Open a project that's registered in Grove's config — or just sitting in a parked folder — and Elyra offers the integration at startup:

Grove site detected (https://freddy.test).
Install the Grove integration: elyra install npm:@elyracode/grove

Quietly skipped if you've already installed it. The same detection principle we use for TALL/SILT/VILT stacks, extended to the environment layer: Elyra should notice what you're working with and come pre-equipped.

2. The Elyra Course: Freddy the Notetaker

The bigger half of this release isn't a package — it's fourteen chapters.

Freddy the Notetaker is a complete course that builds a real product with Elyra: a notes app with fast capture, flat tags, and full-text search, on the SILT stack, from empty directory to deployed. Not a command reference — a journey. Every feature is taught at the exact moment a real project needs it:

  • Chapter 1 starts in an empty directory, on purpose — an agent with nothing to edit can only think with you. You'll meet the single best prompting pattern we know: "Don't build yet. Interview me."

  • Chapter 4 is where most readers have the lightbulb moment: the edit loop that checks its own work, with diagnostics and blast radius arriving in the edit's own result.

  • Chapter 9 hands the biggest feature to a /swarm --worktrees pipeline and reviews one finished diff instead of supervising twenty minutes of edits.

  • Chapter 10 makes experiments cheap: /rewind restores files and conversation together, so a bad idea doesn't just get reverted — the agent forgets it ever suggested it.

  • Chapter 12 is where Grove slots into the daily rhythm, alongside /briefing, /commit, and /pr.

  • Chapter 14 ships Freddy — and reveals what the course was actually teaching: fourteen habits, one per chapter, that transfer to any project you build next.

Every chapter follows the same honest rhythm: the problem → the hard way → the Elyra way → what you learned. We show the failure modes first because you've probably lived them — the 47-file scaffold you didn't ask for, the assertion-free test stubs, the agent that styles by statistics.

Who it's for: anyone who has installed Elyra and wants to know how to actually work with an agent, day to day. No prior agent experience assumed.

Get it

npm install -g @elyracode/coding-agent@latest
elyra install npm:@elyracode/grove

Then start the course at elyracode.com/course — chapter 1 needs nothing but an empty directory and ten minutes.