Skip to content

Browser UI: Import / Restore a graph from an RDB dump (local upload + S3 URL) #1802

Description

@shubham21155102

Summary

The FalkorDB Browser today supports exporting a graph (/api/graph/[graph]/export) but has no symmetric import / restore path. Operators who already have an RDB dump — produced by BGSAVE, the Browser's own Export, KubeBlocks backup, or a teammate — have to drop out of the UI and into shell + Docker volume mounts to restore it.

This issue proposes a first-class "Restore graph" flow in the Browser, supporting two sources:

  1. Local file upload — pick a .rdb / .dump from disk in the Browser
  2. Remote URL — paste an s3://…, https://…, or presigned URL

Motivation / why this is genuinely missing

  • Existing users running self-hosted FalkorDB (Docker, bare metal, KubeBlocks) keep RDB snapshots in object storage (S3, GCS, R2, MinIO). Restoring one today requires:
  • The Browser already owns the "graph lifecycle" UX (create, duplicate, delete, export). Restore is the obvious missing verb.
  • Docs (Browser, Migration) currently send users to Docker volume tricks for a flow that should be a button.
  • Related: KubeBlocks already wires S3 BackupRepo on the ops side (docs) — there's no in-Browser equivalent.

Proposed UX

On the graph list / graph management screen, next to Export Data, add Restore Graph:

Proposed implementation sketch

  • New API route: app/api/graph/[graph]/restore/route.ts
    • POST multipart for upload
    • POST JSON { "source": "s3://bucket/key", "credentials": {...} } for URL
  • Server-side:
    • Stream the dump to a temp file (or in-memory for small dumps)
    • Use RESTORE for individual graph keys when feasible, or invoke DEBUG RELOAD / a new GRAPH.RESTORE primitive (paired core request to follow, will cross-link)
    • For S3: support both static IAM keys (form) and presigned URLs (no creds needed); never persist credentials
  • Tests: round-trip — Export → Restore → query parity
  • Docs: add a "Restore via Browser" section to docs.falkordb.com/browser

Out of scope (separate issues if wanted)

  • Scheduled / recurring restores
  • Multi-graph bulk restore
  • Non-RDB formats (CSV/Parquet — already covered by FalkorDBImporter)

Willing to contribute

Happy to open a draft PR against falkordb-browser for the upload + presigned-URL path first, then layer s3:// with credentials once API shape is agreed. Would appreciate maintainer input on:

  1. Preferred restore primitive on the core side (RESTORE per key vs. a new GRAPH.RESTORE accepting a URL) — will file paired issue in FalkorDB/FalkorDB
  2. Whether S3 creds should live in the Browser session or be passed per-request only

Metadata

Metadata

Assignees

Labels

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions