Skip to main content
CORE runs as a set of Docker containers: the web app, PostgreSQL, Neo4j (memory graph), and Redis. You manage the infrastructure; your data never leaves your machine. Requirements: Docker 20.10+, Docker Compose 2.20+, 4 vCPU / 8 GB RAM / 20 GB storage

Option A: One-click on Railway

Deploy on Railway Railway sets up all services automatically. Skip to Connect a channel once deployed.

Option B: Docker (manual)

1

Clone and configure

git clone https://github.com/RedPlanetHQ/core.git
cd core/hosting/docker
cp .env.example .env
Open .env and fill in the required values:
# Generate all four secrets with: openssl rand -hex 16
SESSION_SECRET=
MAGIC_LINK_SECRET=
ENCRYPTION_KEY=
NEO4J_PASSWORD=                        # also update NEO4J_AUTH below
NEO4J_AUTH=neo4j/<your-neo4j-password>

# Pick one AI provider
ANTHROPIC_API_KEY=sk-ant-...
# OPENAI_API_KEY=sk-...
# GOOGLE_GENERATIVE_AI_API_KEY=...

# Set CHAT_PROVIDER to match (default is openai)
CHAT_PROVIDER=anthropic
MODEL=claude-sonnet-4-5

# Only needed if deploying publicly (not localhost)
# APP_ORIGIN=https://your-domain.com
# LOGIN_ORIGIN=https://your-domain.com
Everything else in .env has working defaults for a local Docker deployment.
2

Start CORE

docker compose up -d
Wait ~30 seconds for all services to initialise.Verify: Open http://localhost:3033: you should see the CORE login screen. If it doesn’t load, check logs with docker compose logs -f webapp.
3

Create your account

Sign in with your email. CORE sends a magic link: check your terminal logs if you haven’t configured an email provider yet:
docker compose logs webapp | grep "magic link"
Copy the link from the logs and open it in your browser.
4

Connect a channel

A channel is how you message your butler. Email is the easiest to start with: it requires a Resend account and a verified domain.Set up Email with Resend
ChannelEffortGuide
Email (Resend)LowSetup guide
SlackMediumSetup guide
WhatsAppMediumRequires Twilio: TWILIO_ACCOUNT_SID, TWILIO_AUTH_TOKEN, TWILIO_WHATSAPP_NUMBER
TelegramCommunitySetup guide
Once a channel is connected, send your first message: your butler will respond.

Next steps

Environment Variables

Full reference for all configuration options.

Embedding Models

Configure OpenAI, Google, or local Ollama embeddings.

Remote Sessions

Trigger Claude Code sessions from WhatsApp or Slack.

Need help? Join #self-hosting on Discord.