Skip to content

Config Backup & Restore

Config Backup & Restore is the single round-trip for moving authored config in and out of a scope: back up the current config for one scope (snapshot + download), or restore a bundle by uploading it, previewing a structured diff against the current config, and replaying it into a target scope. It is single-scope and secret-free — provider credentials are never exported, and a restore never merges across deployment units. This panel also replaces the former standalone Config Export and Config Import pages, which are now one surface.

The Config Backup & Restore panel in the admin console, showing the scope picker, the backup snapshot manifest with per-domain object counts, and the restore upload/diff/replay flow.
System → Config Backup & RestoreCitadel synthetic data on a non-production Arbitex demo instance. Never client data.
  1. Open System → Config Backup & Restore and choose a ScopeAccount-wide or a specific deployment unit.

  2. The Backup snapshot card auto-loads a preview for that scope: a “what’s included” manifest (webhooks, usage quotas, budget allocations, retention policies, chain templates, group features, model guidance, advanced settings, and any other authored domain) with a live per-domain object count.

  3. Click Capture snapshot to refresh the preview, then Download .json to save the bundle locally.

  4. To restore, drop a previously exported .json bundle into the Restore from a backup card. The bundle is parsed and validated — a mismatched schema version or any credential field is rejected before anything is replayed.

  5. Review the structured diff between the uploaded bundle and the current scope, then click Replay bundle and confirm in the dialog.

  6. If the replay succeeds, a Rollback available panel lets you Revert to previous configuration — the snapshot captured just before the replay, replayed back as one further revision. If the replay fails, this rollback runs automatically, re-asserting your prior configuration; if the automatic rollback also fails, download the pre-restore snapshot to recover manually.

  7. Use Revision history to see every immutable revision the store retains for the scope, and the collapsible Compare backups section to diff any two revisions read-only, without restoring either.

Capture a secret-free snapshot for a scope (du_id: null = account-wide):

Terminal window
curl -X POST "https://admin.arbitex.ai/api/v1/admin/system/config-backup/snapshot" \
-H "Authorization: Bearer $ADMIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{"du_id": null}'
# → { "objects": [ { "domain": "webhooks", "object_key": "...", "payload": { ... } }, ... ] }

Replay a bundle into a target scope as one new revision:

Terminal window
curl -X POST "https://admin.arbitex.ai/api/v1/admin/system/config-backup/restore" \
-H "Authorization: Bearer $ADMIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{"target_du_id": null, "bundle": { "objects": [ ... ] } }'
# → { "revision": 12, "object_count": 8, ... }

List the immutable revisions retained for a scope:

Terminal window
curl -X POST "https://admin.arbitex.ai/api/v1/admin/store/revisions/list" \
-H "Authorization: Bearer $ADMIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{"du_id": null}'

Config backup and restore is available on every plan. The deployment-unit scope picker only shows units your account actually has — the server validates any target scope against your account regardless of what a client sends.

On a Hybrid Outpost, a snapshot and restore operate against that deployment’s own control-plane store — a bundle exported from one Outpost is not automatically portable to another unless you intentionally target it as the restore scope. In an air-gapped deployment, the backup/restore flow works entirely offline: both capture and replay are local API calls with no external dependency.