Run Quarshell on macOS¶
This guide runs the CLI and Gateway on your Mac and starts the workload in a
Docker container hosted by Docker Desktop. Quarshell APIs are pre-stable and
remain in the 0.x series.
Requirements¶
- macOS on Intel (
x86_64) or Apple silicon (arm64). The installer selects the matching release archive. - Docker Desktop, started and signed in if your organization requires it. Install it using the official macOS guide.
curl,sh, and a shell with~/.local/binonPATH.
Docker Desktop runs the container engine in a Linux VM. Quarshell's Gateway
and CLI run on macOS; the sandbox itself runs in that engine VM. Use --upload
to send a project directory into the sandbox.
1. Install the CLI and Gateway¶
curl -fsSL https://raw.githubusercontent.com/KLORQ/quarshell-cli/main/install.sh | CAUTEM_NO_START=1 sh
The installer verifies the SHA-256 checksum, then installs cautem,
quarshell-gateway, and helper assets into ~/.local/bin. CAUTEM_NO_START=1
lets you start the engine first and then launch Gateway with the selected backend.
If the installer reports that ~/.local/bin is not on PATH, add this to
~/.zshrc:
Confirm the installation:
2. Start Docker Desktop¶
Open Docker Desktop and wait until it reports that the engine is running. In a Terminal window, verify that the CLI can reach it:
The Docker client must work without sudo. Keep Docker Desktop running while
you use Quarshell.
3. Pull the sandbox image¶
The environment variable makes the CLI's base alias use this published
image. Add the export line to ~/.zshrc to keep it in new Terminal windows.
4. Create and use a sandbox¶
From the project directory you want to work on, create a local policy file:
mkdir -p ~/.config/cautem
cat > ~/.config/cautem/default-policy.yaml <<'EOF'
version: 1
filesystem_policy:
include_workdir: true
read_only:
- /usr
- /lib
- /proc
- /dev/urandom
- /app
- /etc
- /var/log
- /AGENTS.md
read_write:
- /tmp
- /dev/null
- /sandbox
- /workspace
landlock:
compatibility: best_effort
network_policies: {}
EOF
Create a sandbox, upload the current directory, then run a command inside it:
cautem sandbox create \
--name demo \
--gateway-workspace default \
--from base \
--policy ~/.config/cautem/default-policy.yaml \
--upload "$PWD"
cautem sandbox list
cautem sandbox exec demo -- uname -a
cautem sandbox connect demo
connect opens a shell; leave it with exit. The upload is a copy made during
creation, not a live host-directory mount. The policy starts with no allowed
network destinations. Add explicit rules before running an agent that needs
network access; see network policy.
Remove the sandbox when finished:
Podman alternative¶
Install Podman from the official instructions, then initialize and start its Linux VM:
Choose Podman before starting the local Gateway, because the Gateway owns the compute backend:
Use podman pull ghcr.io/cautem/cautem/sandboxes/base:latest for the image,
then keep CAUTEM_USE_GHCR=1 set in this shell.
Troubleshooting¶
cautem statuscannot reach the Gateway: runcautem gateway ensure, then inspect~/Library/Application Support/cautem/gateway.log.docker infofails: start Docker Desktop and check that its current context is selected withdocker context ls.- Image pull fails: verify registry access with
docker pulland try again. cautem doctorreports a missing Docker prerequisite: make suredockerworks in the same Terminal session ascautem.
