# M4 vs M5 Max Comparison ## Hardware | Spec | M4 (Mac Mini) | M5 (MacBook Pro) | |------|--------------|-------------------| | **Model** | Mac Mini (M4) | MacBook Pro (M5 Max) | | **Hostname** | `accusys-Mac-mini-M4-2.local` | `Accusyss-MacBook-Pro.local` | | **macOS** | 26.4.1 (Sequoia) | 26.4.1 (Sequoia) | | **RAM** | 16 GB | **48 GB** | | **CPU Cores** | 10 | **18** | | **Disk** | 2TB (est.) | **1.8TB (12GB used, 97% free)** | | **Network** | 192.168.110.210, 192.168.110.200 | 192.168.110.201, 192.168.31.182 | ## Installed Services | Service | M4 | M5 | |---------|-----|------| | **PostgreSQL** | 18.1 (Homebrew) | **18.3 (Source build)** | | **pgvector** | Homebrew | **0.8.2 (Source build)** | | **Redis** | 8.4.0 (Homebrew) | **7.4.3 (Source build)** | | **Qdrant** | Homebrew/pre-built | **1.17.1 (Source build, `cargo`)** | | **MongoDB** | Homebrew | 8.2.7 (Homebrew) | | **MariaDB** | ✗ via brew | **12.2.2 (Homebrew, for WordPress)** | | **PHP** | ✗ via brew | **8.5.5 (Homebrew, WordPress ext. ✅)** | | **SFTPGo** | Pre-built binary | **2.7.1 (Source build, patched dep)** | | **FFmpeg** | 8.1 (Homebrew) | **8.1.1 (Homebrew)** | | **OpenCode** | 1.14.39 | **1.14.39** | | **Gemma4 LLM** | ✗ (not enough RAM) | **31B Q5_K_M @ 8081** | ## Build Approach | Aspect | M4 | M5 | |--------|-----|-----| | **PostgreSQL** | `brew install postgresql@18` | `./configure && make && make install` | | **Redis** | `brew install redis` | `make && cp src/redis-server ~/redis/bin/` | | **Qdrant** | `brew install qdrant` | `cargo build --release --bin qdrant` (from GitHub) | | **SFTPGo** | `brew install sftpgo` | `git clone && go build` (patched `go-m1cpu`) | | **Philosophy** | Mixed (Homebrew + binary) | **Source-first** (GitHub source, checksums recorded) | ## Data Migration (M4 → M5) | Data | Size | Status | |------|------|--------| | **Database (dev schema)** | 837MB dump | ✅ Restored (16 tables) | | **Video file** | 2.2GB | ✅ Transferred | | **output_dev JSON** | 2.9GB (462 files) | ✅ Transferred | | **output JSON** | 65MB (2523 files) | ✅ Transferred | | **Configs** | small | ✅ Transferred | ## Database Row Counts (M5) | Table | Rows | |-------|------| | `pre_chunks` | 494,339 | | `face_detections` | 6,211 | | `tkg_nodes` | 2,414 | | `identity_bindings` | 2,347 | | `tkg_edges` | 1,320 | ## Key Differences ### 1. RAM (16GB vs 48GB) - **M4 (16GB)**: Cannot run Gemma4 31B LLM locally. Memory pressure during concurrent pipeline processing. - **M5 (48GB)**: Can run Gemma4 31B (Q5_K_M, ~20GB) + databases + playground simultaneously. ### 2. Build Philosophy - **M4**: Quick setup via Homebrew bottles (pre-compiled). - **M5**: **Source-first** — every service built from GitHub/official source. `SHA256` checksums recorded. Dependencies patched as needed (SFTPGo `go-m1cpu`). ### 3. Unique M5 Services - **MariaDB + PHP**: Installed for WordPress/marcom portal development. - **Gemma4 LLM**: Running on port 8081, accessible for RAG/identity clustering. - **OpenCode**: Configured with Gemma4 provider for AI-assisted development. ### 4. Data Freshness - M5 is a **snapshot** of M4's state at 2026-05-06 (commit `bac6c2d`). Changes made on M4 after sync date must be re-synced.