Install
openclaw skills install ftp-clientFTP/FTPS client skill. Connect to FTP servers and perform file operations (list, upload, download, delete, move, copy, mkdir, read). Supports FTP and FTPS (explicit/implicit TLS).
openclaw skills install ftp-clientFull-featured FTP/FTPS client skill for OpenClaw. Connect to remote FTP servers and manage files directly.
Set FTP_CONNECTION in the OpenClaw skill management panel. Format (comma-separated, last 3 fields optional):
host:port,username,password,active/passive,ftp/ftps,explicit/implicit
Examples:
ftp.example.com:21,myuser,mypassword
ftp.example.com:21,myuser,mypassword,passive
ftp.example.com:990,myuser,mypassword,passive,ftps,implicit
Field definitions:
host:port — FTP server address and portusername — FTP login usernamepassword — FTP login passwordactive or passive — connection mode (default: passive)ftp or ftps — protocol (default: ftp)explicit or implicit — TLS mode for FTPS (default: not used; only meaningful when field 5 is ftps)Note: If your password contains commas, replace them with
%2C(URL-encoded). The parser will decode it.
node {baseDir}/scripts/list.mjs
node {baseDir}/scripts/list.mjs "/remote/path"
node {baseDir}/scripts/list.mjs "/" --long
Options:
--long or -l: Show detailed file info (size, date, permissions)node {baseDir}/scripts/download.mjs "/remote/file.txt"
node {baseDir}/scripts/download.mjs "/remote/file.txt" --out "/local/path/file.txt"
node {baseDir}/scripts/download.mjs "/remote/dir" --dir
Options:
--out <path> or -o <path>: Local destination path (default: temp directory)--dir or -d: Download entire directory recursivelynode {baseDir}/scripts/upload.mjs "/local/file.txt"
node {baseDir}/scripts/upload.mjs "/local/file.txt" --to "/remote/path/file.txt"
node {baseDir}/scripts/upload.mjs "/local/dir" --dir --to "/remote/dir"
Options:
--to <path> or -t <path>: Remote destination path (default: FTP root /)--dir or -d: Upload entire directory recursivelynode {baseDir}/scripts/delete.mjs "/remote/file.txt"
node {baseDir}/scripts/delete.mjs "/remote/dir" --dir
Options:
--dir or -d: Remove directory recursively (including all contents)node {baseDir}/scripts/move.mjs "/remote/old-name.txt" "/remote/new-name.txt"
node {baseDir}/scripts/move.mjs "/remote/file.txt" "/remote/subdir/file.txt"
node {baseDir}/scripts/copy.mjs "/remote/source.txt" "/remote/dest.txt"
FTP protocol does not natively support copy. This downloads the file to a temp location and re-uploads it.
node {baseDir}/scripts/mkdir.mjs "/remote/new-dir"
node {baseDir}/scripts/mkdir.mjs "/remote/path/to/deep/dir"
Creates the directory and all intermediate directories as needed.
node {baseDir}/scripts/read.mjs "/remote/file.txt"
node {baseDir}/scripts/read.mjs "/remote/file.txt" --encoding utf8
Options:
--encoding <enc>: File encoding (default: utf8). Supports: utf8, ascii, latin1, base64node {baseDir}/scripts/info.mjs "/remote/file.txt"
Returns file size and last modification date.
node and uses the basic-ftp npm package (auto-installed via package.json).FTP_CONNECTION env var before use.