Skip to main content
For local development, you run the app code directly with pnpm. Redis is the only service that runs in Docker.

Prerequisites

Step 1: Clone and install

git clone https://github.com/NousC/nous.git
cd nous
pnpm install

Step 2: Configure environment

cp .env.example .env
Fill in .env:
# Supabase — Settings → API
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_ANON_KEY=your-anon-key
SUPABASE_SERVICE_ROLE_KEY=your-service-role-key
VITE_SUPABASE_URL=https://your-project.supabase.co
VITE_SUPABASE_ANON_KEY=your-anon-key

# Anthropic
ANTHROPIC_API_KEY=sk-ant-...

# Generate with: node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
ENCRYPTION_KEY=
API_SECRET=

Step 3: Run the database schema

Required on first setup. Open your Supabase project → SQL Editor → paste and run supabase/schema.sql.

Step 4: Start Redis

docker compose -f docker-compose.dev.yaml up -d
This starts only Redis on localhost:6379.

Step 5: Start the app

pnpm dev
Starts all services in parallel:
ServiceURL
APIhttp://localhost:3000
Frontendhttp://localhost:5173
MCP serverhttp://localhost:3001
Workerbackground, no HTTP port

Hot reload

All services support hot reload. Edit any file under apps/ and the relevant service restarts automatically.

Running individual services

pnpm dev:api        # API only
pnpm dev:frontend   # Frontend only
pnpm dev:worker     # Worker only
pnpm dev:mcp        # MCP server only

Stopping

# Ctrl+C to stop pnpm dev
docker compose -f docker-compose.dev.yaml down   # stop Redis