跳到主要内容

Run cMind locally 🖥️

This is the fastest way to see cMind for real — a full instance on your own machine. Grab a coffee; you'll likely be signed in before it's cool.

What you'll have at the end

A running web app at localhost:8080, an MCP server at localhost:8081, a Postgres database, and a local worker node ready to build and backtest cBots. All on your machine, all yours.

Before you start, you need one of:

  • Just Docker → use Option A (no .NET SDK required). Recommended for a first look.
  • .NET 10 SDK + Docker → use Option B if you want to hack on the code.

Both paths are cross-platform (Windows / macOS / Linux).

Option A — Docker Compose (no .NET SDK required)​

Prereq: Docker Desktop (or Docker Engine + compose plugin).

cp .env.example .env # edit PG_PASSWORD, OWNER_EMAIL, OWNER_PASSWORD
docker compose up --build

Web container mounts host Docker socket (/var/run/docker.sock) so in-browser builder and seeded LocalNode build + run cTrader Console containers on your machine.

Cross-platform notes

  • Docker Desktop (Windows/macOS) exposes socket at /var/run/docker.sock — compose mount works as-is.
  • Linux: ensure your user can access socket, or run compose with sufficient privileges.
  • Web image is linux/amd64; on Apple Silicon Docker runs it under emulation.

Stop and wipe:

docker compose down # keep data
docker compose down -v # also delete the database volume

Option B — .NET Aspire (for development)​

Prereq: .NET 10 SDK + Docker.

dotnet run --project src/AppHost

Aspire orchestrates Postgres, Web, MCP, pgAdmin; wires connection strings + OTLP; opens dashboard. Set owner credentials as Aspire parameters (OwnerEmail, OwnerPassword).

Run just web app against existing Postgres:

dotnet run --project src/Web

Adding worker nodes locally​

Seeded LocalNode already runs work on your machine. To exercise auto-discovery locally, start node agent pointing at Web app (see node discovery) with NodeAgent:MainUrl=http://host.docker.internal:8080 and matching JoinToken.

Troubleshooting 🔧​

Docker has opinions. Here are the usual suspects:

SymptomLikely cause & fix
port is already allocated on 8080/8081Something else is using the port. Stop it, or change the mapping in docker-compose.yml.
Web starts but builds/backtests failThe Docker socket isn't mounted or accessible. On Linux, make sure your user can reach /var/run/docker.sock.
permission denied on the socket (Linux)Add your user to the docker group (sudo usermod -aG docker $USER) and re-login, or run with sufficient privileges.
Very slow first runFirst build pulls images and compiles — subsequent runs are much faster. On Apple Silicon the linux/amd64 web image runs under emulation.
Can't sign inCheck OWNER_EMAIL / OWNER_PASSWORD in your .env. First login forces a password change.
Database weirdness after upgradesdocker compose down -v wipes the volume for a clean slate (you'll lose local data).

Still stuck? Open a Discussion — we're friendly. Next stop: deploy for real →