Skip to main content

Getting Started

Running Merlon with the least effort, from nothing to a working operator dashboard.

If you want to look at a populated system rather than an empty one, start with the Demo Tour instead: it ships about 1,015 synthetic customers and 98 alerts, and needs no account.

Prerequisites​

You do not need Go or Node.js installed locally — everything below runs in containers.

1. Start it​

git clone https://github.com/ksuk/merlon.git
cd merlon
cp .env.example .env
mkdir -p operator-content/tm_scenarios operator-content/screening_lists
cp content/_sample/cdd_weights/funds_transfer.yaml operator-content/cdd_weights.yaml
cp content/_sample/tm_scenarios/*.yaml operator-content/tm_scenarios/
cp deploy/seed/demo/screening_lists/*.yaml operator-content/screening_lists/
docker compose up --build

The standard topology mounts operator-content read-only and requires the native engine. The copied files are synthetic examples for local evaluation; replace them with reviewed, institution-approved policy content before using real data. If the directory or any required root is missing or invalid, the process remains live for setup and diagnostics but GET /healthz/ready returns 503 with "engine":"error", and the system status page marks the engine unavailable.

The first build takes a few minutes. Compose reads .env for the database password, bootstrap token, and development JWT signing secret, so the copy in step two is not optional — without it, startup stops before Merlon can serve the login flow.

The default API host port is 8080. If that port is already in use, choose a different project name and host port before starting the stack:

MERLON_API_HOST_PORT=18050 \
docker compose -p merlon-local-18050 -f docker-compose.yml up --build

When using an override, replace :8080 with :18050 in the URLs below. The standard topology does not publish PostgreSQL to the host; use the documented test overlay only when a local test client needs a loopback database port.

Wait for this line:

{"level":"INFO","msg":"merlon-api starting","env":"development","mode":"all","addr":":8080"}

2. Create the administrator account​

Open http://localhost:8080.

Authentication is enabled in this topology and no account exists yet, so the login screen is a dead end until you create one. Follow Create the administrator account below the login form, or go straight to http://localhost:8080/setup.

Enter an email address and a password of at least 12 characters. This route only works while no account exists — once the first administrator is created it rejects further requests. After signing in, use User management to create the Analyst and Viewer accounts required by your operating model. The same screen changes roles or active state and sets a replacement password. Each of those changes invalidates that account's existing sessions.

:::note healthy does not mean set up

The standard Compose healthcheck asks GET /healthz/ready, so docker ps remains unhealthy until the engine is loaded and the first administrator exists. The process is still reachable through GET /healthz/live for setup and diagnostics. See Troubleshooting.

:::

3. Log in​

Log in with the account you just created. You should land on the dashboard, with an empty customer list and no alerts. That is expected: nothing has been loaded yet.

Open User management, create separate Analyst and Viewer accounts, and confirm that each can sign in. Keep at least one active Admin account: the API rejects an attempt to disable or demote the last one.

What next​

GoalGo to
See the product working with dataDemo Tour
Load your own customers and transactionsInitial Migration
Understand what drives scores and alertsArchitecture
Tune the rulesRule Authoring
Change any settingConfiguration
Run this for realDeployment
Something did not workTroubleshooting

Before this leaves your machine​

.env.example ships development-only credentials, and every one of them is marked MUST change in production. The compose file used above also publishes port 8080 on all interfaces.

This quick start is for evaluation on a local machine. Read Deployment and Configuration before running Merlon anywhere else — a system that produces regulatory records under default development credentials is not one you want to explain later.