Install and enable

Prerequisites for the AI Market Maker — Ecosystem, ScyllaDB and a live matching engine — plus the Extension Manager steps that license, install and switch it on so its seven cron jobs register, the permission keys, and how to prove the engine is actually driving your markets.

13 min readUpdated 5 September 2026install, extension, cron, permissions, ecosystem

The addon is licensed, installed and switched on from the Extension Manager, like every other add-on. There is no separate installer and no service of its own to start. Installing means: get the prerequisite layers in place, activate the licence, install the release and apply it with pnpm updator, switch the addon on so its cron jobs register, grant the permission keys, and then build your first market.

Prerequisites, in order

  • A working Bicrypto install — see Server requirements
  • The Ecosystem addon licensed, installed and enabled
  • ScyllaDB reachable, with the Ecosystem keyspace in use
  • At least one ecosystem market that does not already have a market maker
  • This addon licensed, installed and enabled in the Extension Manager
  • Your admin role holding access.ai.market_maker
  • An ecosystem wallet on the Super Admin's account — the platform's wallet, which every pool is funded from whoever clicks — holding the base and quote assets (a FUTURES wallet on the same account for a futures market)

Ecosystem is not optional

The engine quotes ecosystem markets and settles through the ecosystem matching engine. With the ecosystem extension disabled there is no matcher anywhere in the deployment — not on the web process, not on a cron process — so there is nothing for the bots to make a market in.

The platform detects this combination and says so in the cron banner rather than letting it fail quietly:

the ecosystem extension is NOT enabled, so no process in this deployment boots an ecosystem matcher at all.

Note what that banner also says: the other six AI Market Maker cron jobs — risk monitor, pool rebalancer, daily reset, analytics, price sync and history retention — do still run. Only the engine job has nothing to do. So an install in this state looks half-alive: crons green, markets ACTIVE, price frozen.

ScyllaDB is where the tape lives

The addon reuses the Ecosystem keyspace. On first connection it creates its own tables there — ai_bot_orders, ai_bot_trades, ai_bot_real_trades and their index tables. You create nothing by hand, but Scylla has to be reachable, and it is not covered by the platform's MySQL backup. If you run this addon, you own Scylla's backups.

Enable the extension

  1. Open the Extension Manager. Admin → System → Extension Manager. On the Extensions tab (or by searching for Market Maker) find the AI Market Maker card — product ID 61007981 — and click it. Until its licence is activated the card reads Activate and its switch is disabled, with the tooltip Activate license first. The EcoSystem & Native Trading card on the same grid has to be licensed, installed and switched on as well, or no process in the deployment boots a matcher for the bots to trade into.

    1. The AI Market Maker card — click it to open the product page
    2. Its switch stays disabled until the licence is activated
    3. EcoSystem & Native Trading — licensed, installed and on as well
  2. Activate the licence. On the product page press Activate License. Paste the purchase code from your MashDiv dashboard, optionally an email address for update notifications, and press Activate License. The screen confirms License Activated! and sends you back to the product page a couple of seconds later. The box needs outbound HTTPS to reach the licence host; a server without it uses the License File tab on the same screen, which takes the licence certificate downloaded from your MashDiv dashboard instead.

    1. Paste the purchase code here
    2. Activate License — then wait for the redirect back to the product page
    3. The offline route, for a server with no outbound HTTPS
  3. Install the release. Back on the product page, now licensed, the Overview tab has a release panel. If it offers Install v…, press it; if it says Up to date on a product you have only just licensed, press Check for Updates once, then install whatever it offers. The Releases tab holds the notes for the version you are being offered — read them first.

    Install downloads the release, verifies it and extracts it over the project root. It runs no migrations, builds nothing and restarts nothing, so finish it from a shell on the server:

    pnpm updator

    That is the finalise chain — stop, dependencies, schema, seed data, frontend build, start — and it is what makes the addon's tables, routes and screens exist. If the panel still says Up to date after the check there is nothing to download; go straight to the next step.

    1. Check for Updates, then Install v… when it is offered
    2. Releases — the notes for the version you are about to install
    3. The Enabled switch — step 4, not yet
  4. Switch it on. Turn the Enabled switch on — in the product page heading, or on the card in the Extension Manager, which is usable now that the licence is verified. This is what makes AI Market Maker appear under Admin → Extensions (for a role holding access.ai.market_maker) and files its seven cron jobs with the scheduler. It takes effect without a restart.

  5. Check the cron registry. Within a cycle, Admin → System → Cron should show a new ai_market_maker category with seven jobs in it.

The seven jobs are filed under the ai_market_maker category and the scheduler registers them only while the addon is switched on. With it off, none of them are scheduled: no engine loads, no price advances, no daily reset fires and no history is pruned. Market rows can sit at ACTIVE the whole time and look perfectly healthy on the list screen.

The seven cron jobs

Understanding these explains most of the addon's behaviour.

