
Mage-OS 4.0.0 – Feature Release
· mage-os-team · Releases · 7 min read
Mage-OS Distribution 4.0.0 is now available. This marks one of our most significant feature releases, and it takes us deeper into AI.
This release is the hard work of people around the globe shipping the things that they need for a modern ecommerce store. This includes:
- Mago, an administrative AI assistant so that you can accomplish your goals faster
- AI discoverability for the storefront
- Native product feeds for the major advertising channels
- Passwordless login with passkeys for customers and administrators
- Enhanced admin tooling
- A substantial overhaul of Multi-Source Inventory
Mage-OS 4.0.0 is built on the same Magento Open Source 2.4.9 base as 3.6.0, with no change to PHP support, so it remains a drop-in upgrade from 3.6.x. Most new features are off until you turn them on.
Mago, an AI assistant in your admin

- Ask it about the store in plain language and it answers questions with live data as stat cards, charts and tables, with deep links into the relevant admin page.
- Update your store simply by chatting with Mago, instead of clicking through pages to find what you are looking for. Every change asks for confirmation first, irreversible actions show their impact before you confirm, and Mago only does what your admin role allows.
- Slash commands such as
/cache flushand/index reindexrun directly, with no AI round-trip.
Mago sits on top of our core mage-os/module-ai-base, so you can use it with whatever LLM you want: OpenAI, Anthropic, Gemini, Azure OpenAI, DeepSeek, OpenRouter, Opper, Hugging Face, Ollama, LM Studio, OpenCode Zen, a self-hosted OpenCode server and any OpenAI-compatible gateway.
Providers are configured under Stores > Configuration > Mage-OS > AI Configuration. API keys are encrypted at rest and are not shown again after saving, token usage is reported per module, service and store at Reports > AI Token Usage, and prompts and responses are not stored. Mago is the first module built on this layer; mage-os/module-automatic-translation still carries its own OpenAI configuration, so for now that one is set up separately.
SEO, AI discoverability and FAQs
module-seo— JSON-LD product, Organization and Breadcrumb schema with 16 product-type templates, configurables as ProductGroup, merchant-listing fields, Open Graph and Twitter cards, robots and canonical control, and multistore hreflang. Supersedesmodule-meta-robots-tagandmodule-hreflang.module-aeo—/llms.txt,/llms-full.txt,/llms.jsonland AI crawler controls for 14 known crawlers, defaulting to CCBot and Bytespider.module-faq— an FAQ manager, a theme-agnostic widget, a Page Builder content type and FAQPage JSON-LD that matches the questions actually on the page.
Passwordless login
module-passkey-auth — WebAuthn and FIDO2 customer login on Luma and Hyvä with full REST and GraphQL, self-service passkey management, an admin revocation grid, and a passkey provider for admin 2FA. Off by default, and requires HTTPS.
Product feeds
module-shopping-feed — Google Shopping, Google Local Inventory, Google Promotions, Meta, Pinterest, TikTok and Microsoft Merchant Center, with FTP and SFTP delivery, source-level local inventory feeds when MSI is present, and a per-product opt-out. An OpenAI Google-compatible preset is included in beta; validate a sample before relying on it.
Admin tooling
module-extension-directorybrowses around 1,100 open-source modules from the admin, with installed and update badges read from yourcomposer.lock. It never installs anything.avstudnitz/scopehint2shows which scope a config value is overridden at, next to the field.
Multi-Source Inventory
- Source-level reservations.
inventory_reservationgainssource_codeandobject_increment_idfor per-source allocation, and adds aggregation and indexing. This closes oversell between two orders drawing on the same physical source through different stocks. - Oversell detection, invariant guards and reconciliation, each separately configurable with optional hourly sweeps.
- New module: Stock Visualizer — a storefront availability panel showing a level or an exact quantity, per source and per variant, composite-aware.
- Performance — parallel full reindex per stock dimension, one async message per stock, chunked cleanup of compensated reservations, and sorted index rows to avoid deadlocks.
Improvements and fixes under the hood
- Faster
setup:di:compile, and smaller compiled output - Safer lazy loading — extensions whose constructors do real work are no longer lazy-loaded
- Full-page cache invalidation fixed for multi-frontend setups, where pages could go stale;
cache:flushnow also removes untagged entries - Native WebP and AVIF upload and processing
- GraphQL customer responses cached per website, and product batching restored in the Catalog and Bundle resolvers
n98/magerun2-dist moves from ^9.4 to ^10.0, a major version bump — check any scripts or CI that call magerun.
Upgrade notes
A few other things to know before upgrading:
- Fill in Organisation details.
module-seooutputs structured data as soon as it is installed, and it stays incomplete until Marketing > SEO > Organization is filled in./llms.txtdepends on the same data. - Run your queue consumers. AEO documents and SEO rebuilds are generated by the
mageosSeoFeedRegenerateconsumer, so make sure consumers run under cron or a supervisor. - Off by default: passkey login, the AEO documents and AI-crawler rules, Stock Visualizer, source-level reservations, and Mago. Shopping feeds produce nothing until a feed is defined.
- On by default, admin only: ScopeHint popovers and config paths, and the Extension Directory page with its dashboard tip panel.
- Data leaving the store: Mago sends prompts to the AI provider you configure. The Extension Directory in its default Direct mode has admin browsers fetch the public catalog feed; Proxy mode avoids that.
- Recompile after upgrading. The compiled DI format has changed, and extensions that read compiled configuration directly may need attention.
The new packages add 30 packages to a default install, 541 to 571. The AI configuration layer brings the Symfony AI platform components along with symfony/http-client, symfony/serializer, symfony/property-info and symfony/uid. Passkey authentication brings web-auth/webauthn-lib, web-auth/cose-lib and spomky-labs/cbor-php.
Our foundation
For details on the upstream release, see the Magento Open Source 2.4.9 release notes.
There are no infrastructure changes associated with this release.
Additionally, as per our release policy, Mage-OS 3.6.0 reaches end of life with this release.
Thanks to everyone who shipped this one
@jeanmarcos-dev, @rhoerr, @max-dernovyi, @pingiun, @jissereitsma, @TuVanDev, @Blumm, @melindash, @marcelmtz, @mattmacrocket, @CyberNativeAI, @GrimLink, @SamueleMartini, @ImanuelBertrand, @boldbart, @rikwillems and @damienwebdev.
The Multi-Source Inventory work is overwhelmingly @jeanmarcos-dev’s, ported by @rhoerr.
Upstream fixes we picked up came from @lbajsarowicz, @claudio-ferraro and @sumesh-GL, and on the MSI side from @igorwulff, @adamphh, @vlmed, @alzota and @arnobsh.
And @avstudnitz, whose ScopeHint2 is bundled with the distribution from this release on.
The new bundled modules come from their own teams. Mago and mage-os/module-ai-base from @michielgerritsen (Control Alt Delete), with @haimanti-dekker, @Marvin-Magmodules, @mitchelvk, @Renews1337, @mbm-peter, @henkvalk, @GrimLink, @gregor-RW, @JeroenBoersma, @cmuench and @DavidLambauer. module-seo, module-aeo and module-faq from @Sental, with @XxXgeoXxX. module-passkey-auth from @rhoerr and @brosenberger. module-shopping-feed from Rocket Web and @mattmacrocket. The extension directory from @rhoerr.
How to upgrade
Upgrading from an older Mage-OS version
composer require mage-os/product-community-edition=^4.0 --no-update
composer update
bin/magento setup:upgradeNew installations
composer create-project --repository-url=https://repo.mage-os.org/ mage-os/project-community-edition:4.0.0 my-storeMigrating from Adobe Commerce or Magento Open Source
See our migration guide for detailed instructions on switching to Mage-OS.
We hope you enjoy Mage-OS 4.0.0. As always, please report any issues on GitHub and join the conversation on Discord.