Install
openclaw skills install ssh-filemanagerManage files on remote machines over Tailscale SSH (Tailnet). Use this skill when the user needs to list, read, write, delete, move, copy, search, chmod, push, or pull files on a remote OpenClaw node via a Tailscale SSH connection. Always prefer scp for files larger than 3KB to avoid the OpenClaw invoke payload limit.
openclaw skills install ssh-filemanagerThis skill enables file management between the OpenClaw Gateway and remote OpenClaw Nodes through Tailscale SSH (Tailnet). It wraps system ssh, scp, and sftp commands via the helper script scripts/ssh_file_manager.py.
node-name.tailXXXX.ts.net).host). Ask the user if it is ambiguous.action) and the relevant path(s).read or write with inline content.push (local -> remote) or pull (remote -> local) via scp.python3 {baseDir}/scripts/ssh_file_manager.py <action> --host <host> [args...]
success is false, surface the error message.| Action | Description | Command Example |
|---|---|---|
list | List directory entries with size, mode, and mtime. | python3 {baseDir}/scripts/ssh_file_manager.py list --host node.tailXXXX.ts.net --path /home/user |
read | Read a remote file as text or base64. | python3 {baseDir}/scripts/ssh_file_manager.py read --host node.tailXXXX.ts.net --path /home/user/file.txt |
write | Write text or base64 content to a remote file. | python3 {baseDir}/scripts/ssh_file_manager.py write --host node.tailXXXX.ts.net --path /home/user/file.txt --content "Hello" |
delete | Delete a remote file or directory recursively. | python3 {baseDir}/scripts/ssh_file_manager.py delete --host node.tailXXXX.ts.net --path /home/user/old.txt |
move | Move/rename a remote file or directory. | python3 {baseDir}/scripts/ssh_file_manager.py move --host node.tailXXXX.ts.net --src /tmp/a --dst /tmp/b |
copy | Copy a remote file or directory recursively. | python3 {baseDir}/scripts/ssh_file_manager.py copy --host node.tailXXXX.ts.net --src /tmp/a --dst /tmp/b |
stat | Get file metadata (size, mode, uid, gid, mtime, is_dir). | python3 {baseDir}/scripts/ssh_file_manager.py stat --host node.tailXXXX.ts.net --path /home/user/file.txt |
find | Search for files by name pattern under a path. | python3 {baseDir}/scripts/ssh_file_manager.py find --host node.tailXXXX.ts.net --path /home/user --name "*.log" |
chmod | Change file permissions. | python3 {baseDir}/scripts/ssh_file_manager.py chmod --host node.tailXXXX.ts.net --path /home/user/script.sh --mode 755 |
push | Copy a local file to the remote node via scp. | python3 {baseDir}/scripts/ssh_file_manager.py push --host node.tailXXXX.ts.net --local /tmp/local.bin --remote /tmp/remote.bin |
pull | Copy a remote file to the local machine via scp. | python3 {baseDir}/scripts/ssh_file_manager.py pull --host node.tailXXXX.ts.net --remote /tmp/remote.bin --local /tmp/local.bin |
write, delete, move, chmod): Always ask the user for explicit confirmation before invoking the script.node.invoke. Use push/pull (scp) instead./ unless explicitly requested. Verify absolute paths when provided by the user.python3 {baseDir}/scripts/ssh_tunnel.py check --host <host> to verify Tailscale SSH reachability.ssh_tunnel.py check to diagnose.success: false with details.read with --format base64.list and stat may fail; fallback to raw ssh commands if needed.