ValetFS Quick Install Overview
ValetFS is a zero-backend, P2P, in-memory virtual file system desktop daemon. It is designed to expose short-lived tokens/keys to AI agents only while a paired mobile app allows it.
This repository contains the Go-based daemon (cmd/valetfs)
and a Cloudflare Worker signaling stub for WebRTC bootstrap
(signaling/).
Core Project Components
internal/vfs: in-memory FS and FUSE/WebDAV mountinginternal/webrtc: pion-based P2P connection + signaling integrationinternal/sync: commits manifest lines with hash/size/path only (no token body)internal/daemon: daemon lifecycle and local dev APIscripts/install.sh: auto-download and install script for release binaries
Install with curl + install.sh (Recommended)
On Linux, install the latest release with this one-liner:
curl -fsSL https://winm2m.github.io/valet-fs/install.sh | bash
The installer detects OS/architecture (amd64, arm64),
downloads the matching binary from GitHub Releases, and installs it to
/usr/local/bin/valetfs by default.
Optional Parameters
- Install a specific version: set
VALETFS_VERSION=v0.1.0 - Change install path: set
INSTALL_DIR=/custom/bin
curl -fsSL https://winm2m.github.io/valet-fs/install.sh | VALETFS_VERSION=v0.1.0 INSTALL_DIR=$HOME/.local/bin bash
AI agent skill (Claude Code)
If you hand a connection key to a skill-capable agent, install the ValetFS skill on that machine as well. It makes the agent check your vault before reading credentials from disk or environment variables — in every later session, not just the one where you pasted the key.
curl -fsSL https://winm2m.github.io/valet-fs/install-skill.sh | bash
Installs to ~/.claude/skills/valetfs/. Set SKILL_DIR=
to scope it to a single project instead.
Quick Start After Install
valetfs serve --dev
valetfs status
The daemon starts a local control API and WebDAV endpoint on loopback, and keeps running even when FUSE mounting is unavailable.
Two-Device Pairing Test (Vault + Serve)
You can validate the new vault-origin workflow with two machines: one runs
serve as remote daemon, the other runs vault as controller.
Device A (serve target)
valetfs serve
If --signaling is omitted, default signaling URL is
https://valetfs-signaling.winm2m.workers.dev.
Keep this process running and copy the printed Session ID: ... value.
Device B (vault origin/controller)
export VALETFS_VAULT_PASSWORD='change-me'
valetfs vault init
valetfs vault add ./my-key.pem fs:/keys/my-key.pem
valetfs vault pair <SESSION_ID>
Optional follow-up commands:
valetfs vault sync <SESSION_ID> --signaling https://valetfs-signaling.winm2m.workers.dev
valetfs vault status <SESSION_ID> --signaling https://valetfs-signaling.winm2m.workers.dev
valetfs vault unmount <SESSION_ID> --signaling https://valetfs-signaling.winm2m.workers.dev
If follow-up commands time out when reconnecting to the same session, create a new serve session and pair again.
Verbose Mode for Pairing Diagnostics
If pairing fails with timeout, run both sides with verbose logs to inspect signaling, claim, answer, and ICE candidate exchange.
valetfs serve -v
valetfs vault -v pair <SESSION_ID>