RSSMonster macOS Installation
This guide describes how to install RSSMonster locally on macOS for development.
It assumes a fresh Mac and installs:
- Apple Command Line Tools
- Homebrew
- Git
- Node.js 24
- npm
- MySQL 8.4
- RSSMonster client dependencies
- RSSMonster server dependencies
- Local MySQL database and user
The instructions below are primarily written for Apple Silicon Macs.
1. Install Apple Command Line Tools
Open Terminal and run:
xcode-select --install
Follow the installation dialog.
You can verify the installation with:
xcode-select -p
2. Install Homebrew
Install Homebrew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
On Apple Silicon, add Homebrew to your shell environment:
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
Verify the installation:
brew --version
brew doctor
3. Install Git
Install Git through Homebrew:
brew install git
Verify:
git --version
Optionally configure your Git identity:
git config --global user.name "Your Name"
git config --global user.email "your-email@example.com"
4. Install Node.js 24
RSSMonster uses Node.js 24.
Install the versioned Homebrew package:
brew install node@24
Add it to your shell path:
echo 'export PATH="/opt/homebrew/opt/node@24/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
Verify Node.js and npm:
node --version
npm --version
For this guide, verify that Node.js reports v24.x.x.
npm is included with Node.js and does not need to be installed separately.
5. Install MySQL 8.4
Install MySQL 8.4:
brew install mysql@8.4
Add MySQL to your shell path:
echo 'export PATH="/opt/homebrew/opt/mysql@8.4/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
Start MySQL:
brew services start mysql@8.4
Verify:
mysql --version
brew services list
6. Secure MySQL
Run:
mysql_secure_installation
For a local development environment, reasonable choices are:
- Set a root password
- Remove anonymous users
- Disable remote root login
- Remove the test database
- Reload privilege tables
Afterwards, log in as root:
mysql -u root -p
7. Create the RSSMonster Database
From the MySQL prompt, create the RSSMonster database:
CREATE DATABASE rssmonster;
Create a local RSSMonster database user:
CREATE USER 'rssmonster'@'localhost'
IDENTIFIED BY 'rssmonster';
Grant access:
GRANT ALL PRIVILEGES ON rssmonster.*
TO 'rssmonster'@'localhost'
WITH GRANT OPTION;
Reload privileges:
FLUSH PRIVILEGES;
Exit MySQL:
exit;
Verify that the RSSMonster user can connect:
mysql -u rssmonster -p -h localhost rssmonster
Enter the password:
rssmonster
You should now enter the MySQL prompt successfully.
The password
rssmonsteris convenient for a local development environment. Use a stronger password for any non-local or production installation.
8. Clone RSSMonster
Choose a directory for your projects:
mkdir -p ~/Projects
cd ~/Projects
Clone RSSMonster:
git clone https://github.com/pietheinstrengholt/rssmonster.git
cd rssmonster
Verify the repository:
git status
git remote -v
9. Install Client Dependencies
Enter the client directory:
cd client
Install dependencies:
npm install
Alternatively, when the existing package-lock.json should be followed exactly:
npm ci
Create the local client environment configuration:
cp .env.example .env
Return to the repository root:
cd ..
10. Install Server Dependencies
Enter the server directory:
cd server
Install dependencies:
npm install
Or:
npm ci
Create the server environment configuration:
cp .env.example .env
11. Configure the Server Environment
Open:
server/.env
For a standard local MySQL installation, configure:
NODE_ENV=development
DB_HOSTNAME=localhost
DB_PORT=3306
DB_DATABASE=rssmonster
DB_USERNAME=rssmonster
DB_PASSWORD=rssmonster
FEED_MAX_COUNT=100
CRAWL_RUN_HEARTBEAT_INTERVAL_MS=30000
CRAWL_RUN_STALE_AFTER_MS=120000
JWT_EXPIRES_IN=604800
JWT_SECRET=replace-with-a-long-random-secret
FEVER_CREDENTIAL_SECRET=replace-with-a-different-long-random-secret
API_RATE_LIMIT_WINDOW_MS=900000
API_RATE_LIMIT_MAX=600
MCP_RATE_LIMIT_WINDOW_MS=900000
MCP_RATE_LIMIT_MAX=100
INFERENCE_AI_ENABLED=true
INFERENCE_ASSISTANT_ENABLED=true
INFERENCE_AGENT_TIMEOUT_MS=300000
ENABLE_HTTPS=false
EVENT_RECLUSTER_DEBUG=false
# Space-separated host[:port] or CIDR exceptions for trusted internal feeds.
RSSMONSTER_INTERNAL_HOST_ALLOWLIST=
The important MySQL settings are:
DB_HOSTNAME=localhost
DB_PORT=3306
DB_DATABASE=rssmonster
DB_USERNAME=rssmonster
DB_PASSWORD=rssmonster
Make sure these values match the database and MySQL account created earlier.
Install and configure the separate inference service from the repository root:
cd ../inference
npm install
cp .env.example .env
For chat, put ASSISTANT_API_KEY, ASSISTANT_BASE_URL, ASSISTANT_PROVIDER=openai-compatible, and ASSISTANT_MODEL in inference/.env. Provider credentials never belong in server/.env. Then return with cd ../server before running the database commands below.
12. Test the Database Connection
Before running migrations, test MySQL directly:
mysql -u rssmonster -p -h localhost rssmonster
If this works, the database, username, password, and hostname are valid.
Exit MySQL again:
exit;
13. Run the Database Migrations
From the server directory:
npm run db
This runs the Sequelize migrations:
npm run db
A successful migration should show Sequelize applying the RSSMonster database migrations without authentication errors.
If you receive:
Access denied for user 'rssmonster'@'localhost'
first verify that this command works:
mysql -u rssmonster -p -h localhost rssmonster
Then check that server/.env contains the same credentials:
DB_HOSTNAME=localhost
DB_DATABASE=rssmonster
DB_USERNAME=rssmonster
DB_PASSWORD=rssmonster
14. Start the Inference Service
Open a Terminal window and start inference from the repository:
cd ~/Projects/rssmonster/inference
npm run dev
Wait until the service reports that configured on-device models are loaded and that it is listening on http://127.0.0.1:3001. Keep this process running before starting a crawl or using AI-backed features.
15. Start the RSSMonster Server
From:
cd server
Check the available npm commands:
npm run
Start the development server using the appropriate development script defined in server/package.json.
For example:
npm run dev
16. Start the RSSMonster Client
Open another Terminal window:
cd ~/Projects/rssmonster/client
Start the Vue development server:
npm run dev
Vite will print the local URL to open in your browser.
Typically this resembles:
http://localhost:8080
17. Useful MySQL Commands
Start MySQL:
brew services start mysql@8.4
Stop MySQL:
brew services stop mysql@8.4
Restart MySQL:
brew services restart mysql@8.4
Check its status:
brew services list
Log into the RSSMonster database:
mysql -u rssmonster -p -h localhost rssmonster
Log into MySQL as root:
mysql -u root -p
Check whether MySQL is listening on port 3306:
lsof -nP -iTCP:3306 -sTCP:LISTEN
18. Useful Version Checks
Check the complete local development environment:
node --version
npm --version
mysql --version
git --version
brew --version
RSSMonster development should use Node.js 24.
Intel Macs
The instructions above assume Apple Silicon and therefore use:
/opt/homebrew
On an Intel Mac, Homebrew normally uses:
/usr/local
For example, the Node.js path becomes:
echo 'export PATH="/usr/local/opt/node@24/bin:$PATH"' >> ~/.zshrc
And MySQL:
echo 'export PATH="/usr/local/opt/mysql@8.4/bin:$PATH"' >> ~/.zshrc
Quick Installation Summary
For a fresh Apple Silicon Mac, the main installation commands are:
xcode-select --install
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
brew update
brew install git node@24 mysql@8.4
echo 'export PATH="/opt/homebrew/opt/node@24/bin:$PATH"' >> ~/.zshrc
echo 'export PATH="/opt/homebrew/opt/mysql@8.4/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
brew services start mysql@8.4
node --version
npm --version
mysql --version
git --version
Then clone RSSMonster, install the client, server, and inference dependencies, create all three .env files, create the MySQL database, and run:
cd server
npm run db
After the migrations complete successfully, RSSMonster is ready to run locally.