velcro

Keeps your network shares mounted.

velcro is a small menu bar app for macOS. When Wi‑Fi drops, your Mac sleeps, or you change networks, it quietly reconnects your SMB and NFS shares.

Version 0.11.0 · macOS 13 or later · Apple silicon and Intel · Free and open source

In the menu bar

Shares are grouped by server. Open one in Finder, reconnect it, or remove it. Pause velcro when you want an ejected share to stay ejected.

The velcro menu open in the macOS menu bar: three shares on nas.local attached, Time Machine on backup.local not attached

How it works

Also in the menu

From recorder to notes

Import is the first step. On a server that sees your recordings folder, velcro recordings run takes every imported recording the rest of the way, one step at a time, from a timer.

  1. 1
    ImportPlug in the recorder. Each recording lands in your folder, checked byte for byte, with a line in .velcro-import.jsonl.
  2. 2
    TranscribeThe file is checked against that line, then turned into text by the engine you pick. There's no default: a local speech recognizer on your own machine is the usual choice for meetings, and claude or codex (your own login) is there for short memos.
  3. 3
    TidyYour command gets the text and writes notes, a summary, to-dos, whatever you keep.
  4. 4
    DeliverYour command hands each part to whoever should have it. velcro never decides who that is; your script does.
velcro set recordings.dir /mnt/nas/me/recordings
velcro set recordings.engine "whisper-cli -nt -f"   # or claude
velcro set recordings.tidy ~/bin/tidy-recording
velcro set recordings.deliver ~/bin/deliver-recording
velcro set recordings.since $(date +%F)
velcro recordings                                  # what is waiting
velcro recordings run                              # run it now

Set it up your way

No NAS needed, and no code to change: every choice is in Settings, or one velcro set away.

velcro recorder add /Volumes/VOICE   # recorder plugged in
velcro set import.folder RECORD      # optional
velcro set import.delete no          # optional
velcro set import.dest ~/Recordings  # last: starts importing
velcro set send.inbox ~/Dropbox/inbox
velcro set map "~/Dropbox -> /home/me/Dropbox"
velcro settings

Command line

Everything the app does is a velcro command, sharing the same settings.

velcro add smb://me@nas.local/home
velcro add smb://me@192.168.1.10/photos nas.tail1234.ts.net
velcro status
velcro pause
velcro import
velcro send screenshot.png

Install

Let your agent do it. Paste this into Claude Code, Codex, or Cursor. It installs velcro, finds the shares you already have mounted, and asks before adding anything.

Set up velcro on this Mac (https://velcro.dgit.co). It keeps SMB and NFS shares mounted, and can also import a USB voice recorder and send files to a NAS inbox.

1. Install it: curl -fsSL https://velcro.dgit.co/install | sh
   If I only want the command line: curl -fsSL https://velcro.dgit.co/install | sh -s -- --cli-only
   velcro goes in ~/.local/bin; use the full path if that isn't on PATH yet.
2. List the shares mounted right now (mount -t smbfs; mount -t nfs) and ask which ones velcro should keep mounted. Add each with: velcro add smb://user@host/share  (spaces as %20). If I reach that server another way too, like a Tailscale name, put it after the address as a fallback host.
3. Ask whether I want either of these, and set up only what I say yes to. Neither needs a NAS:
   - Voice recorder: I plug it in, you run velcro recorder add /Volumes/<its name>. Then, in this order because importing starts once import.dest is set: if recordings live in one folder (often RECORD), velcro set import.folder <that folder>; ask whether to keep recordings on the recorder (velcro set import.delete no); ask where they should go (~/Recordings, iCloud Drive, an external drive, or a share) and run velcro set import.dest <folder> last.
   - Send to an inbox: velcro set send.inbox <a folder on a share, or one Dropbox or Syncthing syncs>. If another machine sees it at a different path, velcro set map "<path on this Mac> -> <path there>".
   - Mac mic, if I use a Linux machine over SSH and want voice input there: check ssh <host> works without a password prompt, then velcro mic on <host>.
   - Mac clipboard, if I run Claude Code on a Linux machine over SSH and want ⌃V to paste images I copy on the Mac: check ssh <host> works without a password prompt, then velcro clip on <host>.
   - Transcribe, if I want audio files turned into text: only with my own Claude Code or Codex (ChatGPT) login on this machine. velcro set transcribe.lang <code> if I don't speak English, then velcro transcribe <file>.
   - Recordings, on a machine that always sees the recordings folder (usually a server): ask which engine (a local speech recognizer for meetings; claude or codex only if I ask), then velcro set recordings.dir, recordings.engine and any tidy or deliver commands I already have, and recordings.since today. Check with velcro recordings.
4. Finish with velcro status and tell me what's set up.

Only change things with velcro commands; velcro help lists them. If macOS asks for a share's password, tell me to tick "Remember this password in my keychain".

Or run it yourself. The menu bar app and the velcro command:

curl -fsSL https://velcro.dgit.co/install | sh

Just the command, no app: add -s -- --cli-only after sh. Every download is checked against its published SHA-256 before anything is installed. Read the script.

Or download it.

  1. 1
    DownloadUnzip it and move velcro to Applications.
  2. 2
    Open itvelcro isn't notarized, so macOS says it can't check it. Click Done, then open System Settings › Privacy & Security and click Open Anyway. You only do this once.
  3. 3
    Add a shareChoose Add Share… in the menu and enter an address like smb://me@nas.local/home. velcro starts at login from then on.
Download for macOS

Guides

Questions

Why does macOS say it can't check velcro?

velcro is free and isn't notarized, which takes a paid Apple Developer membership. macOS only checks apps a browser downloaded, so installing with the curl command skips the dialog; the installer checks the download's SHA-256 instead. If you downloaded the zip, open velcro once, click Done, then click Open Anyway in System Settings › Privacy & Security. Or run xattr -dr com.apple.quarantine /Applications/velcro.app.

Do I need a NAS?

No. Keeping shares mounted is for people who have them, but recorder import and send work with any folder: on your Mac, on an external drive, in iCloud Drive, or one Dropbox or Syncthing keeps in sync. Set it in Settings or with velcro set; nothing in the code needs changing.

What will macOS ask me to allow?

Notifications, to tell you when an import or a send is done, and Login Items, to start at login. The first time velcro imports or sends, macOS may ask to let it open files on a removable volume or a network volume. Turning on Mac Mic asks for the microphone. velcro doesn't need Full Disk Access, Accessibility, or Screen Recording.

Does velcro see my passwords?

No. Share passwords stay in your keychain; macOS uses them to mount and velcro never reads them. If there's no saved password, macOS shows its own login window once. velcro keeps no tokens or keys of its own, except the CRM upload token you approve in the browser if you connect one (kept in the keychain).

What does it do with my clipboard?

It notices when you copy an image or a file and lists the last four in the menu. Copied images are kept in ~/Library/Application Support/velcro/clips until they drop off the list or velcro quits, and anything a password manager marks as private is skipped. velcro only writes to the clipboard when you pick something to send, and never sends anything on its own.

Where does it keep things?

Shares and settings in ~/.config/velcro, the log in ~/Library/Logs/velcro.log, and recordings waiting for the NAS in ~/Library/Application Support/velcro/import-queue.

How do I uninstall it?

Run velcro uninstall, then move velcro.app to the Trash. Delete ~/.config/velcro too if you want your settings gone.