Getting Started
Preamp ships as a signed agent for macOS and Windows. Install it once and the agent handles enrollment, hourly backups, and self-updates. Optionally add the MCP server in Claude Code for natural-language control inside your coding session.
Which describes you?
Install the agent (recommended)
The Preamp agent is a single signed binary. Hourly backups run via a per-user OS-native scheduler — LaunchAgent on macOS, Task Scheduler on Windows. The agent self-updates opportunistically (signature + integrity verified, smoke-tested before swap, rolls back on failure). No Node.js, no cron.
macOS
The macOS agent is signed and notarized by Apple.
1. Run the installer
curl -fsSL https://preamp.ai/agent/install.sh | bash
The launcher fetches the latest user-mode .pkg, verifies it against the manifest, runs the postinstall (places the binary at ~/.local/share/preamp/bin/preamp, symlinks it to ~/.local/bin/preamp, writes the LaunchAgent plist, bootstraps launchd), and prepares for enrollment.
Note: macOS does not include
~/.local/binin$PATHby default. Ifpreampisn’t found after install, addexport PATH="$HOME/.local/bin:$PATH"to your shell rc file (e.g.~/.zshrc), or invoke the agent at its canonical path (~/.local/share/preamp/bin/preamp).
2. Enroll
preamp setup
Opens a browser at app.preamp.ai/device-setup for OAuth-style enrollment. Pick a device name, complete email verification, and the agent writes ~/.preamp/config.json and your device token (mode 0600). Returns control to your terminal when done.
You’re done when you see
✓ Preamp is set up. Hourly backups are scheduled via LaunchAgent.
Log in to app.preamp.ai to see your device, snapshots, and any security findings.
Common issues
"command not found: preamp" right after install
macOS does not include ~/.local/bin in $PATH by default. First, check whether it's present: echo $PATH | grep -o '\.local/bin'. If nothing prints, add export PATH="$HOME/.local/bin:$PATH" to your ~/.zshrc (or equivalent shell rc file), then run hash -r to refresh the shell's command lookup, or open a new terminal. Alternatively, invoke the agent at its canonical path directly: ~/.local/share/preamp/bin/preamp setup.
macOS blocked the installer ("can't be opened because Apple cannot check it for malicious software")
The agent .pkg is Apple-notarized — this error usually means an outdated cached Gatekeeper assessment. Run spctl --assess --type install /tmp/preamp-user-*.pkg to re-verify. If it still fails, check your Mac's date/time (Apple's notary signature includes a timestamp).
I had the legacy Node-based client; will the new installer remove it?
No, the installer doesn't touch your crontab. If you ran the legacy installer previously, remove the cron entry yourself before the new agent's LaunchAgent starts running concurrently:
crontab -l | grep -v 'preamp-agent-backup' | crontab -
The new agent stores state at ~/.preamp/config.json separately from the legacy ~/.preamp/preamp.cjs; you can leave the legacy file in place or remove it manually.
Didn't receive the 6-digit verification code
Check your spam folder. If it doesn't arrive within two minutes, re-run preamp setup to trigger a fresh code.
Backup not running on schedule
Confirm the LaunchAgent is loaded: launchctl list | grep ai.preamp.agent. If absent, the postinstall didn't bootstrap it for your GUI session — re-run the installer or manually load it: launchctl bootstrap "gui/$(id -u)" ~/Library/LaunchAgents/ai.preamp.agent.plist.
For MDM rollout (JAMF / Kandji / Intune / Mosyle), see the enterprise docs.
Windows
The Windows agent is an x64 MSI signed by Azure Trusted Signing (PublicTrust SIV).
1. Run the installer
Download and double-click the latest signed installer:
https://preamp.ai/agent/Preamp-x64.msi
The MSI installs per-user (no admin required), places the agent at %LOCALAPPDATA%\Programs\Preamp\preamp.exe, adds that directory to your per-user PATH, and creates a Preamp shortcut directly under the Start Menu. See the Windows Installer reference for the full breakdown of what gets installed and how to uninstall.
2. Enroll
When the wizard finishes, leave the Launch Preamp setup checkbox checked and click Finish — preamp setup runs automatically. You can also start it later from the Start Menu shortcut, or from any new cmd.exe / PowerShell session:
preamp setup
The flow opens app.preamp.ai/device-setup in your default browser. Pick a device name, complete email verification, and the agent writes %USERPROFILE%\.preamp\config.json and your device token (%USERPROFILE%\.preamp\token).
You’re done when you see
✓ Preamp is set up. Hourly backups are scheduled via Task Scheduler.
Log in to app.preamp.ai to see your device, snapshots, and any security findings.
Common issues
"Windows protected your PC" SmartScreen prompt
The MSI is signed with a PublicTrust SIV certificate, but SmartScreen reputation can take a short window to build after each new release. Click More info → Run anyway. The publisher line on that dialog should read Rewind Software, Inc. — if it reads Unknown publisher, do not proceed and re-download from preamp.ai.
"preamp" not recognized in cmd.exe / PowerShell
The MSI added %LOCALAPPDATA%\Programs\Preamp to your per-user PATH (HKCU\Environment\PATH), but shells started before the install do not see the new entry. Open a fresh terminal. If it still doesn't resolve, invoke directly: %LOCALAPPDATA%\Programs\Preamp\preamp.exe setup.
Didn't receive the 6-digit verification code
Check your spam folder. If it doesn't arrive within two minutes, re-run preamp setup to trigger a fresh code.
Backup not running on schedule
Open Task Scheduler, expand Task Scheduler Library, and look for Preamp. If absent, re-run setup: preamp setup. Recent runs are tailable in %LOCALAPPDATA%\preamp\logs\preamp-backup.log — every fired backup writes a header line with the agent version and UTC timestamp.
For Intune-managed rollout on Windows, see the enterprise docs.
MCP server
Adds natural-language control of Preamp inside Claude Code sessions. The MCP server runs at api.preamp.ai/mcp; you register it once and Claude handles enrollment automatically on first use.
1. Confirm Claude Code is installed
claude --version
If command not found, install Claude Code from docs.claude.com first.
2. Add the MCP server
claude mcp add --transport http preamp https://api.preamp.ai/mcp
3. Sign up via Claude
macOS only for the auto-install path. The “Sign me up for Preamp” flow currently drives a
curl … | bashshell install, which only runs on macOS. Windows users: install the agent manually first via the Windows MSI, runpreamp setup, then come back here and tell Claude “Sign me up for Preamp” — Claude will detect the existing install and bind your Claude Code session to it.
Open a fresh Claude session and tell it:
Sign me up for Preamp.
Claude will install the Preamp agent (~30 seconds, one-time on macOS), open your browser to verify your email, and bind this Claude Code session. Once complete, you can ask things like:
- “What’s my backup status?”
- “Show me my last 10 snapshots.”
- “Restore my Cursor settings from yesterday.”
The local preamp CLI installed during signup gives the same surface from any terminal — run preamp status, preamp snapshots, etc. without opening Claude.
4. Restarting Claude Code
Each time you start a new Claude Code session the MCP connection is fresh. Claude transparently re-runs the session-binding step on your first Preamp request — no re-enrollment, no extra steps.
Common issues
"Sign me up for Preamp" doesn't do anything
You're probably running it inside an already-active Claude session. Exit first (/exit), then run claude "sign me up for Preamp" at the regular terminal prompt.
"preamp" MCP server not found after adding it
Close your terminal completely and open a fresh one. Claude reads the MCP server list once at startup.
Didn't receive the 6-digit verification code
Check your spam folder. If it doesn't arrive within two minutes, re-run preamp setup from your terminal to trigger a fresh code.
Using /preamp after setup
Once either install path completes, the /preamp slash command is available globally in any Claude Code session. Type /preamp to get your backup status, trigger a manual backup, sync your config from another machine, restore from a snapshot, and more. Natural language also works — say things like “what’s my backup status” or “back up now” and Claude will use the Preamp tools directly.
macOS Installer
Platforms: macOS · Windows
-
Apple notarization check —
install.shverifies the downloaded.pkgis Apple-notarized viaspctl --assessbefore running it. Refuses to install on a notarization failure. -
Postinstall — Places the agent binary at
~/.local/share/preamp/bin/preamp, symlinks it to~/.local/bin/preampfor your$PATH, and writes the LaunchAgent plist at~/Library/LaunchAgents/ai.preamp.agent.plist. If a legacy install at~/Library/Application Support/Preamp/bin/preampexists, it is removed and a baseline-rebuild marker is written so the next scheduled backup runs full.Note: macOS does not include
~/.local/binin$PATHby default. Ifpreampisn’t found after install, addexport PATH="$HOME/.local/bin:$PATH"to your shell rc file (e.g.~/.zshrc), or invoke the agent at its canonical path (~/.local/share/preamp/bin/preamp). -
LaunchAgent bootstrap — Loads the LaunchAgent into your GUI session via
launchctl bootstrapso hourly backups start running immediately. (No cron involved — the LaunchAgent runs even when no terminal is open.) -
Email verification —
preamp setupopens a browser toapp.preamp.ai/device-setup, you enter your email, a 6-digit code is sent, you complete verification. -
Device registration — Generates a cryptographic device token and writes it to
~/.preamp/config.json(mode 0600). -
Auto-discovery — Scans for Claude Code, ChatGPT, Cursor, Windsurf, Gemini CLI, Aider, and Continue. Codex and GitHub Copilot are coming soon.
-
First backup — Runs an immediate backup of all discovered files. Subsequent backups run hourly via the LaunchAgent installed in step 3.
Windows Installer
Platforms: macOS · Windows
The Preamp Windows agent ships as a signed .msi installer for x64 Windows 10/11. Installation is per-user — no admin elevation required, no shared paths touched, and Add or Remove Programs shows it under the installing user’s account only.
1. Download the MSI
Download the latest signed installer:
https://preamp.ai/agent/Preamp-x64.msi
The MSI is signed via Azure Trusted Signing (PublicTrust SIV). Right-click → Properties → Digital Signatures to verify the publisher reads Rewind Software, Inc. before running it.
2. Run the installer
Double-click the .msi. The installer is a standard WiX FeatureTree wizard — accept the license, accept the install location, click Install.
Because the install is per-user, Windows does not prompt for admin credentials.
SmartScreen note: the installer is signed with a PublicTrust SIV certificate, so SmartScreen should not block it. If you see “Windows protected your PC” on a brand-new release, click More info → Run anyway. This typically only happens during the short reputation-build window after a fresh release; subsequent downloads of the same file go through silently.
3. What gets installed
| Item | Location |
|---|---|
| Agent binary | %LOCALAPPDATA%\Programs\Preamp\preamp.exe |
| Per-user PATH entry | HKCU\Environment\PATH gets %LOCALAPPDATA%\Programs\Preamp appended |
| Start Menu shortcut | Preamp directly under Start (runs preamp setup) |
| Hourly Scheduled Task | Preamp under your user account, hourly trigger |
| Device token | %USERPROFILE%\.preamp\token (created at first enrollment) |
| Config + state | %USERPROFILE%\.preamp\config.json |
| Backup log | %LOCALAPPDATA%\preamp\logs\preamp-backup.log |
The PATH entry is registered cleanly — uninstalling Preamp removes it. Open a fresh cmd.exe or PowerShell session after install and preamp will resolve.
4. First-run setup
The final wizard page has a pre-checked Launch Preamp setup checkbox. Click Finish with the box checked and preamp setup runs immediately:
- Opens
app.preamp.ai/device-setupin your default browser. - You enter your work email; Preamp emails a 6-digit verification code.
- You enter the code; the agent writes your device token to
%USERPROFILE%\.preamp\token. - The agent runs auto-discovery for installed AI assistants (Claude Code, ChatGPT desktop, Cursor, Windsurf, Gemini CLI, Aider, Continue) and runs the first backup.
- The hourly Scheduled Task starts firing on the next top-of-hour.
If you unchecked the box and clicked Finish, run setup later from the Start Menu (click the Preamp shortcut) or from a terminal:
preamp setup
5. Uninstall
Go to Settings → Apps → Installed apps, find Preamp, click the ⋯ menu, and pick Uninstall.
Uninstall is a clean wipe — the MSI and the agent’s pre-uninstall hook together remove:
- The agent binary and its install directory at
%LOCALAPPDATA%\Programs\Preamp\. - The Start Menu shortcut.
- The per-user
PATHentry fromHKCU\Environment\PATH. - The hourly Scheduled Task (
Preamp). - The agent’s data + log directory at
%LOCALAPPDATA%\preamp\(includinglogs\preamp-backup.log). - The agent’s runtime state at
%USERPROFILE%\.preamp\(token, config, cached server state).
Past snapshots are unaffected — they’re stored server-side under your account on app.preamp.ai. If you want to preserve a copy of preamp-backup.log for forensics, copy it out of %LOCALAPPDATA%\preamp\logs\ before running the uninstaller.
Common issues
"Windows protected your PC" SmartScreen prompt
The MSI is signed with a PublicTrust SIV certificate, but SmartScreen reputation can take a short window to build after each new release. Click More info → Run anyway. If the publisher line on that dialog reads Rewind Software, Inc., the file is genuine. If it reads Unknown publisher, do not proceed — re-download from preamp.ai.
"preamp" not recognized in cmd.exe / PowerShell
The MSI adds %LOCALAPPDATA%\Programs\Preamp to your per-user PATH (HKCU\Environment\PATH). Existing shells started before the install do not see the new PATH — open a fresh terminal. If it still doesn't resolve, invoke directly: %LOCALAPPDATA%\Programs\Preamp\preamp.exe setup.
Didn't receive the 6-digit verification code
Check your spam folder. If it doesn't arrive within two minutes, re-run preamp setup to trigger a fresh code.
Backup not running on schedule
Confirm the Scheduled Task is registered: open Task Scheduler, expand Task Scheduler Library, and look for Preamp. If absent, re-run setup: preamp setup. To inspect recent runs, tail %LOCALAPPDATA%\preamp\logs\preamp-backup.log — every fired backup writes a header line with the agent version and UTC timestamp.
For MDM rollout via Intune or a similar tool, see the enterprise docs.
Configuration Options
Backup frequency
Default is hourly, scheduled via your OS — LaunchAgent on macOS, Task Scheduler on Windows. Change it to one of the supported intervals: 15 minutes, 30 minutes, hourly, or daily.
Every 15 minutes
preamp schedule 15min
Every 30 minutes
preamp schedule 30min
Every hour (default)
preamp schedule hourly
Once per day
preamp schedule daily
The new interval is applied to your OS scheduler — ~/Library/LaunchAgents/ai.preamp.agent.plist (macOS, reloaded automatically) or the Preamp Scheduled Task (Windows, re-registered automatically). No reboot or re-login required.
[!NOTE] For MDM-managed installs on macOS, the schedule is set via the
schedulekey in the managed-prefs profile and overrides any local change. See the managed preferences reference.
Custom directories
Add additional paths to your backup. Useful for project-level agent files or custom tool settings.
Via Claude Code (natural language)
Say this to Claude:
Also back up ~/my-project/.claude
Via CLI
preamp paths add ~/my-project/.claude
The paths add flow uploads the path as a candidate; auto-approve is enabled by default for user-mode installs, so the path takes effect on the next backup. List current paths with preamp paths list and remove with preamp paths remove <path>.
Credential Storage
The agent stores your device token securely. Where the OS provides a credential manager (macOS Keychain, GNOME Keyring on Linux), the token lives there; on platforms without one, it falls back to a protected token file under your home directory, restricted by the OS’s default per-user permissions or ACLs.
| Platform | Storage Method | Details |
|---|---|---|
| macOS | Keychain | Uses the macOS Keychain via the security command. Token is stored as a generic password. |
| Windows | Token file | Stored at %USERPROFILE%\.preamp\token as a raw file. Access is gated by the NTFS ACLs Windows applies to your user profile directory by default (your account only). |
| Linux (GNOME) | secret-tool | Uses GNOME Keyring via secret-tool. Integrates with your desktop session. |
| Fallback | Token file | Protected file in ~/.preamp/ when no OS secret manager is available. |
CLI Reference
| Command | Description |
|---|---|
preamp setup | Interactive setup wizard (signup, discovery, schedule) |
preamp status | Check backup status, health, and device info |
preamp backup | Run an immediate backup |
preamp snapshots | List all snapshots with file counts and sizes |
preamp changes | View file changes since a date |
preamp tag "name" | Tag the current snapshot for easy reference |
preamp tags | List all tags |
preamp untag "name" | Remove a tag |
preamp restore-init [id] | Start a restore (sends verification code) |
preamp restore-complete [id] [code] | Complete the restore with verification code |
preamp devices list | List all registered devices |
preamp health | Run a health check on your agents |
preamp suggestions | View smart restore suggestions |
preamp dismiss "id" | Dismiss a suggestion |
preamp verify | Verify backup integrity with HMAC checks |
preamp insights | Get 30-day usage analysis |
preamp webhook-add "url" "events" | Register a new webhook endpoint |
preamp webhooks | List registered webhooks |
preamp webhook-remove "id" | Delete a webhook |
preamp schedule [interval] | Set backup frequency (15min, 30min, hourly, daily) |
preamp feedback "message" | Send feedback or bug reports |
Webhooks
Subscribe to events and receive HTTP POST notifications at your endpoint. See the API reference for webhook CRUD endpoints.
Event Types
| Event | Fires when |
|---|---|
backup-complete | A backup finished successfully |
backup-failed | A backup failed |
restore-complete | A restore finished successfully |
device-added | A new device was registered to the account |
device-revoked | A device was revoked |
health-warning | A health warning was generated |
suggestion-created | A new actionable suggestion was created |
Payload Format
Every delivery is an HTTP POST with Content-Type: application/json.
{
"event": "backup-complete",
"timestamp": "2026-03-25T10:30:00.000Z",
"userId": "usr_abc123",
"data": {
"action": "backup_complete",
"deviceId": "dev_xyz789",
"metadata": {
"snapshotId": "snap_abc123",
"fileCount": 42,
"totalBytes": 1048576
}
}
}
| Event | Metadata fields |
|---|---|
backup-complete | snapshotId, fileCount, totalBytes |
backup-failed | error, snapshotId |
restore-complete | snapshotId, restoredFiles |
device-added | deviceName |
device-revoked | deviceName |
health-warning | warning, severity |
suggestion-created | suggestionId, type, message |
Signature Verification
Always verify the X-Preamp-Signature header before processing a webhook.
Node.js
import crypto from 'node:crypto';
function verifyWebhook(secret, body, signature) {
const expected = crypto
.createHmac('sha256', secret)
.update(body)
.digest('hex');
return crypto.timingSafeEqual(
Buffer.from(signature, 'hex'),
Buffer.from(expected, 'hex'),
);
}
// In your HTTP handler:
app.post('/webhooks/preamp', (req, res) => {
const signature = req.headers['x-preamp-signature'];
const rawBody = req.body; // must be raw string
if (!verifyWebhook(WEBHOOK_SECRET, rawBody, signature)) {
return res.status(401).send('Invalid signature');
}
const payload = JSON.parse(rawBody);
console.log(`Received: ${payload.event}`);
res.status(200).send('OK');
});
Python
import hmac
import hashlib
def verify_webhook(secret: str, body: bytes, signature: str) -> bool:
expected = hmac.new(
secret.encode(), body, hashlib.sha256
).hexdigest()
return hmac.compare_digest(expected, signature)
# In your Flask handler:
@app.route('/webhooks/preamp', methods=['POST'])
def handle_webhook():
signature = request.headers.get('X-Preamp-Signature', '')
raw_body = request.get_data()
if not verify_webhook(WEBHOOK_SECRET, raw_body, signature):
return 'Invalid signature', 401
payload = request.get_json()
print(f"Received: {payload['event']}")
return 'OK', 200
Slack Integration
If your webhook URL points to hooks.slack.com, Preamp automatically formats the payload as a Slack message:
{
"text": "[Preamp Backup] *backup-complete*: `backup_complete` (device: dev_xyz789)"
} Limits & Behavior
| Constraint | Value |
|---|---|
| Max webhooks per user | 10 |
| Max events per webhook | 10 |
| Webhook URL scheme | HTTPS only |
| Max URL length | 2,000 characters |
| Delivery timeout | 10 seconds |
| Retry on failure | No automatic retries |
Deliveries are dispatched asynchronously. Failed deliveries are not retried — use the test endpoint to verify connectivity before subscribing to production events.