v0.22.0
PostgreSQL and MySQL now run inside the workspace — one database per working copy, no
Docker, nothing to install by hand — driven from a terminal with af-db or from a
Databases tab in the settings. The model catalogue reads like a catalogue too: a model
carries the name its publisher gave it and the pictures it was shown off with, a
repository’s quantisations say what fits the GPU before anything is downloaded, and
members pick a model by name rather than by id.
- PostgreSQL and MySQL in the workspace.
af-db urlhands a database-backed test suite a connection URL for the current working copy, installing and starting the server the first time it is asked, andeval "$(af-db env)"puts it in the shell. The data survives Stop → Start, the port is the 5432 / 3306 your framework already defaults to, starting an engine puts its client onPATH(psql,mysql), and a server nothing is connected to stops by itself. - A Databases tab in the workspace settings. It shows each engine’s state, version,
memory and connection URL, and does without a terminal what
af-dbdoes: install, start and stop an engine, create, delete or reset a database by name, and open a shell already connected to one. Start with the workspace keeps an engine up from boot — off by default, because a database costs memory even when nothing is querying it. - The model catalogue shows names and example images. A registered model is headed by the name its publisher gave it instead of a key built from a file name, with that publisher’s example images, and the list is divided into families with a chip per family. One button fetches the names and pictures for the models taken in before this release.
- A repository’s quantisations are one card, and it answers “will this fit” before you download. Whichever file you picked, the card could report a model as impossible on the GPU class it in fact runs on; the context window is a field on the card now, defaulting to the largest that fits, and each file is marked Fits / Tight / Will not fit this class with the class that would hold it. A chat model’s files are filed under their repository, and Show the other quantisations in this repository lists the rest of them without a second trip through search.
- Members pick models by name. opencode’s model list and the image generation pane’s picker show the publisher’s name and the part that tells two files apart, rather than the id. The id is unchanged as the key a request names.
- The mirror can translate an answer by itself. Settings › AI assist › Translate automatically presses the Translate button the moment a turn finishes, for answers that arrive while you are watching that session. Off by default, and it never goes back over answers that were already on screen.
Improved
Section titled “Improved”- The registered model list is a grid of cards, so a wide pane carries several models per row, and each card folds to the width it was actually given rather than to the size of the window.
- Changing an opencode key or seat no longer cuts a running turn short. The opencode card in Settings › Agents says the change is waiting and leaves the restart to you, for a moment when nothing is mid-turn; a change to the model catalogue reaches the running server with no restart at all.
- opencode sessions stopped mid-work and said nothing about it. The shared opencode server was being recycled every couple of minutes, and the turn that died with it was reported as a completed answer. The recycling is gone, and an interruption nobody asked for is reported as one.
workspace-agent --versionrewrote every CLI’s MCP configuration. Any argument the agent did not recognise started a second agent, which renamed its own MCP server and rewrote claude / codex / opencode / cursor to match it. An unrecognised argument now prints the usage and stops, and--versionand--helpare supported.- Every workspace on a deployment could slow to a crawl, because the agent kept its changing state on the shared file system and read through every session’s transcripts to answer. Both are off it now — the other half of this fix is a stack update, see below.
- A URL followed by Japanese punctuation broke the link and swallowed the words after
it. In
…/pull/727(base は develop)everything up to the next space went into the link;、,。,」and・did the same, and two URLs separated by・collapsed into one.
Upgrade notes
Section titled “Upgrade notes”- The file system’s throughput mode is a parameter now, and the default changes what you
are billed.
10-datahard-codedbursting, which is what left a deployment starved;EfsThroughputModedefaults toelastic, so the next update of that stack moves the live file system over — metered I/O with no ceiling. PassEfsThroughputMode=burstingto keep what you had.provisionedis the third choice (EfsProvisionedThroughputMibps), but AWS locks a decrease — and a return to elastic — for 24 hours, so raise it later rather than guess high now. - The slowdown fix is the new images and that stack update. Updating the images alone leaves the live file system in whichever mode it is in.
Agent CLI pins: Claude Code 2.1.275, Codex 0.155.0, Copilot 1.0.86, Antigravity 1.2.5, Cursor 2026.09.15, Kiro 2.22.0. The others are unchanged from 0.21.0.