Migración

Hosted ↔ self-host migration

Export and import agency data, then optionally migrate S3 files.

ClaudeChatGPTCursor

Felagar includes a full Data migration tool under Settings → Data (owner/admin).

What is exported

Relational workspace data in a versioned felagar-export zip:

  • Agency profile, accounts (no passwords / TOTP), companies, projects
  • Kanban, designs metadata, files/folders metadata, tickets, chat, pipeline, time entries
  • Optional files-manifest.json with temporary download URLs for blobs

Never exported: password hashes, TOTP secrets, OAuth tokens, Stripe IDs, integration secrets.

Imported users are created as invited so they can set a new password.

Hosted → self-host

  1. On hosted: Settings → Data → Start export (enable file transfer manifesto).
  2. Download the zip when the job completes.
  3. On self-host: finish bun setup, sign in as owner.
  4. Settings → Data → Import the zip (merge on a fresh install).
  5. After import completes, click Migrate files to pull blobs via temp URLs into your S3.

Self-host → hosted

Same flow in reverse. SaaS plan limits still apply on import.

API

You can also drive exports via the public API (see API docs):

curl -X POST "$API/v1/migration/exports" \
-H "Authorization: Bearer fel_..." \
-H "Content-Type: application/json" \
-d '{"includeFiles":true}'
await fetch(`${API}/v1/migration/exports`, {
method: 'POST',
headers: {
  Authorization: `Bearer ${apiKey}`,
  'Content-Type': 'application/json',
},
body: JSON.stringify({ includeFiles: true }),
})
import requests
requests.post(
f"{API}/v1/migration/exports",
headers={"Authorization": f"Bearer {api_key}"},
json={"includeFiles": True},
)