EmpryoEmpryo.beta
‹ all releases
3.5.4-betaJul 29, 2026

Open a tab, point it at Opus on high effort for the refactor. Open another, drop it on a cheap fast model to answer a question. They don't fight, they don't share settings, and both survive a restart exactly as you left them. This release makes the tab the unit of configuration in Empryo — model, effort, routing, agents, even the map — and rebuilds the router into a real settings surface for pointing every lane at the model it deserves. On top of that: a subagent overhaul that turns delegation into an actual conversation.

Every tab, configured its own way
  • Reasoning effort is per tab. The effort dial used to be one setting shared everywhere. Now it belongs to the tab, and it remembers the right levels for each model you switch to instead of carrying over a setting that doesn't apply. It's saved with the tab and restored when you reopen it. /effort in the terminal, a slider in the desktop composer.
  • Model choice is per tab, and it sticks. Pick a model anywhere — topbar, router, or a per-tab override — and it survives a reload and a session restore. Reopen a saved session and it really is running on the model it says it is.
  • Refresh your model list from any picker, not just the Keys screen.
  • Your tabs stop bleeding into each other. Scroll position is remembered per tab. The context pane's Edited list only shows the tab you're looking at. Map activity, fog and compaction are per tab. Two conversations, two worlds.
The router is a settings page now
  • A nav rail instead of an endless scroll — Routing, Custom agents, Behaviors, Failover — each with a live status line, and your scope and save path pinned to the bottom so you always know what you're editing.
  • Lanes are compact cards, grouped by job: main agent, subagents, quality passes, housekeeping. Each shows honest per-lane spend — and hides the number entirely when a model has no published price, rather than inventing one.
  • Custom agents get their own pane, with a model picker per agent. Choosing one rewrites just that agent's model: line and leaves everything else exactly as you wrote it.
  • Concurrency goes to 16, matching what the engine will actually run.
Subagents, overhauled

Delegation used to be a one-way door: send the work off, wait, read the report. Now it's a conversation.

  • Agents report in while they work. Background agents post progress, questions and blockers upstream. Progress just appears; a question or blocker *wakes you* — because those are the ones where waiting silently wastes everybody's time.
  • You answer without breaking the run. Reply to a working agent and it picks your message up at its next step, keeping everything it had already worked out. Or stop it. Or take the job over yourself. The choice shows up at the moment you need to make it — on the desktop too, pinned to the tab you sent it from.
  • Agents can create agents. An agent can define a new custom agent and hand it work straight away, no restart needed. And if you've defined two agents with the same name in different places, Empryo tells you which one it's using instead of silently picking one.
  • Your own custom agents run in the background. Previously only Empryo's built-in agents could be sent off to work in the background. Now any agent you've defined can, while you carry on.
  • You can see who's talking. Agent badges run through the terminal UI, the desktop and headless output, so parallel work stops reading as one anonymous voice.
  • The transcript stopped narrating its own paperwork. Agent tools read as plain labels, and the status-polling tool went quiet — it was printing a line every time it checked on something, which is not news.

New here? Custom agents are yours to define — drop one in .empryo/agents (or .claude/agents, .opencode/agent, .gemini/agents) and set its model, tools and effort, with the body as its system prompt. Browse them with /agents, or just describe a task and let dispatch pick the right one.

The maze became an aquarium

The map under your chat was already alive. Now it has a cast.

  • Your subagents are sharks — each stationed at the cell its real agent is working in, tool-tinted glowing eyes, dive-travel between files. Background agents are ghost sharks. Click any creature for a card: who it is, its task, its current tool.
  • Your code grows from real diffs. Cells swell and shrink against the actual line-set change, edits leave deposits, touched files glow hot and cool over about four minutes.
  • Fog of war. Light pools around everything alive, so exploring a codebase is something you can literally watch happen.
  • Web work flies to a spinning globe instead of pretending to be file activity.
  • Achievements grow body parts. Spore-style, with an unlock burst. We're not sorry.
Language servers install themselves

Empryo now spots which language servers your project needs and installs them for you on startup, telling you when it does. It also checks they actually work rather than just assuming they're there, and empryo lsp gives you control of them from the command line for the first time. On Windows, errors and warnings simply weren't showing up for TypeScript projects — they do now.

Desktop reliability
  • Big streamed answers render. A long reply could stop painting partway through. It doesn't.
  • Closing the window closes the app. Launched from a terminal, Empryo used to linger after its last window. It quits — and handles Ctrl-C properly.
  • Cmd/Ctrl+S stashes your draft, matching Alt+S in the terminal, for when a thought needs to wait.
  • The browser behaves: overlays hide when they should, pages can be forced light or dark, refused local loads retry, local certificates stop being a wall.
  • The terminal grew hands — copy/paste via context menu, Ctrl+C or Insert; real exit codes; correct reflow on Windows; and reopening a pane re-adopts its terminal instead of losing it.
Windows
  • A whole class of Windows-only bugs, swept. Empryo used to trip over Windows file paths — backslashes, drive letters, and capitalisation that Windows treats as the same but Empryo didn't. Privacy rules that silently failed to match, refactors that wrote broken imports, files Empryo thought were two different files. All fixed.
  • Commands with quotes in them work. Running a command containing quotation marks no longer mangles it.
  • Empryo lets go of your files on exit. Closing a project could leave it holding the workspace database, so the next launch complained the file was in use.
  • The installer wears its own icon instead of a generic one.
Also in this release
  • Web search got more honest. When a search is blocked, Empryo says it was blocked instead of quietly reporting an empty web. On providers that can search for themselves, it now uses that directly — fewer round trips, better results.
  • Lighter on your machine. Faster codebase scans, and language servers you've stopped using shut themselves down instead of sitting on memory all session.