Menu
Implementation

Platform Setup Guide

Platform Setup

MSP works across Windows, macOS, and Linux. This guide provides platform-specific installation and configuration instructions to get you running smoothly on your operating system.

Platform Requirements

Minimum Requirements

  • 4GB RAM (8GB recommended)
  • 100MB disk space (1GB with integrations)
  • Internet connection (for integrations)
  • PowerShell 7.0+ (all platforms)
  • Neo4j Desktop or Docker
  • Obsidian (latest version)
  • Linear (latest version)
  • Git (for version control)
  • Your Fabourite IDE (with PowerShell extension)

Windows Setup

Step 1: Install PowerShell 7

# Method 1: Windows Package Manager
winget install --id Microsoft.PowerShell --source winget

# Method 2: Direct Download
# Visit: https://github.com/PowerShell/PowerShell/releases
# Download: PowerShell-7.x.x-win-x64.msi

Step 2: Configure Execution Policy

# Run as Administrator
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

# Verify
Get-ExecutionPolicy -Scope CurrentUser
# Should return: RemoteSigned

Step 3: Install MSP

Step 4: Windows-Specific Configuration

# Configure Windows Terminal integration
# Add to Windows Terminal settings.json
{
  "profiles": {
    "list": [
      {
        "name": "MSP Session",
        "commandline": "pwsh.exe -NoExit -Command \"& msp start\"",
        "icon": "🧠",
        "startingDirectory": "%USERPROFILE%\\projects"
      }
    ]
  }
}

