The Home for Magento 2 Excellence

Automated build tests for Magento 2 modules. Explore. Evaluate. Elevate. #magento2

1062 Modules
664 Ready
397 Need Help
Vendors πŸ† Leaderboard
Actively Maintained vv1.0.0 MIT

Mago AI Assistant

mago-assistant/magento2-mago 52

Open-source AI chat assistant for the Magento admin. Ask questions in plain language and get live store data (sales, products, customers, config) as stat cards, charts and tables, or have it change settings, CMS content and caches after you confirm. Respects admin ACL roles, supports slash commands, docs-grounded answers and custom skills via DI. Bring your own key: Anthropic, OpenAI, Gemini, Azure, DeepSeek, Ollama and more.

12
Downloads
Below average
9
GitHub Stars
Below average
13d ago
Last Release
31
Open Issues
Build Passing
Ready to install

Build Tests

Composer Install
DI Compile
Templates

Code Quality

CS Coding Standard
32 errors , 312 warnings
L1 PHPStan

Release Discipline

? SemVer not assessable What is this?

Release history audited up to vv1.0.0

Tested on Magento 2.4.9

Recent Test History

Each release is tested against the latest Magento version at that time.

vv1.0.0 on Magento 2.4.9
Oct 21, 2026

Share This Module's Status

Mago AI Assistant Magento compatibility status badge

README

Loaded from GitHub

Meet Mago

Running a Magento store means living in the admin panel: digging through reports, hunting for that one configuration setting, flushing the cache after every deploy. Mago puts a chat window in your admin and does that work with you.

Type a question in plain language and Mago answers with live data from your own store β€” revenue, best sellers, customers, configuration, content. Tell it to change something and it does it for you, but only after you've confirmed. It streams its answer as it works, shows numbers as stat cards, charts and tables where that helps, and never touches anything your admin role doesn't allow.

Why merchants like it

  • Free, forever. Mago is open source under the MIT licence β€” no licence fee, no seats, no subscription. You only pay your AI provider for what you use, and Mago keeps its prompts small so a typical action costs a few cents.
  • Your AI, your key. Bring your own Anthropic or OpenAI key (or Gemini, Azure, DeepSeek, Ollama and more). Requests go straight from your store to your provider β€” there is no Mago server in between.
  • Nothing changes without your OK. Reading is instant; every write asks first. Irreversible actions such as cancelling an order or issuing a refund show their impact before you confirm.
  • Follows your admin roles. Read and write access run through Magento's own ACL, so every admin sees exactly what their role allows.
  • Answers you can act on. Stat cards, charts, tables and record lists, plus deep links straight into the admin page you need.
  • Grows with the community. Agencies and module vendors add new skills as addons, without touching core.

What you can ask

Ask a question… …or give an instruction
"What were our best sellers this week?" "Set the free shipping threshold to €75"
"How did revenue compare to last month?" "Flush the cache" (/cache flush works too)
"Which customers ordered more than three times?" "Reindex the catalog"
"Where do I change the tax display setting?" "Write a product description for SKU LT-2201"
"Which products have no image?" "Disable the Christmas CMS block"
"How do I set up a cart price rule?" (answered from the official docs) "Cancel order #100004521" (shows impact, asks to confirm)

See docs/skills-examples.md for more example prompts per skill.


Features

  • Natural language chat in the Magento admin panel
  • Real-time streaming responses via SSE
  • Built-in skills for sales analytics, store configuration, content management, and admin navigation
  • Slash commands β€” /cache flush, /cache clean <type>, /index status, /index reindex run directly against Magento, no AI round-trip
  • Extensible architecture β€” third-party modules can register custom skills via DI
  • ACL-based permissions β€” read/write access controlled per admin role
  • Write confirmation β€” every write asks first; irreversible actions (cancel, refund, delete) show their impact and need an explicit acknowledgement, several writes in one turn become a tick list
  • Answer widgets β€” stat cards, charts, tables and record lists in the answer where the data allows it (see docs/ui-components.md)
  • Write confirmation β€” destructive actions always require explicit user approval
  • Form access β€” reads and stages field changes on the admin form open in the browser (including unsaved edits), but never saves: changes are only staged into the form's own fields, same as typing them in, and the administrator's own Save click is what persists anything
  • Multi-provider β€” Anthropic, OpenAI, Azure, Google Gemini, DeepSeek, Hugging Face, OpenRouter, Ollama and LM Studio, through MageOS_AiBase
  • Documentation grounding β€” answers admin how-to questions from Magento/Adobe Commerce docs, fetched into your database (optional)

Requirements

  • PHP >= 8.2
  • Magento >= 2.4.8 or Mage-OS >= 1.1
  • An API key for one of the supported providers

