Install and enable

Prerequisites for the AI Market Maker — Ecosystem, ScyllaDB and a live matching engine — plus the extension row that registers its seven cron jobs, the permission keys, and how to prove the engine is actually driving your markets.

7 min readUpdated 3 August 2026install, extension, cron, permissions, ecosystem

The addon ships inside the same repository tree as the rest of the platform. There is no separate installer, no service to start and no pnpm install step of its own. Installing means: get the prerequisite layers in place, switch the extension row 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 installed, licensed 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's files present and its ai_market_maker extension row enabled
    • Your admin role holding access.ai.market_maker
    • An ecosystem wallet, owned by the admin who will fund pools, holding the base and quote assets

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 extensions screenAdmin → System → Extensions. Find AI Market Maker (ai_market_maker, product ID 61007981).

  2. Activate the licence if the screen asks for one, under Admin → System → License, using that product ID and the purchase code from your Envato account. The box needs outbound HTTPS to reach the licence host.

  3. Toggle the extension to enabled. This writes extension.status and clears the settings cache.

  4. Run the updator if you have just extracted new files.

    pnpm updator
  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 reads the enabled-extension set from the database. With the row 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 an admin wallet and back. 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

Toggling the extension row off stops everything within a cron cycle: the engine job deregisters, no price advances and no orders are placed.

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.