Skip to content

Installation

Clone the workspace

bash
git clone https://github.com/dlepaux/gordon-workspace.git
cd gordon-workspace

All service repos are siblings inside the workspace directory, not submodules.

First-run bootstrap

bash
make dev-init

dev-init is idempotent. It:

  • Checks required tools (Docker, Rust, Node, Python, overmind, sccache, cargo-nextest)
  • Initialises a local Postgres cluster at ./data/postgres/
  • Runs gordon-migrate to apply all schema migrations
  • Creates the NATS JetStream stream (gordon-bus)
  • Writes .env.dev with dev-safe defaults

Run this once per machine. Re-running is safe.

Start the dev stack

bash
make dev-up

This launches the full stack via overmind (Procfile.dev):

ProcessWhat it runs
postgresHost Postgres (not Docker)
natsHost NATS server with JetStream
migrategordon-migrate one-shot — exits after applying migrations
datagordon-data on :8081
riskgordon-risk on :8082
managergordon-manager on :8083
botgordon-bot on :8084
executorgordon-executor on :8085
consolegordon-console (Next.js) on :3000

Services auto-restart until migrate completes and the least-privilege roles exist.

Tail a specific process:

bash
make dev-logs P=data     # gordon-data logs
make dev-logs P=manager  # gordon-manager logs

Check process status:

bash
make dev-status

Seed market data

bash
make dev-seed

Backfills BTC+ETH 1-year of 1m klines, higher-TF precompute, GEX, overlays, and macro data. First run takes approximately 20 minutes. The command is idempotent — re-running only fetches data newer than what is already in the database.

Verify

Open http://localhost:3000 in your browser. gordon-console should show the operator dashboard. If any service is unhealthy, check its logs:

bash
make dev-logs P=executor

Stop the stack

bash
make dev-down   # stop processes, preserve ./data/
make dev-reset  # stop AND wipe ./data/ (full reset — re-run dev-init after)

Connect to the dev database

bash
make dev-psql   # opens psql shell
sql
\dt             -- list tables
SELECT count(*) FROM market_data.spot_klines;
\q

Next step

With the stack running and data seeded, you are ready to run your first backtest.

Gordon — keep compounding without blowing up