Skip to content

CLI reference

Every command the weft binary exposes. This is the authoritative reference; where it disagrees with prose elsewhere, trust this page.

CommandWhat it does
weft serve <vault-path>Start the daemon and open the browser (http://localhost:7777)
weft capture "<text>"Quick-capture to today’s daily note
weft clip <url>Clip a URL to the vault as clips/YYYY-MM-DD-slug.html
weft mcp <vault-path>Run the MCP server on stdio (for Claude Code)
weft import <kind> <src>Import notes; kinds: markdown notion bookmarks apple-notes
weft sync initSet up E2EE multi-device sync on your own cloud
weft sync joinEnroll this device with the shared passphrase
weft sync pairEnroll this device from another one (no passphrase)
weft sync pair-approve <code>Approve a pairing request on an enrolled device
weft sync recoveryPrint this vault’s 24-word recovery phrase
weft sync recover --phrase "..."Rebuild a vault from its recovery phrase
weft sync checkVerify bucket creds + connectivity (no data touched)
weft syncRun one convergence cycle (push + pull)

Start the daemon. It owns the vault, builds the index, and serves the web app at http://localhost:7777, opening your browser.

Terminal window
# start the daemon on a vault folder
weft serve ~/notes

Append text to today’s daily note (daily/YYYY-MM-DD.html), creating it if needed. The fastest way to get a thought into the vault without leaving the terminal.

Terminal window
weft capture "idea: surface co-accessed notes on hover"

Fetch a web page and save it to the vault as clips/YYYY-MM-DD-slug.html. Because the canonical format is already HTML, clipping is essentially a copy.

Terminal window
weft clip https://example.com/some-article

Run the MCP server over stdio so Claude Code can read, search, surface, and write notes in your vault.

Terminal window
weft mcp ~/notes

See the MCP guide for wiring it into Claude Code.

Bring existing notes into the vault. Pick a kind and point it at the source export.

KindSource
markdownA folder of Markdown files
notionA Notion export
bookmarksA browser bookmarks HTML export
apple-notesApple Notes
FlagMeaning
--forceOverwrite existing notes
-v <vault>Target vault path
Terminal window
weft import markdown ~/old-notes --force -v ~/notes

More detail in Import.

Multi-device sync is optional, bring-your-own-cloud, and end-to-end encrypted. Weft runs no server; your notes pass through object storage you own, and the bucket holds only ciphertext. Each command is below; the convergence cycle and shared flags follow.

Set up E2EE sync on the first device. Generates the vault key on your machine — it is never uploaded.

Enroll an additional device using the shared passphrase.

Enroll a new device without retyping the passphrase. Run weft sync pair on the new device to print a code, then weft sync pair-approve <code> on an already-enrolled device. Both screens show an 8-digit code (SAS) you compare and confirm; the vault key is handed over end-to-end, resistant to a man-in-the-middle.

Terminal window
# on the new device
weft sync pair
# on an already-enrolled device
weft sync pair-approve 7Q3K-2F9P

weft sync recovery prints this vault’s 24-word recovery phrase. weft sync recover rebuilds a vault from it if you lose every device.

Terminal window
weft sync recovery
weft sync recover --phrase "word1 word2 ... word24"

Validate bucket credentials and connectivity before touching any data. Run this first.

Terminal window
weft sync check

Run one convergence cycle: push local changes, pull remote changes. A true concurrent edit becomes a conflict-copy — never a silent overwrite.

Terminal window
weft sync
FlagMeaning
-v <vault>Vault path
--passphrase <p>Vault passphrase
--provider {r2|aws|minio|b2|fs}Storage backend
--bucketBucket name
--endpointEndpoint URL
--regionRegion
--access-keyAccess key
--secretSecret key
--path-styleUse path-style addressing
--prefixKey prefix in the bucket (default weft/v1)
--fs-pathLocal path for the fs provider

Full setup walkthrough in Sync and Devices.

VariableEffect
WEFT_SECRET_STORE=fileForce the on-disk key store instead of the OS keychain (for headless hosts)
WEFT_RECOVERY_PHRASESupply the 24-word phrase to weft sync recover without --phrase