#Command to install openclaw on mac os?
1 messages · Page 1 of 1 (latest)
You’re not stupid — the site being down is on us.
Fast install on macOS (recommended)
curl -fsSL --proto '=https' --tlsv1.2 https://openclaw.ai/install.sh | bash
openclaw onboard --install-daemon
If openclaw.ai is down: run the same installer from GitHub
curl -fsSL https://raw.githubusercontent.com/openclaw/openclaw/main/scripts/install.sh | bash
openclaw onboard --install-daemon
Notes:
- You need Node >= 22.12 (the installer will try to handle this on macOS via Homebrew).
- After onboarding, the dashboard is usually at:
http://127.0.0.1:18789/
If anything errors, paste:
openclaw --version
openclaw status
Can I install Openclaw w/o configuring a hosted LLM? I want to use Ollama and a local LLM
Yes — you can install/run OpenClaw without configuring any hosted LLM, as long as you have some provider to answer requests (and Ollama counts).
Basic path (Gateway + Ollama on the same Mac):
- Install Ollama + pull a model:
ollama pull llama3.3 # example; use whatever you want
- Enable the Ollama provider in OpenClaw (for daemons on macOS, prefer config over
export, since launchd often won’t inherit your shell env):
openclaw config set models.providers.ollama.apiKey "ollama-local"
openclaw config set agents.defaults.model.primary "ollama/llama3.3" # match the model you pulled
openclaw gateway restart
- Sanity check:
openclaw models list
openclaw models status
Important gotcha if Ollama is remote: don’t point OpenClaw at ...:11434/v1 (OpenAI-compat). Use the native base URL http://host:11434 (no /v1) for reliable tool calling.
Docs (also readable on GitHub if the website is down):
- https://github.com/openclaw/openclaw/blob/main/docs/providers/ollama.md
- https://github.com/openclaw/openclaw/blob/main/docs/gateway/local-models.md
Caveat: local models often struggle with the “agentic” parts (tool use, long context, reliability). If it feels flaky, the usual fix is adding a hosted model as a fallback, but it’s not required to get started.
When configuring LLM do I pick â—Ź Custom Provider (Any OpenAI or Anthropic compatible endpoint)?
If you’re using Ollama, don’t pick Custom Provider (unless you specifically want to use Ollama’s OpenAI-compat /v1 mode and accept weaker tool-calling).
Best path: pick “Skip” in the wizard, finish onboarding, then enable Ollama natively in config:
openclaw config set models.providers.ollama.apiKey "ollama-local"
openclaw config set agents.defaults.model.primary "ollama/<your-model-name>"
openclaw gateway restart
If your Ollama is on another machine, also set a base URL (note: no /v1):
openclaw config set models.providers.ollama.baseUrl "http://<ollama-host>:11434"
openclaw config set models.providers.ollama.api "ollama"
Custom Provider is meant for OpenAI/Anthropic-compatible servers like vLLM/LiteLLM/LM Studio, etc. Ollama has a dedicated/native integration documented here (works even if the website is down):
This Ollama will be used on my mac mini for a local agent AND agents on a VPS will use it as well.
Any suggestions as to why this is invalid?
Invalid config at /Users/REMOVED/.openclaw/openclaw.json:\n- models.providers.ollama.models.0: Invalid input: expected object, received string
- models.providers.ollama.models.1: Invalid input: expected object, received string
<0001f99e> OpenClaw 2026.3.2 (85377a2) — The only crab in your contacts you actually want to hear from. <0001f99e>
│
◇ Config ───────────────────────────────────────────────────╮
│ │
│ Config invalid; doctor will run with best-effort config. │
│ │
├────────────────────────────────────────────────────────────╯
Config invalid
File: ~/.openclaw/openclaw.json
Problem:
- models.providers.ollama.models.0: Invalid input: expected object, received string
- models.providers.ollama.models.1: Invalid input: expected object, received string
Run: openclaw doctor --fix
Restarted LaunchAgent: gui/502/ai.openclaw.gateway
Timed out after 60s waiting for gateway port 18789 to become healthy.
Gateway process is running but port 18789 is still free (startup hang/crash loop or very slow VM startup).
Service runtime: status=running, state=active, pid=30821
Gateway port 18789 status: free.
Gateway restart timed out after 60s waiting for health checks.
That error is exactly what it says on the tin: in openclaw.json, models.providers.ollama.models must be an array of objects, but you currently have an array of strings.
So this is invalid:
models: ["llama3.3", "qwen2.5-coder:32b"]
…and needs to be like this (minimal valid shape is { id, name }):
{
models: {
providers: {
ollama: {
api: "ollama",
baseUrl: "http://127.0.0.1:11434", // or your Mac mini’s address for VPS usage
apiKey: "ollama-local",
models: [
{ id: "llama3.3", name: "llama3.3" },
{ id: "qwen2.5-coder:32b", name: "qwen2.5-coder:32b" },
],
},
},
},
}
Two extra notes since you mentioned VPS agents using your Mac mini’s Ollama:
- For remote Ollama, use the native base URL
http://<host>:11434(no/v1) and keepapi: "ollama". - Once the config is fixed, re-run:
openclaw doctor --fix
openclaw gateway restart
openclaw logs --follow
If it still says “process running but port 18789 is free”, the logs will show the crash loop reason.
If you paste the models.providers.ollama block you currently have (redact hostnames), I can point out the exact line to change.
I think that wqorked. How do I launch tui to confirm?
Run:
openclaw tui
If it prompts/complains about auth, grab your gateway token and pass it explicitly:
TOKEN="$(openclaw config get gateway.auth.token)"
openclaw tui --url ws://127.0.0.1:18789 --token "$TOKEN"
(And quick sanity check outside the TUI:)
openclaw status
openclaw models status
🦞 OpenClaw 2026.3.2 (85377a2) — Your task has been queued; your dignity has been deprecated.
Config : ~/.openclaw/openclaw.json
Agent dir : ~/.openclaw/agents/main/agent
Default : ollama/qwen2.5-coder:7b
Fallbacks (0) : -
Image model : -
Image fallbacks (0): -
Aliases (0) : -
Configured models (2): ollama/qwen2.5-coder:7b, ollama/mistral:7b
Auth overview
Auth store : ~/.openclaw/agents/main/agent/auth-profiles.json
Shell env : off
Providers w/ OAuth/tokens (0): -
- ollama effective=models.json:ol...al | models.json=ol...al | source=models.json: ~/.openclaw/agents/main/agent/models.json
OAuth/token status
- none
Yep — that output looks healthy for an Ollama-only setup:
- Default model:
ollama/qwen2.5-coder:7b - Configured models:
ollama/qwen2.5-coder:7b,ollama/mistral:7b - Shell env: off is fine here (it just means it’s not relying on
export OLLAMA_API_KEY; it’s using your saved config/models files — good for the LaunchAgent).
To fully confirm end-to-end:
openclaw gateway status
openclaw health
openclaw tui
Then send a quick “hi” in the TUI. If you want to verify it’s actually hitting Ollama, run this in another terminal while chatting:
openclaw logs --follow
Please list all of the steps to install and configure Ollama to work. Include how to configure openclaw to work with Ollama. Please list them in numeric steps with how, why and links to resources if possible
- Install Ollama on the Mac mini (this is the local LLM server)
How: Install from the official site and start it (the macOS app typically runs the background service automatically).
- Official site: https://ollama.ai/
Why: OpenClaw will talk to Ollama over HTTP on your Mac mini (default port 11434).
- Verify the Ollama server is actually running
How (from the Mac mini):
ollama --version
curl -s http://127.0.0.1:11434/api/tags | head
Why: If the server isn’t listening, OpenClaw can’t discover/use any local models.
- Pull at least one model into Ollama
How:
ollama pull <model-name>
ollama list
(Example model names are in the OpenClaw Ollama docs below.)
Why: OpenClaw can’t use a model that Ollama hasn’t downloaded yet.
- Quick sanity test the model responds
How:
ollama run <model-name> "hello"
Why: Confirms the model works before you involve OpenClaw.
- Install OpenClaw
How (recommended installer):
curl -fsSL --proto '=https' --tlsv1.2 https://openclaw.ai/install.sh | bash
openclaw --version
If the website is down, use GitHub instead:
curl -fsSL https://raw.githubusercontent.com/openclaw/openclaw/main/scripts/install.sh | bash
openclaw --version
Why: Gets the CLI + gateway installed in a repeatable way.
- Configure OpenClaw to enable the Ollama provider (on the Mac mini)
How (best for macOS LaunchAgent/daemon since shell env often won’t be inherited):
openclaw config set models.providers.ollama.apiKey "ollama-local"
Why: This “opts in” to Ollama for OpenClaw (Ollama doesn’t need a real key; any string works).
- Set your default OpenClaw model to an Ollama model
How:
openclaw config set agents.defaults.model.primary "ollama/<model-name>"
Why: Without a default model, the agent may boot but won’t know what model to use for replies.
- Restart the gateway + confirm OpenClaw sees the Ollama models
How:
openclaw gateway restart
openclaw models list
openclaw models status
openclaw status
Why: models list/status tells you whether OpenClaw can talk to Ollama and which ollama/... models it believes are available.
- Confirm by chatting (TUI or Dashboard)
How:
openclaw tui
# or:
openclaw dashboard
Why: This is the real “end-to-end” test: UI → gateway → ollama → response.
-
If VPS-based agents will ALSO use the Mac mini’s Ollama: connect privately (don’t expose 11434 to the public internet)
How: Use a private network like Tailscale/WireGuard, or an SSH tunnel.
Why: Ollama typically has no auth; if you open it to the internet, anyone can use your compute and see prompts. -
Configure the VPS OpenClaw to point at the Mac mini Ollama (explicit provider)
How (on the VPS OpenClaw config): setbaseUrlto the Mac mini’s reachable private address and do not use/v1. Also:models.providers.<provider>.modelsmust be objects, not strings.
{
models: {
providers: {
ollama: {
api: "ollama",
baseUrl: "http://<mac-mini-host>:11434",
apiKey: "ollama-local",
models: [
{ id: "<model-name>", name: "<model-name>" },
],
},
},
},
agents: {
defaults: {
model: { primary: "ollama/<model-name>" },
},
},
}
Why: Remote Ollama + OpenAI-compat /v1 is where tool-calling gets flaky; OpenClaw’s native Ollama adapter is what you want.
Resources (works even if docs.openclaw.ai is down):
- OpenClaw Ollama provider doc (recommended): https://github.com/openclaw/openclaw/blob/main/docs/providers/ollama.md
- OpenClaw local models notes: https://github.com/openclaw/openclaw/blob/main/docs/gateway/local-models.md
- Onboarding overview + custom providers (if you ever use vLLM/LM Studio/LiteLLM): https://github.com/openclaw/openclaw/blob/main/docs/start/onboarding-overview.md
If you tell me which networking method you want for VPS ↔ Mac mini (Tailscale vs SSH tunnel vs “open a port”), I can give the cleanest exact baseUrl + safety setup for that.
Which Ollama model would work on a Mac Mini M4 process with 16 GB RAM AND give a meaningful response in less than 15 seconds?
@humble oxide Which Ollama model would work on a Mac Mini M4 process with 16 GB RAM AND give a meaningful response in less than 15 seconds?
I can’t give a “pick this exact model name” answer that’ll stay correct (Ollama model variants + quants change constantly), but for a Mac mini M4 + 16GB RAM and a < 15s meaningful first reply, the practical target is:
- Size class: start with an 8B-ish instruct model (or 7B-ish).
- Why: 16GB usually handles that comfortably with decent speed; larger (14B/20B/30B+) often misses your latency target or forces heavy quantization/tradeoffs.
- Quantization: prefer a Q4 (or similar “medium” quant) over Q8.
- Why: Q4 is much faster/lighter and typically stays under your latency budget. Q8 tends to be slower and memory-hungrier.
- Keep context reasonable: don’t run huge context windows if you care about latency.
- Why: long prompts + big
num_ctxcan blow up response time even on fast Apple silicon.
- Benchmark locally (after the 1st warm-up run)
How (on the Mac mini):
# First run warms caches (ignore timing)
ollama run <model> "Say hi in 2 sentences."
# Then time it (run a few times)
time ollama run <model> "Write a helpful 5-bullet answer for: how to set up OpenClaw with Ollama."
Why: download time + first-load time can be misleading; you care about steady-state response.
- Only pick models that are tool-capable (for OpenClaw)
How:
openclaw models list
Why: OpenClaw’s Ollama integration filters for models that report tool support; a “fast” model that can’t do tools will feel broken for agent workflows.
If you want current, real-world “M4 mini 16GB” benchmarks, the best place is the Discord #models channel (people post “model + quant + tokens/sec” numbers there). Tell them your exact constraint (“<15s response, 16GB, mostly chat vs tool use”) and they’ll point you to the best-performing pick this week.
On a Mac mini M4 + 16GB, if you want “meaningful” and consistently <15s, the safe starting point is:
-
Pick a 7B–8B class instruct/chat model (not 14B+).
Why: 14B+ often blows past your latency target on 16GB once context grows. -
Use a Q4-ish quantization (Q4 tends to be the best speed/quality tradeoff).
Why: Q8 is usually too slow/heavy for your <15s goal. -
Keep context + output short (this matters more than people expect).
Why: long prompts / huge context windows can make even “fast” models feel slow. -
Benchmark the second run (after warm-up):
ollama run <model> "Say hi in 2 sentences." # warm-up
time ollama run <model> "Answer in 6 bullets: how do I set up OpenClaw with Ollama?"
- For OpenClaw specifically: only use models that are tool-capable
openclaw models list
(OpenClaw filters/discovers tool-capable Ollama models; picking a non-tool model can feel “broken” for agent workflows.)
If you tell me whether your main use is coding vs general chat, I can suggest which size class + quant style usually fits best for that (without guessing exact model names).
Main general chat, research online and a lot of coding
Given your mix (general chat + web research + lots of coding) on a 16GB M4 mini, I’d set it up like this:
-
Keep your default model “fast + tool-capable” (7B–8B, Q4-ish)
Why: That’s the sweet spot for “feels responsive” on 16GB and is usually good enough for day-to-day chat + driving tools likeweb_fetch. -
Add a second local model optimized for coding (still in the 7B–8B class if you care about <15s)
Why: “Coder-tuned” small models often do noticeably better at code than general chat models at the same size. (Going 14B+ may improve quality, but it’s the first place latency starts to miss your target on 16GB once prompts get bigger.) -
Switch models per session when you change task type (don’t rely on fallbacks for this)
In chat, use:
/model list→ pick by number (e.g./model 2)/model statusto confirm what’s active
Why: fallbacks are mainly for errors/outages, not “this is a hard coding task”.
- For web research, make sure web tools are actually enabled/configured
web_fetchworks without an API key (just fetches pages)web_searchtypically needs a Brave key
How: run:
openclaw configure --section web
(or set tools.web.search.apiKey in config)
Why: otherwise your “research online” will be limited to fetching known URLs.
- Pick only Ollama models that OpenClaw considers tool-capable
openclaw models list
Why: if the model can’t reliably do tool calling, “research online” and agent workflows get flaky fast.
If you paste your current openclaw models list output (just the model IDs; redact anything sensitive), I can tell you which of your installed models are the best candidates for “default chat” vs “coding”, without guessing new model names.
Can you export all of the steps, configurations, suggestions for modelts, etc. into a markdown file in chat for me to download?
Attached a markdown checklist with all steps + config snippets + troubleshooting.
Now, how can I make this Ollama instance available to my agents on a VPS using tailscale installed on both the mini and the VPS?
To make the Mac mini’s Ollama usable from a VPS over Tailscale, the clean/safe pattern is: keep Ollama bound to localhost, then use tailscale serve --tcp to publish it only to your tailnet.
1) Verify Tailscale connectivity (both machines)
On the Mac mini + the VPS:
tailscale status
Why: you want to confirm both devices are in the same tailnet and you know the Mac mini’s tailnet name/IP.
Optionally from the VPS:
tailscale ping <mac-mini-name>
2) Expose Ollama (11434) to the tailnet using Tailscale Serve (on the Mac mini)
Run this on the Mac mini:
tailscale serve --bg --tcp 11434 localhost:11434
Why this is good:
- No router port-forwarding.
- No public exposure.
- Works even if Ollama only listens on
127.0.0.1:11434.
To confirm:
tailscale serve status
3) Test from the VPS (before touching OpenClaw)
On the VPS, hit the Mac mini over Tailscale:
curl -s http://<mac-mini-tailnet-name-or-100.x-ip>:11434/api/tags | head
Why: if this doesn’t work, OpenClaw won’t work either. Fix networking first.
4) Point the VPS OpenClaw at the Mac mini’s Ollama (native API; no /v1)
On the VPS OpenClaw config, set the provider like:
{
models: {
providers: {
ollama: {
api: "ollama",
baseUrl: "http://<mac-mini-tailnet-name-or-100.x-ip>:11434",
apiKey: "ollama-local",
models: [
{ id: "<model-name>", name: "<model-name>" },
],
},
},
},
agents: {
defaults: {
model: { primary: "ollama/<model-name>" },
},
},
}
Why:
api: "ollama"+baseUrl: "http://...:11434"uses the native Ollama API (best tool-calling behavior).