Skip to main content

Development Setup

Prerequisites

ToolVersionNotes
Rust1.88+Pinned via rust-toolchain in the repo root
Node.js20+For the dashboard frontend
pnpmlatestDashboard package manager
protobuf-compilerRequired by Raft transport build steps
cmakeRequired by some native dependencies
libclang-devRequired by bindgen on Linux

macOS

brew install protobuf cmake node
npm i -g pnpm
rustup install 1.88.0

Ubuntu / Debian

sudo apt install -y protobuf-compiler cmake libclang-dev
npm i -g pnpm
rustup install 1.88.0

Clone and build

git clone https://github.com/ai-akashic/Memorose.git
cd Memorose
cargo build
The workspace contains four crates: memorose-common, memorose-core, memorose-server, and memorose-gateway. For the dashboard frontend:
cd dashboard
pnpm install
pnpm build

Configuration

Copy the example environment file:
cp .env.example .env
At minimum, set one provider key and model names:
GOOGLE_API_KEY=your_key_here
LLM_MODEL=gemini-2.0-flash
EMBEDDING_MODEL=text-embedding-004
If you want to force the provider via env, prefer:
MEMOROSE__LLM__PROVIDER=Gemini
Or:
MEMOROSE__LLM__PROVIDER=OpenAI
OPENAI_API_KEY=your_key_here
Create config.toml manually using the current schema in crates/memorose-common/src/config.rs. Do not rely on config.example.toml as a fully current template.

Running locally

Standalone mode

The fastest way to get one local node running:
./scripts/start_cluster.sh start --mode standalone
This starts one API node on port 3000 and the dashboard on 3100.

Local cluster mode

To simulate a 3-node local Raft cluster:
./scripts/start_cluster.sh start --clean --build

Other helper commands

./scripts/start_cluster.sh status
./scripts/start_cluster.sh stop
./scripts/start_cluster.sh restart --clean

Dashboard dev server

For frontend development with hot reload:
cd dashboard
pnpm dev

Ports

ServicePortNotes
API (node 1)3000Primary local node
API (node 2)3001Local cluster mode only
API (node 3)3002Local cluster mode only
Gateway8080docker-compose.yml only
Dashboard3100Next.js frontend
Raft5001–5003Internal consensus traffic

Docker

A docker-compose.yml is provided:
docker compose up
This starts the gateway, two server nodes, and the dashboard.
When running the dashboard in Docker, set DASHBOARD_API_ORIGIN to the backend container URL, for example http://memorose-node-0:3000. Otherwise the dashboard will try to call 127.0.0.1:3000 inside its own container and fail.