Files
Pulse/docs/MIGRATION.md
rcourtman 7db6b3e47d feat: Add AI chat session sync across devices
Implements server-side persistence for AI chat sessions, allowing users
to continue conversations across devices and browser sessions. Related
to #1059.

Backend:
- Add chat session CRUD API endpoints (GET/PUT/DELETE)
- Add persistence layer with per-user session storage
- Support session cleanup for old sessions (90 days)
- Multi-user support via auth context

Frontend:
- Rewrite aiChat store with server sync (debounced)
- Add session management UI (new conversation, switch, delete)
- Local storage as fallback/cache
- Initialize sync on app startup when AI is enabled
2026-01-08 10:47:45 +00:00

3.3 KiB

🚚 Migrating Pulse

This guide covers migrating Pulse to a new host using the built-in encrypted export/import workflow.

🚀 Quick Migration Guide

DON'T: Copy Files

Never copy /etc/pulse (or /data in Docker/Kubernetes) manually. Encryption keys and credentials can break.

DO: Use Export/Import

1. Export (Old Server)

  1. Go to Settings → System → Backups.
  2. Click Create Backup.
  3. Enter a strong passphrase and download the encrypted backup.

2. Import (New Server)

  1. Install a fresh Pulse instance.
  2. Go to Settings → System → Backups.
  3. Click Restore Configuration and upload your file.
  4. Enter the passphrase.

📦 What Gets Migrated

Included Not Included
Nodes & credentials Historical metrics history (metrics.db)
Alerts & overrides Browser sessions and local cookies
Notifications (email, webhooks, Apprise) Local login username/password (.env)
System settings (system.json) Update history/backup folders
API token records
OIDC config
Guest metadata/notes
Host metadata (notes/tags/AI command overrides)
Docker metadata cache
Agent profiles and assignments
AI settings and findings (ai.enc, ai_findings.json, ai_patrol_runs.json, ai_usage_history.json)
Pulse Pro license (license.enc)
Server sessions (sessions.json)
Update history (update-history.jsonl)

🔄 Common Scenarios

Moving to New Hardware

Export from old → Install new → Import.

Docker ↔ Systemd ↔ Kubernetes

The export file works across all installation methods. You can migrate from Docker to Kubernetes or vice versa seamlessly.

Disaster Recovery

  1. Install Pulse using Docker or your preferred method (see INSTALL.md).
  2. Import your latest backup.
  3. Restored in < 5 minutes.

📋 Post-Migration Checklist

Because local login credentials are stored in .env (not part of exports), you must:

  1. Re-create Admin User: If not using .env overrides, create your admin account on the new instance.
  2. Confirm API access:
    • If you created API tokens in the UI, those token records are included in the export and should continue working.
    • If you used .env-based API_TOKENS/API_TOKEN (legacy), reconfigure them on the new host or re-create tokens in the UI.
  3. Update Agents:
    • Unified Agent: Update the --token flag in your service definition.
    • Containerized agent: Update PULSE_TOKEN in the agent container environment.
    • Tip: Use Settings → Agents → Installation commands to generate updated install commands.
  4. Pulse Pro: Re-activate your license key after migration (license files are not included in exports).

🔒 Security

  • Encryption: Exports are encrypted with passphrase-based encryption (PBKDF2 + AES-GCM).
  • Storage: Safe to store in cloud backups or password managers.
  • Passphrase: Use a strong, unique passphrase (min 12 chars).

🔧 Troubleshooting

  • "Invalid passphrase": Ensure exact match (case-sensitive).
  • Missing Nodes: Verify export date.
  • Connection Errors: Update node IPs in Settings if they changed.
  • Logging: Adjust LOG_LEVEL/LOG_FORMAT via environment variables if needed.