ship.md — Moving things in the real world, as easy as moving files

3 min read Original article ↗

filesystem → real world

ship.md watches your folders. Drag a file, run mv, or ask an agent in plain English — and a courier is dispatched with a full audit trail.

Download SourceHow it works

~/ship — Send skateboard home

$ mv eg1/office/skatebrd.txt eg1/home/

eg1/office/skatebrd.txt → eg1/home/skatebrd.txt

POSTapi.uber.com/v1/eats/deliveries/orders202 accepted · courier dispatched

skatebrd.txt is on its way — eta 18 min

drag & drop

Your Finder is the interface.

Drop a file into another folder and a courier is on its way. Nested paths keep semantic context.

  • Move skatebrd.txt from office/ → home/ ships it home
  • Drop eggs.txt into italian/ restocks the kitchen
  • Every move writes a JSON event to the audit log

how it works

Three ways to ship. One mental model.

Your filesystem already knows where things are. ship.md just makes the outside world catch up.

1. Model the world as folders

Each folder is a place — home, office, warehouse, cloud-kitchen. Nesting is meaning.

2. Files are things

skatebrd.txt, laptop.jpg, winter-clothes.txt. If it's in a folder, it's at that location.

3. Move to ship

Drag, mv, or ask an agent. The watcher turns filesystem events into courier calls.

three ways to move

Use whatever interface you already know.

After installing the mac app, ship.md works with Finder, Terminal, and any coding harness that can touch files.

Drag & drop in Finder

Move files between folders the way you always have. ship.md watches the filesystem and turns every drop into a delivery event.

skatebrd.txt → home/

mv in your shell

Any mv, cp, or rsync that lands in a watched folder becomes a real-world move with an audit trail.

mv office/skatebrd.txt home/

Ask your coding harness

agent, Codex, Claude, Pi, Arc — any agent that can move files can now ship things. Same filesystem, same result.

move skateboard from home to office

aagent

CCodex

CClaude

πPi

AArc

ship.md

Every folder can hold a ship.md

A tiny markdown manifest tells the watcher what lives there, who to notify, and where in the world it is. Context flows down the tree.

Inventory

Declare what belongs in this folder. Incoming files are matched against it.

Contacts

email · whatsapp · call — reached automatically on relevant events.

emailwhatsappcall

Context

location, area, google_pin. Inherited by all nested folders unless overridden.

Webhook

url · method · headers · params — fired on every matching event with folder context templated in.

POSTheadersparams

agent / codex

Or just ask, in plain English.

agent plans, executes, and shows you the audit trail. Same result — a real move with receipts.

U

move my skateboard from home to office, and show the audit trail it created

skillmacos-file-routing-tray-apps0.0s

execimport json, subprocess0.2s

Current file state

· /Users/bosky/ship/eg1/home/skatebrd.txt: gone

· /Users/bosky/ship/eg1/office/skatebrd.txt: exists

self-host

self host or on-prem or managed portal

SQLite inventory, config, and audit log visibility for the watcher service. Runs on your machine.

add your own

Any webhook or logistics API.
Same ship.md

Click a provider to see the ship.md manifest ship.md generates. Same folder, different destination — swap the webhook, keep the audit trail.

endpoint

POST

https://api.uber.com/v1/customers/{customer_id}/deliveries

auth

Bearer

: ${UBER_API_TOKEN}

  • Drop url, method, headers in ship.md
  • Secrets stay in env — ${TOKEN} interpolated at dispatch
  • Works with any REST endpoint — courier, checkout, fulfillment, returns