Job Period What it does
processAiMarketMakerEngine 5s Supervises the market-making engine: boots it, reconciles database status against engine state, restarts markets after a deploy. The engine's own tick loop runs at 1 second, separately
processAiRiskMonitor 10s Measures volatility and daily loss per market, and applies the auto-pauses
processAiPoolRebalancer 1h Reports pools whose ratio has drifted. It does not convert balances
processAiDailyReset 24h Zeroes currentDailyVolume and every bot's dailyTradeCount at the UTC day boundary, and writes the previous day's summary
processAiAnalyticsAggregator 15m Aggregates trading statistics
processAiPriceSync 30s Refreshes external reference prices and warns when a target price has drifted more than 10% from the outside world
processAiHistoryRetention 24h Prunes per-trade history past the configured retention window. Daily summaries and lifecycle audit rows are never pruned

Its bots enqueue into the ecosystem matcher, so it runs where the matcher does. On a dedicated cron process (CRON_MODE=only) it is a deliberate no-op while the web process drives the same handler from its own supervisor tick. The other six are correct anywhere.

One engine, one process

The engine must tick exactly once per deployment. Two of them advance the price twice, and both write the 1-minute candle that binary options settle against.

Leadership is arbitrated twice over: a Redis key (ai_market_maker:engine:leader) is the fast lock, and a database lease row (ai_market_maker_engine_lease) is the second arbiter. A process that dies without releasing either is reclaimed — by pid check on the same host, or by lease expiry.

The claim then fails open: every process that starts the engine believes it leads. That is correct for the single-process install it assumes, and it is the first thing to check when a market looks like it is being driven twice — the price moving twice as far as configured, or synthetic depth reappearing after being cleared. The dashboard reports which process produced its figures and what vouched for it; the log carries the same warning as a boxed error.

Permissions

The addon uses one root access key plus scoped keys per resource. A role that should administer market makers needs at least access.ai.market_maker — without it the menu entry does not render.

Area Keys
Console access.ai.market_maker
Markets screen access.ai.market_maker.market
Markets view / create / edit / delete .ai.market_maker.market
Bots view / edit .ai.market_maker.bot
Pool view / edit .ai.market_maker.pool
Analytics access.ai.market_maker.analytics, view.ai.market_maker.analytics
Settings access.ai.market_maker.settings
Emergency manage.ai.market_maker.emergency

edit.ai.market_maker.pool covers deposits and withdrawals — it moves real money out of the platform's wallet (the Super Admin's) and back, whoever holds the permission; the holder is never paid. manage.ai.market_maker.emergency covers the fleet-wide stop and the circuit-breaker reset. Grant both sparingly.

An earlier build split the addon name across a dot — ai.market.maker rather than ai.market_maker. A permission-key migration carries every grant onto the underscored key and then deletes the old row, so on any migrated install the dotted key cannot be held by anyone. If a role that used to reach these screens no longer can, re-grant the underscored key rather than looking for a broken toggle.

One family did not carry cleanly: access.ai.market_maker.market — the Markets list screen — receives grants from a retired ai.trading.market family that no backend route ever checked, not from the addon root. Check who can open that screen after a migration.

See Permissions for how a key is derived and the four places it has to exist.

First run, safely

Do not point a fresh market maker at real liquidity on day one.

  1. Create the market maker. It is created STOPPED, with six PAUSED bots and an empty pool. See Creating and configuring a market.

  2. Start with Real Liquidity at 0. At zero the bots trade only against each other. Nothing is written into the Ecosystem order book, no user can fill an AI order, and the pool is not touched. You get a price series and a tape with no money at risk.

  3. Fund the pool anyway. A market cannot be started at all with a total value locked of zero, and if aiMarketMakerMinLiquidity is set the quote balance must clear it too. See Funding the pool.

  4. Start it and watch the dashboard for a full day. Confirm the market shows Quoting, that its price stays inside the configured band, and that volume today tracks toward the budget rather than exhausting it before lunch.

  5. Only then raise Real Liquidity, in steps, and watch the pool's inventory skew on the dashboard as you do.

Verify the install

Four checks, in order. If one fails, stop there.

Check Where Expected
Crons registered Admin → System → Cron Seven jobs under ai_market_maker, none failed
Engine leading Dashboard masthead An engine process is named, and leadership is arbitrated by Redis or the database — not "none"
Market quoting Dashboard market table Quoting, not Not quoting with a named gate
Price advancing Market detail → Overview Last known price changes, and the chart is continuous

The engine checkpoints its price state roughly every two minutes, so a market started in the last couple of minutes reports no price yet rather than guessing at one. That is not a fault.

Uninstalling

Switching the addon off in the Extension Manager stops everything within a cron cycle: the engine job deregisters, no price advances and no orders are placed. It leaves the licence in place, so switching it back on needs no reactivation.

It does not cancel orders already resting in the Ecosystem book. If you ran with real liquidity, stop each market first — stopping clears the engine's own synthetic depth and cancels its open orders — and only then disable the extension. Rows accumulated by an older build that never cancelled its quotes need the cleanup command:

pnpm eco:mm:orders          # report only
pnpm eco:mm:orders:clean    # cancel them

Market makers, pools, bots and history are all left in place. Deleting a market maker cascades to its pool, bots and history — so if you want the record, do not delete it.