Skip to content

Latest commit

 

History

100 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

omnigate

Migrate to Omarchy. Natively.

omnigate logo

Status: Alpha License: MIT CI

omnigate moves a full OS setup — apps, configs, user data, even a 1 TB game library — from Linux, macOS, or Windows to Omarchy, without treating migration as a file copy.

Why it's different

Copying a terabyte is the boring way. omnigate is built on three layers that treat migration as a mount, then a smart sync, then a manifest:

Layer What it does The world-breaking bit
1 — Union mount Mount the old disk read-only as an overlayfs lower layer under the new OS Data appears at its new path with ZERO copy. Steam games launch immediately. Migration = a mount entry, not a copy.
2 — Differential sync Copy only what changed, skip what's re-downloadable Reflink-first (btrfs/XFS CoW — near-instant, no duplicate space). 1 TB "migration" becomes a small copy of what matters.
3 — Declarative manifest Describe the whole machine (apps, configs, data, library) as a rebuildable manifest Migration stops being a thing — the machine is the manifest.

Plus a two-sided export/import (Win2Linux-style) for apps + configs:

  • Source side (old machine): detect installed apps, collect configs, build a package
  • Target side (fresh Omarchy): map to Omarchy targets — deferring to Omarchy on everything it already provides — port configs, generate a Home Manager profile fragment for Reverb-OS

Status

0.2.0 — on-ramp wizard, OSR peer-to-peer replication, atomic import with rollback, Stage-0 audit, 213/213 tests green.

Capability Status
Source detection (Linux/macOS/Windows) scanner/detect.py
App mapping + defer rule mapper/map.py
Compatibility gate mapper/compat.py
Config porting mapper/port_configs.py
HM profile generator generator/gen_hm.py
Export/import CLI migrate.py
Atomic two-phase import + rollback txn.py
Flet on-ramp wizard app.py
OSR P2P replication (share/pull via QR) replicate.py
Stage-0 audit (auto-detect OS + storage) audit.py
Union mount / Ghost Drive mount.py
Differential sync sync.py
Credential tiering (age) creds.py
Bootstrap launcher bootstrap.py
Cluster orchestration orchestrate.py

See docs/ for architecture, CHANGELOG.md for history.

Quick start

# 1. On the OLD machine — launch the wizard
python3 bootstrap.py wizard
# Or: export a package directly
python3 bootstrap.py export --os linux --out my-setup.zip

# 2. On the fresh Omarchy box — import
python3 bootstrap.py import my-setup.zip --dry-run
python3 bootstrap.py import my-setup.zip --yes

# 3. Or: share your setup to a friend over the LAN
python3 bootstrap.py replicate share --dir ~/.config
# Friend pulls:
python3 bootstrap.py replicate receive http://YOUR_IP:5317/omarchy-setup-manifest.json

# 4. Verify the environment
python3 bootstrap.py doctor

Cross-platform

omnigate runs on the source machine on all three OSes — Windows and macOS included, not just as detection targets. The export side produces git-committable artifacts (machine.json, plan.md) on any OS, and git is the backbone: every machine gets a git repo of its migration state.

Three launchers ship with the repo — all stdlib, no third-party deps:

File OS Notes
omnigate.sh macOS / Linux POSIX sh; finds python3, delegates to bootstrap.py
omnigate.ps1 Windows PowerShell ships with Windows; finds py -3 / python, delegates to bootstrap.py
bootstrap.py all three finds Python 3 + git, prints install instructions if missing, runs the command

Windows

# PowerShell wrapper (built into Windows — no extra install)
powershell -ExecutionPolicy Bypass -File omnigate.ps1 --help
powershell -ExecutionPolicy Bypass -File omnigate.ps1 export --os windows --out my-setup.zip
powershell -ExecutionPolicy Bypass -File omnigate.ps1 doctor

# Or straight through the py launcher (Python 3.9+ required)
py -3 bootstrap.py export --os windows --out my-setup.zip

Requirements on Windows: git (install Git for Windows — default options put it on PATH) and Python (https://www.python.org/downloads/windows/, tick Add python.exe to PATH, or the Microsoft Store python3 app). bootstrap.py checks both and prints these links if either is missing.

macOS

./omnigate.sh export --os macos --out my-setup.zip

Requirements: xcode-select --install provides both python3 and git; or install from python.org / brew install python and brew install git.

Linux

./omnigate.sh export --os linux --out my-setup.zip
# or directly:
python3 bootstrap.py export --os linux --out my-setup.zip

Check the environment on any OS:

python3 bootstrap.py doctor    # prints python + git locations/versions

The wrappers run from the repo root so relative imports resolve regardless of where they are invoked; command exit codes pass through (3 = missing toolchain, 2 = bad command/usage, 0 = success). mount.py is Linux-target only (overlayfs + root).

Architecture

SOURCE (old machine)                    TARGET (fresh Omarchy)
────────────────────                    ─────────────────────
detect apps ──┐                         import: map (defer rule)
collect configs│  ── package.zip ──▶       compat gate
              │                          port configs
              └── old disk ──mount──▶   generate HM profile
                                        union mount (zero copy)
                                        differential sync

Governing rule

If Omarchy has a supported way to provide or configure something, defer to Omarchy. Never guess an unknown app — flag it for review.

This is what keeps omnigate additive: it never fights Omarchy, never duplicates what Omarchy ships, and only carries what the user's system genuinely adds on top.

Beautiful & fast

Beautiful. python3 tui.py is a terminal UI with a command picker, a color-coded migration-plan review (green = copy, blue = defer, yellow = unknown), and a real-time progress bar with ETA. Box-drawn, ANSI-colored, works on any terminal; degrades to plain text when not a TTY.

Fast. See PERF.md for the full design. The skip-ladder is the #1 optimization: mount > reflink > skip > dedup > hash-delta — the tool moves 20 GB, not 1 TB. The Rust core (core/) adds blake3 parallel hashing (12× sha256) and reflink-first copies (0 bytes streamed), with a portable Vulkan-compute GPU backend (CUDA/ROCm/SYCL feature-gated).

Development

omnigate is AI-built: agents design and write the code, curate the mapping database, and tune the algorithms. The shipped runtime is deterministic and hyper-optimized — no LLM calls at runtime.

python3 scanner/detect.py --os linux --json   # detect apps
python3 mapper/map.py scan.json               # classify (defer/map/unknown)
python3 mapper/port_configs.py map.json       # port configs (dry-run safe)
python3 generator/gen_hm.py map.json          # emit HM profile fragment
python3 sync.py <src> <dst> --dry-run         # differential sync

License

MIT

About

Source-OS → Omarchy migration tool (nixos-anywhere-capable): detect apps, map to Omarchy targets deferring to Omarchy, port configs, generate HM profile

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages