Backed by mandō

Every file
deserves a
destination.

Portage is the intentional file movement platform built by two founders who believe relocating data should feel as considered as writing it. Rename with care. Move with purpose. Arrive with confidence.

See it in action
📄
/drafts/letter.md
portage
📄
/sent/letter.md
"For decades, the act of moving a file has been treated as an afterthought — a blunt operation buried in documentation nobody reads. We founded Portage because we believe relocation is a creative act. Every rename is a rebirth. Every move across filesystems is a migration story. When you choose where something lives, you are making a statement about your values, your architecture, and your taste. We built Portage for people who understand that the journey matters as much as the destination."

— The Portage Founders

Crafted with care.
Every flag tells a story.

We obsessed over every detail so your files arrive exactly where they belong, exactly how you intended.

🤝

Intentional Transitions™ -i

Every move is a conscious choice. Our interactive confirmation mode prompts you before any overwrite, ensuring no file is displaced without your explicit, thoughtful consent. Move with presence.

Decisive Action™ -f

For moments when you know exactly what you want. Force mode moves with conviction — no prompts, no hesitation, no looking back. Sometimes the kindest thing is a clean, swift transition.

🛡️

Preservation Mode™ -n

Honour what already exists. No-clobber ensures that existing destination files are never overwritten. A quiet act of respect for the work that came before yours.

🔄

Thoughtful Refresh™ -u

Only move when it matters. Update mode considers timestamps and only relocates files that are genuinely newer than their destination counterparts. Efficiency with empathy.

📖

Transparent Journey™ -v

Every relocation narrated as it happens. Verbose mode tells the full story of each file's passage — source, destination, and the quiet transformation in between.

🪢

Safety Net™ -b / --backup

Before any destination file is displaced, Portage creates a backup — numbered, simple, or contextual. Because every file deserves a second chance, and every team deserves peace of mind.

🔀

Seamless Swap™ --exchange

Exchange source and destination in one graceful, atomic operation. Two files trading places — no temporary names, no intermediate states. Just a clean, elegant exchange.

Three moments. One journey.

Portage distills the act of relocation into its most essential form.

1

Choose Your Origin

Select the file or files you wish to relocate. Portage respects your source — reading its permissions, its history, its context — before anything changes.

2

Set Your Intention

Decide how this move should feel. Interactive? Forced? With a backup? With verbose narration? Compose your flags like an artisan selects their tools.

3

Arrive

Your file lands at its destination — renamed, relocated, or moved across filesystems entirely. Portage handles the heavy lifting: the unlinking, the copying, the cleanup. You just choose where.

Watch the journey unfold.

Real commands. Real output. Every file finds its place.

Simple Rename
$ portage draft.md final.md
renamed 'draft.md' -> 'final.md'
Intentional Transitions + Verbose
$ portage -iv proposal.pdf ~/sent/
portage: overwrite '/home/dev/sent/proposal.pdf'? y
renamed 'proposal.pdf' -> '/home/dev/sent/proposal.pdf'
Safety Net Backup
$ portage -bv --suffix=.bak config.yml /etc/app/
renamed 'config.yml' -> '/etc/app/config.yml' (backup: '/etc/app/config.yml.bak')
Bulk Relocation with Target Directory
$ portage -v -t /archives/ report.pdf invoice.csv notes.md
renamed 'report.pdf' -> '/archives/report.pdf'
renamed 'invoice.csv' -> '/archives/invoice.csv'
renamed 'notes.md' -> '/archives/notes.md'

0M+

Files relocated with intention

0%

Backup restoration success rate

0

Distinct movement flags available

0

Files lost in transit

Built by people who care
where things end up.

Three founders, one shared conviction: file movement deserves better.

Dina Whitmore

Dina Whitmore

Co-Founder & CEO

Former filesystem engineer at a storage company. Left to build something with soul. Believes every rename is a small act of authorship.

Kieran Sato

Kieran Sato

Co-Founder & CTO

Cross-filesystem move specialist. Wrote his thesis on atomic rename operations. Keeps a journal of every file he has ever relocated.

Adaeze Mwangi

Adaeze Mwangi

Co-Founder & Head of Design

Information architect turned movement designer. Obsessed with the emotional weight of where files live. Makes the backup suffix feel personal.

