{
  "schema_version": 2,
  "id": "operate/oss_and_stack/install/build-stack/macos-13-14",
  "title": "Build and run Redis Open Source on macOS 14 (Sonoma), 15 (Sequoia), and 26 (Tahoe)",
  "url": "https://redis.io/docs/latest/operate/oss_and_stack/install/build-stack/macos-13-14/",
  "summary": "",
  "tags": [
    "docs",
    "operate",
    "stack",
    "oss"
  ],
  "last_updated": "2026-09-21T15:59:08+01:00",
  "page_type": "content",
  "content_hash": "975f605acbc480b40995b2e8ec29cf884e3f1c77813c61f4bcc126e63e4dc274",
  "sections": [
    {
      "id": "overview",
      "title": "Overview",
      "role": "overview",
      "text": "Follow the steps below to build and run Redis Open Source with all data structures from its source code on a system running macOS 14 (Sonoma), macOS 15 (Sequoia), or macOS 26 (Tahoe). These instructions apply to both Intel and Apple Silicon (ARM) Macs.\n\n> [!NOTE]\n> Three RediSearch-specific build constraints apply on macOS and are handled in the steps below:\n>\n> - The cross-language LTO that RediSearch enables by default requires Linux; its build script aborts on macOS with `Error: LTO is only supported on Linux`. Step 5 sets `LTO=0` to disable it.\n> - RediSearch's Rust workspace uses edition 2024 and features stabilized in Rust 1.94, so the Rust toolchain in step 3 is pinned to `1.94.0`. Older Rust fails with `feature edition2024 is required`.\n> - RediSearch's CMake build calls `libtool -static` (BSD libtool syntax). Step 6's `PATH` prepends `$HOMEBREW_PREFIX/opt/libtool/libexec/gnubin`, so Homebrew's GNU `libtool` is used for that step instead of macOS's `/usr/bin/libtool`."
    },
    {
      "id": "1-install-homebrew",
      "title": "1. Install homebrew",
      "role": "content",
      "text": "If Homebrew isn't already installed, follow the installation instructions on the [Homebrew home page](https://brew.sh)."
    },
    {
      "id": "2-install-required-packages",
      "title": "2. Install required packages",
      "role": "content",
      "text": "[code example]"
    },
    {
      "id": "3-install-rust",
      "title": "3. Install Rust",
      "role": "content",
      "text": "Rust is required to build the JSON package.\n\n[code example]"
    },
    {
      "id": "4-download-and-extract-the-redis-source",
      "title": "4. Download and extract the Redis source",
      "role": "content",
      "text": "The Redis source code is available from [the Redis GitHub site](https://github.com/redis/redis/releases). Select the release you want to build and then select the .tar.gz file from the **Assets** drop down menu. You can verify the integrity of these downloads by checking them against the digests in the [redis-hashes GitHub repository](https://github.com/redis/redis-hashes).\n\nCreate a directory for the src, for example `~/src`.\n\n[code example]\n\nCopy the tar(1) file to `~/src`.\n\nAlternatively, you can download the file directly using the `wget` command, as shown below.\n\n[code example]\n\nReplace `<version>` with the three-digit Redis release number, for example `8.0.0`.\n\nExtract the source:\n\n[code example]"
    },
    {
      "id": "5-build-redis",
      "title": "5. Build Redis",
      "role": "content",
      "text": "[code example]"
    },
    {
      "id": "6-optional-verify-the-installation",
      "title": "6. (Optional) Verify the installation",
      "role": "content",
      "text": "Check the installed Redis server and CLI versions:\n\n[code example]"
    },
    {
      "id": "7-start-redis",
      "title": "7. Start Redis",
      "role": "content",
      "text": "To start Redis, use the following command:\n\n[code example]\n\n> [!NOTE]\n> Before Redis 8.10, specify `redis-full.conf` instead of `redis.conf`.\n\nTo validate that the available modules have been installed, run the [`INFO`](https://redis.io/docs/latest/commands/info) command and look for lines similar to the following:\n\n[code example]"
    }
  ],
  "examples": [
    {
      "id": "2-install-required-packages-ex0",
      "language": "bash",
      "code": "export HOMEBREW_NO_AUTO_UPDATE=1\nbrew update\nbrew install coreutils\nbrew install make\nbrew install openssl\nbrew install llvm@18\nbrew install cmake\nbrew install gnu-sed\nbrew install automake\nbrew install libtool\nbrew install wget",
      "section_id": "2-install-required-packages"
    },
    {
      "id": "3-install-rust-ex0",
      "language": "bash",
      "code": "RUST_INSTALLER=rust-1.94.0-$(if [ \"$(uname -m)\" = \"arm64\" ]; then echo \"aarch64\"; else echo \"x86_64\"; fi)-apple-darwin\nwget --quiet -O ${RUST_INSTALLER}.tar.xz https://static.rust-lang.org/dist/${RUST_INSTALLER}.tar.xz\ntar -xf ${RUST_INSTALLER}.tar.xz\n(cd ${RUST_INSTALLER} && sudo ./install.sh)",
      "section_id": "3-install-rust"
    },
    {
      "id": "4-download-and-extract-the-redis-source-ex0",
      "language": "bash",
      "code": "mkdir ~/src",
      "section_id": "4-download-and-extract-the-redis-source"
    },
    {
      "id": "4-download-and-extract-the-redis-source-ex1",
      "language": "bash",
      "code": "cd ~/src\nwget -O redis-<version>.tar.gz https://github.com/redis/redis/archive/refs/tags/<version>.tar.gz",
      "section_id": "4-download-and-extract-the-redis-source"
    },
    {
      "id": "4-download-and-extract-the-redis-source-ex2",
      "language": "bash",
      "code": "cd ~/src\ntar xvf redis-<version>.tar.gz\nrm redis-<version>.tar.gz",
      "section_id": "4-download-and-extract-the-redis-source"
    },
    {
      "id": "5-build-redis-ex0",
      "language": "bash",
      "code": "cd ~/src/redis-<version>\nexport HOMEBREW_PREFIX=\"$(brew --prefix)\"\nexport BUILD_WITH_MODULES=yes\nexport BUILD_TLS=yes\nexport LTO=0\nPATH=\"$HOMEBREW_PREFIX/opt/libtool/libexec/gnubin:$HOMEBREW_PREFIX/opt/llvm@18/bin:$HOMEBREW_PREFIX/opt/make/libexec/gnubin:$HOMEBREW_PREFIX/opt/gnu-sed/libexec/gnubin:$HOMEBREW_PREFIX/opt/coreutils/libexec/gnubin:$PATH\"\nexport LDFLAGS=\"-L$HOMEBREW_PREFIX/opt/llvm@18/lib\"\nexport CPPFLAGS=\"-I$HOMEBREW_PREFIX/opt/llvm@18/include\"\nmkdir -p build_dir/etc\nmake -C redis-8.0 -j \"$(nproc)\" all OS=macos\nmake -C redis-8.0 install PREFIX=$(pwd)/build_dir OS=macos",
      "section_id": "5-build-redis"
    },
    {
      "id": "6-optional-verify-the-installation-ex0",
      "language": "bash",
      "code": "cd ~/src/redis-<version>\nbuild_dir/bin/redis-server --version\nbuild_dir/bin/redis-cli --version",
      "section_id": "6-optional-verify-the-installation"
    },
    {
      "id": "7-start-redis-ex0",
      "language": "bash",
      "code": "cd ~/src/redis-<version>\nexport LC_ALL=en_US.UTF-8\nexport LANG=en_US.UTF-8\nbuild_dir/bin/redis-server redis.conf",
      "section_id": "7-start-redis"
    },
    {
      "id": "7-start-redis-ex1",
      "language": "bash",
      "code": "build_dir/bin/redis-cli INFO\n...\n# Modules\nmodule:name=ReJSON,ver=20803,api=1,filters=0,usedby=[search],using=[],options=[handle-io-errors]\nmodule:name=search,ver=21005,api=1,filters=0,usedby=[],using=[ReJSON],options=[handle-io-errors]\nmodule:name=bf,ver=20802,api=1,filters=0,usedby=[],using=[],options=[]\nmodule:name=timeseries,ver=11202,api=1,filters=0,usedby=[],using=[],options=[handle-io-errors]\nmodule:name=RedisCompat,ver=1,api=1,filters=0,usedby=[],using=[],options=[]\nmodule:name=vectorset,ver=1,api=1,filters=0,usedby=[],using=[],options=[]\n...",
      "section_id": "7-start-redis"
    }
  ]
}