Installation

Anthropic and OpenAI are included out of the box. For other providers (Azure, Gemini, DeepSeek, Ollama, LM Studio, etc.) install the matching Symfony AI bridge β€” see composer.json suggests.

composer require mago-assistant/magento2-mago
bin/magento module:enable MageOS_AiBase MagoAssistant_Mago
bin/magento setup:upgrade

Configuration

First add a provider under Stores > Configuration > Mage-OS > AI Configuration: pick the backend, paste the API key, choose a model, and use Test Connection to check it answers.

Then, under Stores > Configuration > Mago Assistant:

  1. Enable the module (General)
  2. Pick the AI Service the assistant runs on (API Settings). Leave it on Automatic to use the first usable one, which is what a single-provider store wants.

New add-ons in the chat panel (off by default)

Stores > Configuration > Mago Assistant > Add-ons > Show new add-ons puts the newest Mago add-ons in the panel's welcome state. It is off by default, because switching it on lets the store reach out to a host that is not yours: https://askmago.com/addons.json, a public JSON document, fetched the first time an administrator opens the panel and then cached for a week.

The request carries nothing about the store beyond what any HTTP request carries β€” its server address and the user agent MagoAssistant-Mago. There is no query string, no store identifier and no account behind it, which is why the feed is a static file rather than an endpoint that answers per installation. With the setting off, nothing is fetched and the panel asks for nothing.

How tools reach Magento

Tools run Magento's web API routes inside the PHP process that handles the chat, as the admin who is chatting: the route's ACL resources are checked against that admin's role, and nothing goes over HTTP. There is no internal URL to configure and no admin token is created. The former Internal API URL and Verify TLS Certificate settings are removed, along with their saved values.

Voice input (off by default)

Stores > Configuration > Mago Assistant > Voice Input > Enabled adds a microphone button next to Send. Press it, speak, and the words are added to the input as you talk. Recording stops at the first pause or when you press the button again, and the cursor goes back to the input: check the text and press Enter or Send yourself. Nothing is sent by voice alone.

The browser does the speech recognition, so the audio goes to the browser vendor's speech service (Google for Chrome), not to Mago or the AI provider. That is why the setting is off by default, and why each administrator sees a short notice the first time they press the button in a browser. The browser listens in the administrator's own interface locale (Account Settings > Interface Locale): someone with an English admin who speaks Dutch should switch that to Dutch. The button only appears in browsers with built-in speech recognition, such as Chrome, Edge and Safari.

Built-in Skills

Skill area Tools Access
Store Analytics sales_data, product_data, customer_data Read
Store Configuration config_reader, config_writer, cache_manager, indexer_manager Read / Write
Content Management cms_data, content_generator Read / Write
Navigation admin_navigator Read
Inventory stock_level (without MSI), stock_level_msi (with MSI) Read
Documentation docs_search Read
Form Access page_form Read / Stage (never saves)

See docs/skills-examples.md for example prompts per skill and docs/skills-roadmap.md for the full roadmap of planned skills.

Slash commands

Typing / in the chat shows the available commands. These run without the AI provider and reply instantly:

Command Does
/cache flush Flush all caches
/cache clean <type> [type...] Clean specific cache types
/cache status List cache types and their status
/index list List all indexers
/index status Show indexer status
/index reindex [indexer_id...] Reindex all indexers, or only the given IDs
/help List the commands you may use

Write commands need the MagoAssistant_Mago::assistant_write ACL resource plus a write grant on the underlying skill. See docs/skills-architecture.md for registering your own commands.

The answer widgets and skill cards the chat panel renders are documented in docs/ui-components.md; docs/ui-components-examples.md shows every component with sample data and the call behind it. To add a widget of your own from another module, follow docs/widgets.md. page_form reads the admin form currently open in the browser and can stage new field values for the administrator to confirm β€” it never writes to the database itself, only into the same fields the administrator would type into, so their own Save button is what persists anything. See docs/form-access.md for what it can see, which forms are excluded, and the directive contract it uses to reach the browser.

Documentation grounding

When enabled, the assistant can answer "how do I…" questions from the official Magento admin documentation instead of guessing. The docs_search skill runs a MySQL FULLTEXT search over an indexed copy of the docs and cites the source page it used.

Configuration

Stores > Configuration > Mago Assistant > Documentation

Field Config path Default Purpose
Enable documentation grounding mago/docs/enabled 0 Master switch; also gates the sync cron
Source repository mago/docs/source_repo mage-os/mirror-commerce-admin.en GitHub owner/repo to index. Default is the MIT-licensed Mage-OS mirror of Adobe's Commerce Admin docs
Source branch / commit mago/docs/ref main Branch or commit to index; pin to a commit for reproducibility
Results per search mago/docs/top_k 5 Max doc pages returned per search
Sync schedule mago/docs/cron_expr 0 4 1 * * (monthly) Cron expression for the re-index job

