Sync a remote directory over SSH. BatchMode=yes only — rsync, then scp. Never a password prompt.
Menu extra for macOS 14+. Lives on the right of the menu bar. No Dock icon.
| Product | DevFS |
| Bundle ID | engineer.badry.devfs |
| Cask | devfs |
| Status item | SF Symbol externaldrive.connected.to.line.below |
| Panel | opaque ~360×420 pt |
| Piece | Behavior |
|---|---|
| Mount | name, user@host, port (default 22), remote path, local folder name. |
| Auth | /usr/bin/ssh -o BatchMode=yes. Permission denied → SSH key auth failed. Add a key for this host. |
| Sync | Sync now pulls down (rsync -az, scp fallback). Local FSEvents push up. A 10s timer also pulls down. |
| Pause | Pause / Resume. Paused ids: UserDefaults engineer.badry.devfs.pausedIds. |
| Local | Trees under ~/Library/Application Support/DevFS/<localName>/. Open in Finder. |
| Log | ~/Library/Application Support/DevFS/log.txt. |
| Empty | No mounts → Open Settings. Settings hint: Add an SSH mount (key-based auth). |
| Login | Open at Login from Settings (SMAppService). |
| File | Use |
|---|---|
DevFS.app.zip |
Homebrew cask / unzip, drag DevFS onto Applications |
brew tap BadryansahBangsawan/mac-menu-apps
brew trust BadryansahBangsawan/mac-menu-apps
brew install --cask devfsbrew trust is required on Homebrew 6 or brew install --cask refuses the tap.
First open (ad-hoc signed):
xattr -cr /Applications/DevFS.app
open /Applications/DevFS.appStill blocked: System Settings → Privacy & Security → Open Anyway.
Do not run dist/DevFS.app while /Applications/DevFS.app is running (same bundle ID).
This is an LSUIElement extra. Proof it is running is the externaldrive.connected.to.line.below status item on the right of the menu bar, not a window from Finder or Launchpad.
- Click that extra. The panel is opaque ~360×420 pt, not a 10px strip.
- If the bar is full, look behind the Control Center overflow chevron «.
- Double-clicking in Finder/Launchpad only changes the left-side app name. That is expected. There is no Dock icon.
- Settings → Add mount (Name,
user@host, Port, Remote path, optional Local folder name) → Save mount. - Local files live under
~/Library/Application Support/DevFS/<localName>/. - Sync now pulls down. Pause / Resume, Open in Finder, Delete on each row.
- Resolve / SSH / rsync errors show as a red banner. Last sync line:
Last sync — neveruntil a run succeeds. - Settings at the bottom of the panel (and Open Settings on the empty state).
Password auth is unsupported. Add a key for the host (ssh-copy-id or equivalent) before Sync now.
No TCC prompts. This is process-based ssh / rsync / scp, not a File Provider extension.
| What | Where |
|---|---|
| Mounts | ~/Library/Application Support/DevFS/mounts.json |
| Local trees | ~/Library/Application Support/DevFS/<localName>/ |
| Sync log | ~/Library/Application Support/DevFS/log.txt |
| SSH control path | ~/Library/Application Support/DevFS/.ssh-%C |
| Paused mounts | UserDefaults engineer.badry.devfs.pausedIds |
| Open at Login | SMAppService.mainApp (Settings toggle) |
Decode failure → empty list plus a red banner. The extra does not crash.
SSH only, BatchMode=yes. No passwords stored. Hosts and paths stay on this Mac except the SSH session you start.
brew uninstall --cask devfsOr delete /Applications/DevFS.app. Then:
rm -rf "$HOME/Library/Application Support/DevFS"Turn off DevFS in System Settings → General → Login Items if it remains.
| What you see | What to do |
|---|---|
| Finder “opens” nothing / no Dock icon | Click the externaldrive.connected.to.line.below extra on the right of the menu bar. |
| Extra missing | Overflow «, or pgrep -x DevFS then open /Applications/DevFS.app. |
| “Damaged” / cannot verify | xattr -cr /Applications/DevFS.app. spctl --assess is rejected even when it runs. |
brew install --cask refuses the tap |
brew trust BadryansahBangsawan/mac-menu-apps |
| SSH key auth failed. Add a key for this host. | ssh user@host with a key. BatchMode=yes will not prompt for a password. |
| No mounts | Add a mount in Settings. |
| Paused | Resume on that row, or it will not sync. |
| ~10px empty strip under the bar | Reinstall from this repo. |
git clone https://github.com/BadryansahBangsawan/devfs.git
cd devfs
swift build -c release --product DevFS
bash package-app.sh
open dist/DevFS.appTag v* runs CI: DevFS.app.zip. Never commit dist/.
Layout: Sources/ (SwiftPM executable), Info.plist, Assets/AppIcon.icns, package-app.sh. FunTheme.swift is copied verbatim (no shared package).
Why is there no Dock icon?
It is a menu extra. Click the externaldrive.connected.to.line.below item on the right of the menu bar.
Will it ask for an SSH password?
No. BatchMode=yes fails instead. Add a key for that host first.
Where do local files land?
~/Library/Application Support/DevFS/<localName>/.
How do I stop it opening at login?
Settings in the panel, or System Settings → General → Login Items → DevFS.