Douklar 4.0.0, 23 October 2026.A new CLI, douklar, and retry of unfinished objects from a finished S3 Batch job.Read the release notes

Douklar

Quick start: your first move

From install to a recorded run in Activity, one S3 bucket from one account to another, in about ten minutes.

View as Markdown

Note. The Douklar source repository is not public yet. This page follows the install for those who have a copy.

This page moves one S3 bucket from a source account to a destination account with the web console. Each step links the page that covers it in full. The screens below are the real console with sample accounts and buckets.

What you need

  • A Linux x86_64 host with Docker and Docker Compose.
  • A Chromium-based browser at desktop width.
  • Two AWS accounts you can reach, each with access keys or an IAM Identity Center (SSO) session, and a destination bucket that already exists.

1. Install and open the console

From the repository root:

./install.sh local

When it finishes, open http://127.0.0.1:5566. The command checks Docker, writes .env, starts PostgreSQL, the bundled ZITADEL sign-in, the backend and the sync worker, and prints the local sign-in details. Install locally lists the other ways to install.

Douklar console Installation page: a local deployment with bundled ZITADEL sign-in, install state complete, and how to reconfigure it.Douklar console Installation page: a local deployment with bundled ZITADEL sign-in, install state complete, and how to reconfigure it.
Installation: how this deployment is configured and how to change it. Sample data.

2. Sign in

Sign in on the bundled ZITADEL login with the details the install printed. An install with AUTH_MODE=none skips this screen and signs you in as the one local admin; that mode is for a single person on one machine.

3. Add the two accounts

Open Accounts and press Add account twice: one profile for the source account, one for the destination. Each profile then needs credentials: press Set up auth and add access keys, or sign in to IAM Identity Center from the console. Douklar checks each account with AWS STS.

Douklar console Accounts page: two sample accounts, production and dr, each waiting for keys or an SSO session before it can be used.Douklar console Accounts page: two sample accounts, production and dr, each waiting for keys or an SSO session before it can be used.
Accounts: one profile per AWS account, here before keys or SSO are set up. Sample data.

More: Accounts and credentials.

4. Find the bucket

Open Resources. Choose the source and destination profiles under Account scope, then press Refresh AWS to list the source account's buckets. Douklar keeps the list, so the next visit can use Load cached.

Douklar console S3 inventory: the production to dr scope, a bucket catalog with three sample buckets in eu-west-1, and the source profile health.Douklar console S3 inventory: the production to dr scope, a bucket catalog with three sample buckets in eu-west-1, and the source profile health.
S3 inventory: the buckets in the source account, ready to map. Sample data.

5. Map it

Tick the bucket and create a mapping from it. Open Mappings to check the pair: source bucket, destination bucket (the name may differ) and the app the mapping belongs to.

Douklar console Mappings page: tabs per service and a table of ECR mappings.Douklar console Mappings page: tabs per service and a table of ECR mappings.
Mappings: one table per service, renames allowed. Sample data.

More: Discovery and mappings.

6. Check, review, run

Open Sync and choose the scope. Preflight runs first and reads both sides: whether the destination exists, how the encryption keys compare, whether the credentials last through the run. Problems show here, with the exact statement for the other account's admin when a permission is missing.

Review lists what will be written. Press Run to queue one run; the sync worker picks it up and the logs stream live.

Douklar console Sync page: a Scope, Review, Run stepper with a cross-account source account and one selected target account.Douklar console Sync page: a Scope, Review, Run stepper with a cross-account source account and one selected target account.
Sync: choose the scope, review the plan, run it. Sample data.

More: Preflight and Review, Running a sync.

7. Read the record

Open Activity. The run is listed with its route, outcome and duration. Its record holds the counts per service (attempted, succeeded, skipped, failed), the logs and the outcome of each object. Retry failed repeats only what failed.

Douklar console Activity page: completed and failed runs with start time, route and duration.Douklar console Activity page: completed and failed runs with start time, route and duration.
Activity: every run, newest first, with its route and outcome. Sample data.

More: Activity and evidence.

The same move from a terminal

With a config file that holds the mapping under an app named my-app:

douklar sync plan --service s3 --app my-app
douklar sync run --service s3 --app my-app

sync plan prints the plan and writes nothing. More: The douklar CLI.

Next

Keyboard shortcuts

g h
Home
g c
The console
g m
Use cases
g d
Docs
g r
Releases
/ or Ctrl K
Search the docs (on docs pages)
t
Switch light and dark
?
Show this list