Honest pricing for honest movement.

Start with intention. Scale with confidence.

Wanderer

$0 / mo

For individuals taking their first steps with intentional file movement.

  • Basic rename (SOURCE → DEST)
  • Move to directory
  • Verbose narration (-v)
  • Interactive confirmation (-i)
  • Backup creation (-b)
  • Cross-filesystem moves

Studio

$39 / seat / mo

For teams that need backups, bulk moves, and full control.

  • Everything in Artisan
  • Safety Net™ backups (-b / --backup)
  • Custom backup suffix (--suffix)
  • Decisive Action™ force mode (-f)
  • Target directory mode (-t)
  • No-target-directory mode (-T)
  • Priority support

Atelier

Custom

For organisations where every file placement is mission-critical.

  • Everything in Studio
  • Seamless Swap™ (--exchange)
  • Debug mode (--debug)
  • No-copy fallback (--no-copy)
  • SELinux context setting (-Z)
  • Numbered backup control
  • Dedicated onboarding
  • 99.99% SLA

Words from people who
move things with care.

"We switched our entire deploy pipeline to Portage and haven't looked back. The backup mode alone has saved us from three incidents where config files would have been silently overwritten. There's something beautiful about a tool that asks before it acts."

Henrik Sjoberg
Henrik Sjoberg
Lead SRE, Canopy Systems

"The --exchange flag changed how I think about file organisation. Swapping two files used to require a temporary name, careful sequencing, and a prayer. Portage makes it atomic. It's the kind of detail that shows the founders actually use their own product."

James Choi
James Choi
Staff Engineer, Fireside Analytics

"I run Portage with -iv on everything. Verbose plus interactive means I see every move narrated and I confirm every overwrite. It's slower, sure, but it's intentional. And intentional is exactly what our compliance team requires."

Noah Holloway
Noah Holloway
VP of Infrastructure, Trellis Health

"The update mode (-u) is underrated. We have a nightly job that only moves files if they're newer than what's already at the destination. No wasted writes, no unnecessary churn. Portage respects both your source and your destination."

Lucas Kirkland
Lucas Kirkland
Founding Engineer, Hearth Labs

Small batches. Shipped with care.

We build in the open and release when it's ready — not when the sprint ends.

v3.2.0

New Seamless Swap Mode

Introducing --exchange — atomically swap two files without any intermediate state. The most requested feature from our Studio users, now available across all paid tiers.

v3.1.0

Improved Debug Narration Engine

The --debug flag now produces richer output explaining exactly how each file is being relocated — whether via rename, cross-device copy, or fallback path. Implies verbose mode for complete transparency.

v3.0.0

Fix Update Mode Precision

Refined --update to support granular control: all, none, none-fail, and older modes. Skipped files in none mode no longer produce false failure exit codes. Intentional movement, precisely controlled.

Questions we get asked
over coffee.

By default, Portage overwrites the destination. But we believe you should choose your own path. Use -i for interactive confirmation, -n for no-clobber (never overwrite), or -b to create an automatic backup before any displacement. If you specify more than one of -i, -f, or -n, only the final one takes effect.
Absolutely. When a simple rename isn't possible — say, moving between mounted volumes — Portage gracefully falls back to copying the data and then removing the source. The --no-copy flag is available if you want to restrict movement to same-filesystem renames only. Either way, you're in control.
When you enable Safety Net mode, Portage appends a ~ suffix to any displaced destination file by default. You can customise this with --suffix=.bak (or any string you prefer). For version-controlled environments, use --backup=numbered to create sequentially numbered backups like file.txt.~1~, file.txt.~2~, and so on.
The -t (target directory) flag lets you specify the destination directory first, then list multiple sources — ideal for scripting and piped inputs. The -T (no-target-directory) flag does the opposite: it treats the destination as a normal file, not a directory, even if a directory by that name exists. Think of -t as "move everything here" and -T as "this name is the name, not a folder."
Portage was built for production. The combination of -n (no-clobber) for safety, -u (update) for efficiency, and --backup for recovery makes it the most reliable file movement platform available. Add --debug for full observability into every operation. Our Atelier tier includes an SLA and dedicated support for mission-critical workflows.

See mandō's portfolio

The accelerator behind the tools that run the internet.