How the corpus is built

A cron job (mago_docs group, its own process) indexes the docs into the mago_doc table (~5 MB). To index immediately instead of waiting for the cron:

bin/magento mago:docs:index --force

Sync is cheap to run often because it is change-detected by git tree SHA: an unchanged source repo costs a single API call and skips re-fetching entirely. This is why the default schedule can safely be raised when you feed docs that update more often than the Mage-OS mirror. On a real change, every help/**.md is fetched (including _includes/, needed to resolve {{$include}} partials), Experience League markup is normalized to plain text, and the table is swapped in a single transaction β€” a failed sync keeps the previous corpus, and searches keep answering from the old corpus until the new one is committed. Only one sync runs at a time: a second invocation (cron overlapping a manual run, or a double-started command) reports another sync is already running and exits instead of interfering.

Why MySQL FULLTEXT (not embeddings)

Retrieval uses a MySQL FULLTEXT index rather than vector embeddings so the feature works on any Magento install with zero extra infrastructure β€” no vector database, no embeddings service, and no dependency on a specific AI provider (Anthropic, for one, has no embeddings API). For a bounded, well-structured doc corpus this keyword search is accurate enough, and the assistant compensates for the lack of semantic matching by issuing multiple searches with different terms when the first result set is thin. Semantic/vector retrieval can be added later as an optional backend without changing the skill contract.

Custom docs

The pipeline is source-repo agnostic: point Source repository at any public GitHub repo of Adobe Experience League-flavored (or plain) markdown to ground the assistant on your own documentation. Private repos and non-GitHub sources are on the roadmap.

Extending with Custom Skills

Third-party modules can register tools by implementing ToolInterface and adding them to the ToolRegistry via di.xml. No core modifications needed.

See docs/skills-architecture.md for the full architecture reference, including:

  • How the skill/tool system works
  • Step-by-step guide for building custom skills
  • ACL and permissions model
  • Data & privacy details
  • MCP compatibility roadmap

Building your own tool? bin/magento mago:tool:create scaffolds the module and bin/magento mago:tool:verify checks it, including every returned field's privacy class. docs/building-a-tool.md walks through it and works as instructions for any coding agent: point your AGENTS.md at it.

Testing

End-to-end tests run with Playwright against Chromium. No test calls a real provider: the chat panel is covered with browser-level SSE stubs, the backend with WireMock standing in for the provider endpoint.

cd Test/End-2-end
npm install && npx playwright install chromium
BASE_URL="https://your-store.test/" npx playwright test

See Test/End-2-end/README.md for configuration, the WireMock setup and how to add scenarios.

Permissions

ACL Resource Grants
MagoAssistant_Mago::config Module configuration (Stores > Configuration > Mago)
MagoAssistant_Mago::assistant_read Read-only tools (analytics, config reading, navigation)
MagoAssistant_Mago::assistant_write Write tools (config changes, CMS, content generation)
MagoAssistant_Mago::conversations Conversations grid and transcripts of every admin, continue a conversation
MagoAssistant_Mago::conversations_delete Delete conversations
MagoAssistant_Mago::flags Answer feedback (also needs conversations)
MagoAssistant_Mago::statistics Statistics and dashboard
MagoAssistant_Mago::skills_read View per-user skill permissions
MagoAssistant_Mago::skills_write Edit per-user skill permissions

Each screen asks for its own resource. A role that held MagoAssistant_Mago::config used to reach conversations, statistics and skill permissions too. On upgrade it keeps statistics and skill permissions (data patch GrantSplitScreenResources), but not conversations: grant MagoAssistant_Mago::conversations explicitly to roles that should read other admins' transcripts.

Data & privacy

Mago stores nothing outside your Magento installation. Every request goes directly from your store to the AI provider you configured, using your own API key; what that provider does with the request is governed by its API terms. The only other outbound call the module can make is the add-on feed, which is off unless you switch it on β€” see New add-ons in the chat panel. With voice input switched on, the spoken audio goes from the administrator's browser to its vendor's speech service. Mago only reads what the current admin's role allows and never writes without an explicit confirmation. Details in docs/skills-architecture.md.

Community

Mago is built in the open with developers, community builders and backers from the Dutch Magento ecosystem. Issues and pull requests are welcome at github.com/mago-assistant; brand assets and press material live at askmago.com/brand.html.

License

MIT

This content is fetched directly from the module's GitHub repository. We are not the authors of this content and take no responsibility for its accuracy, completeness, or any consequences arising from its use.