docs blog library
github

Uninstalling Jazz

Jazz has no uninstall command. Remove things in this order, so nothing keeps firing a binary that is gone: schedules first, then services, then secrets, then data, then the binary.

If you used JAZZ_HOME or --data-dir for more than one home, repeat the steps that mention ~/.jazz for each home.

1. Scheduled workflows

List what is scheduled, then remove each one:

jazz workflow scheduled
jazz workflow unschedule <name>

On macOS each schedule is a launchd job in ~/Library/LaunchAgents/com.jazz.workflow.*.plist; on Linux it is a crontab line below a # Jazz schedule: comment. Check that none are left:

ls ~/Library/LaunchAgents/com.jazz.* 2>/dev/null   # macOS
crontab -l | grep -A1 '# Jazz'                     # Linux

2. Reminders and wake-ups

Reminders and wake-ups an agent set are one-shot jobs. Ask the agent to cancel them, or remove them by hand:

# macOS
for plist in ~/Library/LaunchAgents/com.jazz.reminder.*.plist ~/Library/LaunchAgents/com.jazz.trigger.*.plist; do
  [ -e "$plist" ] || continue
  launchctl unload "$plist"
  rm "$plist"
done

# Linux: they are `at` jobs
atq
atrm <job-number>

3. The daemon

Stop a daemon you started yourself, and remove the system service if you installed one:

jazz daemon stop
sudo jazz daemon uninstall

jazz daemon uninstall removes /Library/LaunchDaemons/com.jazz.daemon.plist on macOS or /etc/systemd/system/jazz-daemon.service on Linux, and the /etc/jazz/daemon.env file beside it.

4. Chat bots

  • iMessage on your Mac: run jazz imessage stop, then remove ~/Library/LaunchAgents/com.github.lvndry.jazz.imessage.plist and the bridge’s data in ~/.jazz-imessage.
  • iMessage through Photon: remove ~/.jazz-photon.
  • WhatsApp: unlink the device in WhatsApp (Settings → Linked devices), then remove ~/.jazz-whatsapp, which holds the link keys.
  • Telegram and Discord: stop the containers (docker compose down in the bot’s directory), remove the auto-update.sh cron line if you added one, and delete the data volume. See Reaching your agent from a chat app.

5. Keyring entries

API keys, tokens and sign-ins live in the OS keyring, in one entry per Jazz home. Its service is jazz.<id>.vault and its account is secrets. Entries written by older versions use the service jazz or jazz.<id>, one per setting; Jazz moves them into the vault on first run.

# macOS: list the entries, then delete each one by its service ("svce") and account ("acct")
security dump-keychain | grep -B4 -A4 '"svce"<blob>="jazz'
security delete-generic-password -s <service> -a <account>

# Linux: list the vault entries, then clear each
secret-tool search --all account secrets
secret-tool clear service <service> account <account>

On a host without a keyring, secrets are in ~/.jazz/secrets.json, which the next step removes.

6. Data and configuration

Everything else Jazz keeps (config, agents, conversations, memory, logs, caches and the unpacked runtime) is in one directory:

rm -rf ~/.jazz

Runtime data lists what is in it, if you want to keep a copy of your agents or conversations first. A project’s own ./.jazz/config.json is only removed if you delete it.

Two more locations are shared with other tools, so check them before deleting:

  • ~/.agents/mcp.json holds the MCP servers jazz mcp add wrote. Remove Jazz’s entries with jazz mcp remove <name>, or delete the file if nothing else uses it.
  • ~/.agents/skills/ holds skills other agents may also read. Jazz only reads it.

7. The binary

Remove it the way you installed it:

rm ~/.local/bin/jazz        # install script (or wherever JAZZ_INSTALL_DIR pointed)
npm rm -g jazz-ai           # npm
bun rm -g jazz-ai           # bun
pnpm rm -g jazz-ai          # pnpm
yarn global remove jazz-ai  # yarn

which -a jazz should then print nothing.

machine-readable: /docs/getting-started/uninstall.md · /llms.txt · /llms-full.txt