Fix OpenClaw Installation Errors on Mac/Linux
Fix OpenClaw Installation Errors on Mac/Linux

If you've ever stared at a terminal full of red text after running pip install openclaw, you're not alone. Installation errors on Mac and Linux are the single most common reason people give up on OpenClaw before they ever build their first agent. That's a shame, because 95% of these errors have straightforward fixes ā you just need to know where to look.
I've helped dozens of people debug their OpenClaw setups at this point, and the problems fall into a handful of predictable categories. This post is the guide I wish existed when I was getting started. We'll walk through every common installation error, explain what's actually going wrong, and give you the exact commands to fix it.
Let's get you unstuck.
Before You Touch Anything: Run the Doctor
OpenClaw ships with a built-in diagnostic command that catches most problems before they ruin your afternoon. If you can get far enough to have openclaw accessible on your command line, always start here:
openclaw doctor
You'll get output like this:
Checking your environment...
ā
Python version (3.11.4)
ā
OpenClaw installation (v0.3.2)
ā
Dependencies resolved
ā API Key not configured
ā Network connectivity (timeout reaching api.anthropic.com)
Each red X tells you exactly what's wrong and how to fix it. If you can't even get to this point ā if openclaw isn't recognized as a command ā keep reading. We'll start from the very beginning.
Error #1: Python Version Mismatch
What you see:
ERROR: Package 'openclaw' requires a different Python: 3.7.9 not in '>=3.9'
Or sometimes the subtler version:
ImportError: cannot import name 'Callable' from 'typing'
What's actually happening:
OpenClaw requires Python 3.9 or later. It's tested against 3.9, 3.10, 3.11, and 3.12 in CI. If you're on 3.7 or 3.8, it simply won't work ā and on Mac especially, the system Python is often ancient.
The fix:
First, check what you're actually running:
python3 --version
If it's below 3.9, you need to upgrade. On Mac, the cleanest approach is using pyenv:
brew install pyenv
pyenv install 3.11.7
pyenv global 3.11.7
On Linux (Ubuntu/Debian):
sudo apt update
sudo apt install python3.11 python3.11-venv python3.11-dev
After installing, always use a virtual environment for OpenClaw. This is non-negotiable ā it prevents every dependency conflict you're about to read about:
python3.11 -m venv openclaw-env
source openclaw-env/bin/activate
pip install openclaw
That source openclaw-env/bin/activate line is doing the heavy lifting. If you close your terminal and come back later wondering why openclaw isn't found, it's because you forgot to reactivate the environment. Every time. Every single time.
Error #2: Dependency Resolution Failures
What you see:
ERROR: Cannot install openclaw because these package versions have conflicting dependencies.
Or pip just hangs for ten minutes and eventually times out.
What's actually happening:
This almost always means you have other packages installed globally (or in the same environment) that pin conflicting versions of shared dependencies. The most common culprit is Pydantic ā some packages require v1, others require v2, and pip can't find a version that satisfies everyone.
OpenClaw actually handles this well internally (it includes compatibility shims for both Pydantic v1 and v2), but if another package in your environment is demanding an incompatible version, pip chokes before OpenClaw even gets a chance to be clever about it.
The fix:
Clean virtual environment. Seriously. That's the answer to 80% of dependency issues:
deactivate # if you're in an existing venv
python3 -m venv fresh-openclaw-env
source fresh-openclaw-env/bin/activate
pip install --upgrade pip
pip install openclaw
If you absolutely must coexist with other packages, use OpenClaw's lock file for deterministic installs:
pip install openclaw
pip install -r $(python -c "import openclaw; print(openclaw.__path__[0])")/requirements-lock.txt
This ensures you get the exact dependency versions that OpenClaw's CI has tested against. No surprises.
For people running multiple AI projects with different dependency trees ā and I know there are a lot of you ā the real solution is one virtual environment per project. It takes 30 seconds to create and saves hours of debugging. There is no shortcut here that doesn't eventually bite you.
Error #3: Missing System Libraries on Linux
What you see:
fatal error: Python.h: No such file or directory
Or:
error: command 'gcc' failed: No such file or directory
Or any compilation error with mentions of .c files and build failures.
What's actually happening:
Some optional OpenClaw dependencies (particularly those related to performance-optimized tool execution) include C extensions. On Linux, pip tries to compile them from source if pre-built wheels aren't available for your exact platform. This requires development headers and a C compiler that many Linux installations don't include by default.
The fix:
On Ubuntu/Debian:
sudo apt update
sudo apt install python3-dev build-essential libffi-dev libssl-dev
On Fedora/RHEL:
sudo dnf install python3-devel gcc gcc-c++ libffi-devel openssl-devel
On Arch:
sudo pacman -S base-devel python
After installing system dependencies, retry the pip install:
pip install openclaw
Here's the good news: OpenClaw's core is pure Python. If you're still hitting build issues with optional dependencies and just want to get started, you can install the minimal version:
pip install openclaw --no-deps
pip install -r <(curl -s https://raw.githubusercontent.com/openclaw/openclaw/main/requirements-minimal.txt)
This gives you a fully functional OpenClaw without any compiled extensions. You lose some performance optimizations, but everything works. OpenClaw gracefully falls back to pure Python implementations when the compiled versions aren't available.
Error #4: Permission Denied Errors
What you see:
ERROR: Could not install packages due to an OSError: [Errno 13] Permission denied
What's actually happening:
You're trying to install into the system Python directory without admin privileges. This is common on Mac where people run pip install without a virtual environment.
The fix:
Do not use sudo pip install. That path leads to broken system Python installations and pain.
Instead, use a virtual environment (sensing a theme here?):
python3 -m venv ~/openclaw-env
source ~/openclaw-env/bin/activate
pip install openclaw
Or, if you insist on a user-level install without a venv:
pip install --user openclaw
But really, use the virtual environment. I'll keep saying it until it sticks.
Error #5: API Key Configuration Failures
What you see:
ā API Key Error
The ANTHROPIC_API_KEY environment variable is not set.
Or sometimes the more frustrating:
Error: 401 Unauthorized
What's actually happening:
OpenClaw validates API keys at startup rather than failing cryptically ten minutes into your first agent run. This is by design ā fail fast, fail clearly. But it means you need your keys configured before anything will execute.
The fix:
The fastest approach is OpenClaw's interactive setup:
openclaw init
⨠Welcome to OpenClaw!
I'll help you set up your environment.
[1/3] Which LLM provider? (Anthropic/OpenAI/Local)
> Anthropic
[2/3] Paste your Anthropic API key:
> sk-ant-***
[3/3] Enable web search? (y/n)
> n
ā
Created .env and openclaw.yaml
Ready to go! Try: openclaw run examples/basic_agent.py
This creates a .env file in your project directory with the proper formatting. If you'd rather do it manually:
echo 'ANTHROPIC_API_KEY=sk-ant-your-key-here' > .env
Or export directly in your shell:
export ANTHROPIC_API_KEY=sk-ant-your-key-here
Pro tip: If you're getting 401 Unauthorized but your key looks correct, check for trailing whitespace. Copy-pasting from some interfaces adds invisible characters. Try:
echo -n "sk-ant-your-key-here" | cat -v
If you see ^M at the end, that's a carriage return sneaking in. Strip it in your .env file.
Error #6: "Command Not Found" After Successful Install
What you see:
$ openclaw doctor
bash: openclaw: command not found
But pip install openclaw said it succeeded.
What's actually happening:
The openclaw CLI binary was installed somewhere that isn't in your PATH. This is especially common on Mac when using Homebrew Python or when pip's script directory differs from what your shell expects.
The fix:
First, find where it was installed:
pip show openclaw | grep Location
python3 -m site --user-base
Then check if pip's script directory is in your PATH:
# On Mac (typical Homebrew location)
echo $PATH | tr ':' '\n' | grep -i python
# The scripts usually land in:
# ~/Library/Python/3.11/bin/
# or inside your venv's bin/ directory
If you're in a virtual environment (you should be), the fix is usually just making sure you've activated it:
source openclaw-env/bin/activate
which openclaw # Should now show a path inside your venv
If you're not using a venv, add pip's script directory to your PATH. For Mac with Homebrew:
echo 'export PATH="$HOME/Library/Python/3.11/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
For Linux:
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
Error #7: SSL Certificate Errors
What you see:
SSL: CERTIFICATE_VERIFY_FAILED
What's actually happening:
This is almost exclusively a Mac problem. Python installed from python.org on Mac doesn't include SSL certificates by default, and the installer includes a script to install them that many people never run.
The fix:
If you installed Python from the official installer:
/Applications/Python\ 3.11/Install\ Certificates.command
If you're using Homebrew Python, this typically isn't an issue, but you can force-update certificates:
pip install --upgrade certifi
The Nuclear Option: Docker
If you've been fighting environment issues for more than 30 minutes, stop. Use Docker. OpenClaw provides official containers that eliminate every single problem described above:
docker pull openclaw/openclaw:latest
docker run -it -e ANTHROPIC_API_KEY=sk-ant-your-key openclaw/openclaw:latest
That's it. No Python version issues. No dependency conflicts. No missing system libraries. No permission problems. It just works.
For ongoing development, mount your local directory:
docker run -it \
-v $(pwd):/workspace \
-e ANTHROPIC_API_KEY=sk-ant-your-key \
openclaw/openclaw:latest
Now you edit files locally and run them inside the container. Best of both worlds.
The Decision Tree for Installation Method
I get asked "should I use pip, Docker, or clone from source?" constantly. Here's how to decide:
Use pip install openclaw if:
- You're building applications with OpenClaw
- You want stable, tested releases
- You're comfortable with Python virtual environments
Use Docker if:
- You hit any installation error and don't want to debug it
- You're deploying to production
- You want zero-configuration setup
Use git clone + pip install -e . if:
- You want to contribute to OpenClaw
- You need unreleased features from main branch
- You're debugging OpenClaw internals
Most people should start with pip. If that gives you trouble, jump straight to Docker. Don't waste time debugging environment issues when there's a container that just works.
Skip the Setup Headaches Entirely
Here's the thing I've learned after watching people go through this process dozens of times: the installation is the least interesting part. It's pure friction between you and building something useful.
If you don't want to deal with any of this manual setup ā the virtual environments, the dependency resolution, the API key configuration, all of it ā Felix's OpenClaw Starter Pack on Claw Mart is worth a look. For $29, it includes pre-configured skills and a setup that handles the environment configuration automatically. It's built for people who want to skip straight to the "building agents" part rather than spending their first two hours fighting with pip.
I'm not saying you can't set this up yourself ā everything in this post will get you there. But if you value your time, having a pre-built starting point with working skill configurations is genuinely useful. It's the difference between spending a Saturday afternoon configuring your environment and spending that same afternoon actually building something.
Quick Reference: The Most Common Fixes
For the skimmers, here's the cheat sheet:
| Error | Fix |
|---|---|
| Wrong Python version | pyenv install 3.11.7 + virtual environment |
| Dependency conflicts | Fresh virtual environment |
| Missing system libraries | sudo apt install python3-dev build-essential |
| Permission denied | Use a virtual environment (not sudo) |
| API key not found | openclaw init or set .env file |
| Command not found | Activate your venv or fix $PATH |
| SSL certificate errors | Run Install Certificates.command on Mac |
| Everything is broken | Use Docker |
And the universal advice that applies to every single one of these problems: use a virtual environment. If you remember nothing else from this post, remember that.
Next Steps
Once you're past installation, here's what to do:
- Run
openclaw doctorto verify everything is clean - Run
openclaw new my_first_agentto scaffold a project - Run
openclaw run agent.pyto execute your first agent - Read the getting-started guide that ships with the scaffolded project
OpenClaw's documentation is version-locked, meaning the docs match the version you installed. No more following a tutorial that references classes removed three versions ago. Check your installed version with openclaw --version and make sure the docs site matches.
If you hit a problem not covered here, openclaw doctor is your first stop. It catches new issues as they're discovered and updates its diagnostic checks. And if you're truly stuck, the OpenClaw community Discord is active and genuinely helpful ā just post your openclaw doctor output and someone will usually point you in the right direction within minutes.
Now go build something.
Recommended for this post

