
Security News
Axios Maintainer Confirms Social Engineering Attack Behind npm Compromise
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.
A wrapper library built on top of ssh2-sftp-client
npm install mycompello
const MyCompello = require('mycompello');
let client = new MyCompello({
host: 'myhost.com',
port: 22,
username: 'username',
password: 'password'
});
await client.list('/')
.then((files) => {
console.log(files);
});
.catch((err) => {
console.log(err);
});
Fetches a list of files from the provided remote path.
Example Use:
const MyCompello = require('mycompello');
let client = new MyCompello({
host: 'myhost.com',
port: 22,
username: 'username',
password: 'password'
});
await client.list('/')
.then((list) => {
console.log(list);
});
.catch((err) => {
console.log(err);
});
Check if the provided file or directory exists on the remote server.
Example Use:
const MyCompello = require('mycompello');
let client = new MyCompello({
host: 'myhost.com',
port: 22,
username: 'username',
password: 'password'
});
await client.exists('/hello-world.txt')
.then((exists) => {
console.log(exists);
});
.catch((err) => {
console.log(err);
});
Retrieve a file from the remote server. The file can be saved to the local path provided.
Example Use:
const MyCompello = require('mycompello');
let client = new MyCompello({
host: 'myhost.com',
port: 22,
username: 'username',
password: 'password'
});
await client.get('/hello-world.txt', './my-folder/hello-world.txt')
.then((file) => {
console.log(file);
});
.catch((err) => {
console.log(err);
});
Downloads a file at path to dst using parallel reads for faster throughput.
Example Use:
const MyCompello = require('mycompello');
let client = new MyCompello({
host: 'myhost.com',
port: 22,
username: 'username',
password: 'password'
});
await client.fastGet('/hello-world.txt', './my-folder/hello-world.txt')
.then((file) => {
console.log(file);
});
.catch((err) => {
console.log(err);
});
Uploads a file from local path to the remote server.
Example Use:
const MyCompello = require('mycompello');
let client = new MyCompello({
host: 'myhost.com',
port: 22,
username: 'username',
password: 'password'
});
await client.put('/my-local-folder/my-file.txt', '/my-file.txt')
.then((file) => {
console.log(file);
});
.catch((err) => {
console.log(err);
});
Uploads a file from local path to the remote server using concurrency.
Example Use:
const MyCompello = require('mycompello');
let client = new MyCompello({
host: 'myhost.com',
port: 22,
username: 'username',
password: 'password'
});
await client.fastPut('/my-local-folder/my-file.txt', '/my-file.txt')
.then((file) => {
console.log(file);
});
.catch((err) => {
console.log(err);
});
Append data to remote file.
Example Use:
const MyCompello = require('mycompello');
let client = new MyCompello({
host: 'myhost.com',
port: 22,
username: 'username',
password: 'password'
});
await client.append('my new line', '/remote-folder/my-file.txt')
.then((file) => {
console.log(file);
});
.catch((err) => {
console.log(err);
});
Create a directory on the remote server.
Example Use:
const MyCompello = require('mycompello');
let client = new MyCompello({
host: 'myhost.com',
port: 22,
username: 'username',
password: 'password'
});
await client.mkdir('/my-folder')
.then((file) => {
console.log(file);
});
.catch((err) => {
console.log(err);
});
Remove a directory on the remote server.
Example Use:
const MyCompello = require('mycompello');
let client = new MyCompello({
host: 'myhost.com',
port: 22,
username: 'username',
password: 'password'
});
await client.rmdir('/my-folder')
.then((file) => {
console.log(file);
});
.catch((err) => {
console.log(err);
});
Delete a file on the remote server.
Example Use:
const MyCompello = require('mycompello');
let client = new MyCompello({
host: 'myhost.com',
port: 22,
username: 'username',
password: 'password'
});
await client.delete('/my-folder/hello-world.txt')
.then((file) => {
console.log(file);
});
.catch((err) => {
console.log(err);
});
Rename a file on the remote server.
Example Use:
const MyCompello = require('mycompello');
let client = new MyCompello({
host: 'myhost.com',
port: 22,
username: 'username',
password: 'password'
});
await client.rename('/my-folder/hello-world.txt', '/my-folder/hello-world-renamed.txt')
.then((file) => {
console.log(file);
});
.catch((err) => {
console.log(err);
});
Uses openSSH POSIX rename extension to rename a file or directory.
Example Use:
const MyCompello = require('mycompello');
let client = new MyCompello({
host: 'myhost.com',
port: 22,
username: 'username',
password: 'password'
});
await client.posixRename('/my-folder/hello-world.txt', '/my-folder/hello-world-renamed.txt')
.then((file) => {
console.log(file);
});
.catch((err) => {
console.log(err);
});
Change the mode (read, write or execution permssions) of a file.
Example Use:
const MyCompello = require('mycompello');
let client = new MyCompello({
host: 'myhost.com',
port: 22,
username: 'username',
password: 'password'
});
await client.chmod('/my-folder/hello-world.txt', '777')
.then((file) => {
console.log(file);
});
.catch((err) => {
console.log(err);
});
Upload the contents of a local file to a remote file.
Example Use:
const MyCompello = require('mycompello');
let client = new MyCompello({
host: 'myhost.com',
port: 22,
username: 'username',
password: 'password'
});
await client.uploadDir('/my-folder-local', '/my-folder-remote')
.then((file) => {
console.log(file);
});
.catch((err) => {
console.log(err);
});
Download the contents of a remote file to a local file path.
Example Use:
const MyCompello = require('mycompello');
let client = new MyCompello({
host: 'myhost.com',
port: 22,
username: 'username',
password: 'password'
});
await client.downloadDir('/my-folder-remote', '/my-folder-local')
.then((file) => {
console.log(file);
});
.catch((err) => {
console.log(err);
});
FAQs
An SFTP Client built around SSH2 to interact with a remote server
We found that mycompello demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.

Security News
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.