Skip to content
CHERT Repatriation

Capabilities

Every capability, and how far along each one is

A migration tool that overstates itself gets found out on someone's live mail server. So this page marks each capability with its real state, including the ones still being built. Nothing is left out to make the list look better.

  • Live shipped, and proven against a real system
  • Proving built and tested, proving itself against real systems now
  • Building being built — do not plan a migration around it yet

Mail migration

Tenants and individual mailboxes.

Mail migration
CapabilityWhat it doesState
Microsoft 365 connectAdmin consent, then the granted permissions shown as a matrix with every missing scope named.Proving
Microsoft 365 discoveryUsers, groups, shared mailboxes, resources and sizes across a tenant.Building
Google WorkspaceDirectory and mailbox migration through a service account you authorise.Building
Gmail per-mailboxOne mailbox with its owner's app password, endpoint fixed by the engine.Live
Generic IMAPA named server, bound before the credential is stored and checked against a network policy.Live
Identity mapping and planSource identity to destination address, with waves, quotas, exclusions and an approval gate.Live
ProvisioningAccounts, aliases, groups, quotas and folder sharing, created idempotently.Live
Credential deliveryOne-time activation links to the old mailbox; no password is ever shown or stored in a report.Live
Wave scheduler and syncimapsync at a pinned upstream version, paced per provider, resumable per mailbox.Live
Settings translationRules to Sieve, out-of-office, signatures.Live
Contacts and calendarsGraph and Google to CardDAV and CalDAV.Building
Verification and signed reportPer-folder counts, 256 bucketed Message-ID digests, flag samples, a second round on disagreements.Live
Cutover and coexistenceDNS and MX on a checklist, forwarding for late mail, a final sweep.Live

Server migration

Whole Ubuntu machines, cloud to your hardware.

Server migration
CapabilityWhat it doesState
InventoryPackages, services, users, databases, volumes and configuration, read from the running source.Live
Compatibility reportWhat will not move, with hard-fail rules rather than warnings nobody reads.Live
Safety snapshotA restore point before anything is built, or the owner's recorded waiver.Live
Destination buildAnsible-built destination, checked against the plan before a byte is synced.Live
Database standbypgBackRest, XtraBackup or logical replication, with lag watched to the second.Live
File sync loopsRepeated passes until both sides match, then a final pass under a short freeze.Live
Server verificationServices, ports, checksums and database row counts compared across the two.Live
Cutover and rollbackDNS or load-balancer switch, cooling period, rollback as a DNS change.Live
Object storageBuckets copied with a checksum per object.Live
A server comes home hereThe destination is your local ChertMail host, not a fresh cloud server.Building

Store migration

Salla to ChertStore.

Store migration
CapabilityWhat it doesState
Merchant API readerCatalogue, customers, orders and coupons, with per-endpoint rate limits and pages kept as evidence.Proving
Bulk export readerAsynchronous exports with a bounded wait, identified by content and not by filename.Proving
Dashboard file ingestCSV and Excel with column mapping, Arabic and Hijri dates, errors by line number.Live
Public storefront readerAllowlisted hosts, every redirect re-checked, signed-in pages refused, robots obeyed.Proving
Immutable stagingContent-addressed, read-only, with provenance per record and a re-hash check.Live
Store normalisationOne canonical model from whichever sources supplied each field.Building
Load into ChertStoreUpsert by external id into Bagisto, so a second run creates nothing.Building
301 redirect mapEvery old product URL mapped from its id, exported as web-server config and probed.Building

Security and evidence

The parts that make a result trustworthy.

Security and evidence
CapabilityWhat it doesState
Content never in the control planeData-plane activities are refused registration on a control-plane worker, at startup.Live
Secrets in a vaultOpenBao leases bound to the job, revoked at close, never in git or a log.Live
Hash-chained ledgerAppend-only, with no second write path, covering every consequential action.Live
Signed verification reportPer-job signing key, chained to the ledger, verifiable after the fact.Live
Permanent revocationDisabling an account raises a version that invalidates every token ever issued to it.Live
Endpoint authorityA source decides where its credential may be sent; a request cannot name a host.Live
Network policyLoopback, private, link-local and metadata addresses refused, on every resolved address and every redirect.Live
Destination conformance suiteThe same contract tests run against the real destination and the fake, including logging in with an issued token.Live

Console and operations

What an operator sees and runs.

Console and operations
CapabilityWhat it doesState
Server dashboardWhat is installed here, whether it answers, what it holds, how much disk is left.Live
A card per sourceEach card carries its own preparation and checks it before a job is created.Live
Mapping and approvalsReview every identity, approve each gate, see what a run would change before it runs.Live
English and ArabicOne codebase, right-to-left as a first-class direction, WCAG 2.1 AA.Live
CLIEvery console action available at a prompt, against the same API.Live
Debian packagingSigned .deb, systemd units, private apt repository, upgrade path.Live
Offline bundleAn install with no network at all, for air-gapped sites.Building
DoctorCheck a host before trusting it with a migration.Live

Start with ten mailboxes.

Run a pilot wave, read the signed report, then move the rest. Nothing at the source changes either way.