Files
shannoncoat/README.md
T
bdeshiandClaude Sonnet 5.5 993f82a714 Tighten the README and document the profile-reset-after-update fix
Adds a troubleshooting entry: Claude's auto-updater relaunches the app with
no profile flags, landing in the default profile. Turning off auto-updates
via the disableAutoUpdates policy (macOS, Windows, Linux locations) avoids it.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-13 14:13:32 +06:00

102 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
![shannoncoat — which coat will Claude wear today?](docs/hero.png)
Run multiple isolated [**\***](#isolation) Claude profiles on macOS from a
menu-bar item — each its own Claude Desktop **and** paired Claude Code setup,
its windows tagged to tell them apart. Your normal install is untouched.
---
> [!NOTE]
> shannoncoat started as the shell script in the first commit, written by hand.
Claude built the GUI app out of it — most of the Swift, the icon, and this
README — working from human direction, review, and dogfooding.
## Install
macOS 13+, Claude Desktop.
1. Download `shannoncoat.app.zip` from the
[latest release](https://github.com/bdeshi/shannoncoat/releases/latest),
unzip, and move to `/Applications` or `~/Applications`.
2. First launch is blocked (not notarized): **System Settings → Privacy &
Security → Open Anyway**.
3. Grant **Accessibility** when prompted; the tags need it.
## Everyday use
With nothing running, shannoncoat offers a checklist and starts whichever
profiles you tick. The menu bar shows a dot per running profile in its colour,
plus the name when only one is up; hover for the rest.
- **Click a profile** — switch to it; the others are quit, even if it's already
running.
- **Shift-click** — open it *alongside* them, or focus it if already up.
**Settings → Click a profile to** swaps the two. `⇆` marks the last one you
switched to. **Close Profile** quits one, **Quit Claude** all (shannoncoat
stays), **Manage Profiles…** opens the main window.
Each managed window carries a tag in its profile's colour — drag it anywhere, and
each profile remembers its spot.
## Profiles
**default** is your real Claude install: start/stop only, never managed, so it
gets no tag and can't be deleted.
**Manage Profiles… → +** adds one. Directories are optional — blank gives
`~/.shannoncoat/data/<name>/{app,code}`. Two profiles may not share a directory;
that would silently merge their sessions, so shannoncoat refuses to start and
names the collision.
Profiles are JSON files in `~/.shannoncoat/`. Deleting one quits it and removes
just that file — **the Claude data stays on disk**, so recreating it resumes
where you left off.
## Settings
- **Launch at Login**
- **Click a profile to** — switch or open alongside; Shift-click does the other.
- **Window tag** — name chip or coloured dot.
- **Automatically check for updates** — once a day at most, against the latest
GitHub release, or **Check for Updates…** on demand. It never self-updates;
download and swap the app in yourself.
## Troubleshooting
**Tags don't appear.** Almost always Accessibility. If shannoncoat is listed *and
ticked* under **Privacy & Security → Accessibility**, remove it with **−** and
re-add — a differently-signed build leaves the old entry visible but inert, and
toggling won't help.
**A profile restarts into the default one.** Claude's auto-updater relaunches
the app with no profile flags. Turn auto-updates off with the
`disableAutoUpdates` policy, then update by hand and restart from shannoncoat:
| OS | Where |
| --- | --- |
| macOS | `/Library/Managed Preferences/com.anthropic.claudefordesktop.plist` — `<key>disableAutoUpdates</key><true/>` |
| Windows | `HKLM\SOFTWARE\Policies\Claude` — `disableAutoUpdates` (DWORD `1`) |
| Linux | `/etc/claude-desktop/managed-settings.json` — `{"disableAutoUpdates": true}` |
**A profile won't quit.** Claude declined — usually its "unsaved work" or "still
generating" dialog. shannoncoat waits rather than killing it.
## Build from source
Needs the Xcode Command Line Tools (`xcode-select --install`).
```bash
./build.sh
```
Lands in `.build/shannoncoat.app`. Unsigned builds get a new code identity each
time, silently voiding Accessibility on every rebuild; `.env.example` covers a
one-off self-signed certificate that avoids it.
## Isolation
> [!IMPORTANT]
> Isolation isn't perfect. Claude and Claude Code can have effectively full disk
> access from any profile, default config folders included, and some integrations
> — skills, plugins — hardcode `~/.claude` and write there.