Work With Us
What We Do Insights Work With Us About Book a Consultation
← Insights
Guide

One Mac Mini, Multiple AI Assistants: A Setup That Actually Works

Anthropic's April 2026 policy change killed flat-rate access for third-party AI tools. Here's how we turned a Mac Mini into a shared AI agent server — one per user, fully isolated, running 24/7.

On April 4, 2026, Anthropic ended flat-rate subscription access for third-party AI tools. The pay-once, use-freely model was gone — replaced by per-token billing or a migration to the official Claude Code CLI.

For solo users, the path forward was straightforward. For teams sharing a single machine, it was less obvious. You could put everyone on API billing, split the cost, and lose per-user accountability. Or you could look for a cleaner solution.

We went the cleaner route.

What We Actually Built

A Mac Mini running multiple isolated AI personal assistants — one per user, all active simultaneously, none of them aware of the others.

Each user gets:

The machine boots. All sessions start automatically. No one needs to log in. If a process crashes, it restarts. If the Mac loses power and recovers, everything comes back without touching it.

The Claude CLI Method

The reason this works cleanly is how Claude Code CLI handles authentication. The CLI uses the macOS keychain to store each user’s OAuth token — per-user, per-keychain, fully isolated by the OS.

When OpenClaw routes requests through the claude binary instead of calling Anthropic’s API directly, it inherits the user’s own subscription. No token sharing. No raw credential extraction. Each person uses their own Claude Max account, from their own macOS session, billed to them individually.

This is the method the community converged on after the April policy change. It is also what Anthropic indicated they consider acceptable for personal use.

The Headless Problem

The tricky part is getting background processes to run without anyone actively logged in.

macOS LaunchAgents — the standard mechanism for per-user background services — normally only activate when a user opens a GUI session. For an always-on server, that is a problem.

The solution is a root-level LaunchDaemon that runs at boot and uses launchctl bootstrap gui/<uid> to activate each user’s session headlessly. Once bootstrapped, each user’s LaunchAgents behave normally: they start, they watch each other, they restart on failure.

One command at boot spins up every user’s environment. No logins, no manual steps.

Isolation by Default

The key property of this setup is that isolation is enforced by the operating system, not by configuration.

Each user’s files sit under their own home directory. Their Claude credentials live in their own keychain. Their Google Drive mounts at their own path. Their OpenClaw config, workspace skills, and logs are entirely separate.

A misconfigured skill in one user’s environment cannot touch another user’s data. The sandbox is real.

This matters practically. It means you can give different people different levels of access, different skills, different tools — and trust that the boundaries hold.

What Breaks Without Care

A few things are not obvious and will cost you time if you encounter them cold.

macOS TCC (Transparency, Consent, Control) blocks LaunchAgent-spawned processes from accessing ~/Documents, ~/Desktop, and ~/Downloads — even when running as the correct user. Scripts and data files should live in ~/.openclaw/ or a custom directory outside the protected set.

OpenClaw’s built-in URL fetch blocks requests to localhost and private IPs as an anti-SSRF measure. Skills that call a local API must use shell execution with curl — not the built-in fetch tools. Without this instruction in the skill definition, the model defaults to fetch and gets blocked silently.

Claude Code CLI also requires permissions to be pre-granted in ~/.claude/settings.json for headless operation. In interactive mode, the CLI prompts for approval. In background mode, there is no prompt — unapproved tool calls fail silently.

How It Runs Day to Day

Once the setup is in place, there is nothing to operate. The Mac Mini sits on the network. Each user talks to their Telegram bot. The bots respond, access their files, run tasks.

Adding a new user takes about 10 minutes: create the macOS account, authenticate their Claude Max subscription, copy and adjust the config files, add them to the bootstrap script.

The hardware cost is one machine. The rest scales with the team.

Work with us if you want this running for your team.

Working on something like this?

Work with us →