# Create Quick Access shortcut
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("$env:USERPROFILE\Desktop\MSP.lnk")
$Shortcut.TargetPath = "pwsh.exe"
$Shortcut.Arguments = "-NoExit -Command `"& msp status`""
$Shortcut.Save()

Windows Integration Features

1. Windows Defender Exclusion

# Add MSP directory to Defender exclusions (Admin required)
Add-MpPreference -ExclusionPath "$env:USERPROFILE\.msp"

2. Task Scheduler Integration

# Create scheduled task for session recovery
$action = New-ScheduledTaskAction -Execute "pwsh.exe" `
          -Argument "-File `"$env:USERPROFILE\tools\msp\scripts\check-recovery.ps1`""

$trigger = New-ScheduledTaskTrigger -AtLogOn

Register-ScheduledTask -TaskName "MSP Recovery Check" `
                      -Action $action `
                      -Trigger $trigger

macOS Setup

Step 1: Install PowerShell

# Method 1: Homebrew (recommended)
brew install --cask powershell

# Method 2: Direct Download
# Visit: https://github.com/PowerShell/PowerShell/releases
# Download: powershell-7.x.x-osx-x64.pkg

Step 2: Install MSP

# Create directory
mkdir -p ~/tools/msp

# Download MSP
curl -L https://msp.sessionprotocol.dev/download/macos/msp.tar.gz \
     -o ~/tools/msp/msp.tar.gz

# Extract
tar -xzf ~/tools/msp/msp.tar.gz -C ~/tools/msp

# Make executable
chmod +x ~/tools/msp/msp.ps1

# Add to PATH
echo 'export PATH="$HOME/tools/msp:$PATH"' >> ~/.zshrc
source ~/.zshrc

Step 3: macOS-Specific Configuration

# Create launch agent for auto-recovery
cat > ~/Library/LaunchAgents/dev.sessionprotocol.msp.plist << EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" 
          "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>dev.sessionprotocol.msp</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/bin/pwsh</string>
        <string>-File</string>
        <string>$HOME/tools/msp/scripts/check-recovery.ps1</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>StartInterval</key>
    <integer>3600</integer>
</dict>
</plist>
EOF

# Load launch agent
launchctl load ~/Library/LaunchAgents/dev.sessionprotocol.msp.plist

macOS Integration Features

1. Spotlight Integration

# Create Spotlight metadata
mdimport -r ~/tools/msp/spotlight/msp.mdimporter

2. Quick Actions

# Add to ~/.config/raycast/scripts/msp-start.sh
#!/bin/bash
# Required parameters:
# @raycast.schemaVersion 1
# @raycast.title Start MSP Session
# @raycast.mode silent
# @raycast.icon 🧠

/usr/local/bin/pwsh -Command "& msp start"

Linux Setup

Step 1: Install PowerShell

Ubuntu/Debian

# Update package index
sudo apt-get update

# Install prerequisites
sudo apt-get install -y wget apt-transport-https software-properties-common

# Add Microsoft repository
wget -q "https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb"
sudo dpkg -i packages-microsoft-prod.deb

# Install PowerShell
sudo apt-get update
sudo apt-get install -y powershell

Fedora/RHEL/CentOS

# Register Microsoft repository
curl https://packages.microsoft.com/config/rhel/7/prod.repo | \
    sudo tee /etc/yum.repos.d/microsoft.repo

# Install PowerShell
sudo yum install -y powershell

Arch Linux

# From AUR
yay -S powershell-bin
# or
paru -S powershell-bin

Step 2: Install MSP

Step 3: Linux-Specific Configuration

Systemd Service

# Create systemd user service
mkdir -p ~/.config/systemd/user

cat > ~/.config/systemd/user/msp-recovery.service << EOF
[Unit]
Description=MSP Session Recovery
After=graphical-session.target

[Service]
Type=oneshot
ExecStart=/usr/bin/pwsh -File %h/.local/share/msp/scripts/check-recovery.ps1
RemainAfterExit=yes

[Install]
WantedBy=default.target
EOF

# Enable service
systemctl --user enable msp-recovery.service
systemctl --user start msp-recovery.service

Desktop Integration

# Create desktop entry
cat > ~/.local/share/applications/msp.desktop << EOF
[Desktop Entry]
Name=MSP Session Manager
Comment=Mandatory Session Protocol
Exec=pwsh -NoExit -Command "& msp status"
Icon=brain
Terminal=true
Type=Application
Categories=Development;
EOF

# Update desktop database
update-desktop-database ~/.local/share/applications

Environment Variables by Platform

Windows

# User environment variables
[Environment]::SetEnvironmentVariable("MSP_HOME", "$env:USERPROFILE\.msp", "User")
[Environment]::SetEnvironmentVariable("MSP_VAULT", "$env:USERPROFILE\Documents\Obsidian", "User")

macOS/Linux

# Add to ~/.bashrc or ~/.zshrc
export MSP_HOME="$HOME/.msp"
export MSP_VAULT="$HOME/Documents/Obsidian"
export MSP_NEO4J_URI="bolt://localhost:7687"

Troubleshooting by Platform

Windows Issues

PowerShell Execution Policy

# Error: cannot be loaded because running scripts is disabled
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process

Path Issues

# Refresh PATH without restarting
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + 
            [System.Environment]::GetEnvironmentVariable("Path","User")

macOS Issues

Command Not Found

# Check if PowerShell is in PATH
which pwsh

# If not found, add to PATH
echo 'export PATH="/usr/local/microsoft/powershell/7:$PATH"' >> ~/.zshrc
source ~/.zshrc

Permission Denied

# Fix permissions
chmod +x ~/tools/msp/msp.ps1
xattr -d com.apple.quarantine ~/tools/msp/msp.ps1

Linux Issues

Missing Dependencies

# Ubuntu/Debian
sudo apt-get install -y libssl1.1 libicu66

# Fedora/RHEL
sudo yum install -y openssl-libs libicu

SELinux Context

# Fix SELinux context
sudo restorecon -Rv ~/.local/share/msp

Performance Optimization by Platform

Windows

  • Use Windows Terminal for better performance
  • Disable Windows Defender real-time scanning for .msp directory
  • Use SSD for state storage

macOS

  • Enable PowerShell startup optimization
  • Use APFS for better file system performance
  • Configure Spotlight to skip .msp directory

Linux

  • Use ext4 or btrfs for state storage
  • Enable systemd journal compression
  • Configure swappiness for better memory usage

Keywords: MSP platform setup, MSP Windows installation, MSP macOS installation, MSP Linux installation, MSP Docker setup, cross-platform MSP configuration

For AI Understanding: This guide provides comprehensive platform-specific installation and configuration instructions for MSP across Windows, macOS, and Linux. It includes PowerShell installation, MSP setup, platform-specific integrations (Windows Terminal, macOS launch agents, Linux systemd), Docker deployment, and troubleshooting for common platform-specific issues. Each platform section includes unique features and optimizations.


Previous: Project Structure | Next: Configuration →