CLI for the TeamBeam service
Install the commandline tool via
npm install -g skalio/teambeamjs
A global installation is recommended. Depending on your environment, you may need to execute this with superuser privileges.
A valid TeamBeam account is required to use teambeamjs
. You can create one for free at free.teambeam.de.
The command line interface is available via the teambeamjs
command. You can get a list of all available commands by running:
$ teambeamjs --help
Usage: teambeam [options] [command]
TeamBeam CLI
Options:
-V, --version output the version number
-h, --help display help for command
Commands:
init [options] Initialize configuration for teambeamjs
upload [options] <files...> Send a transfer
download [options] Download transfers from your inbox
copy [options] Copy transfers from your inbox to an archive folder
You can get more information about each command by using it with the --help
flag.
Once installed an initial configuration of teambeamjs
is required by running this command:
$ teambeamjs init
✔ API Host: https://free.teambeam.de
✔ Email: bob@example.org
✔ Password: *******
✔ Successfully logged in
✔ Config has been saved at /foo/bar/teambeamjs-nodejs/config.json
If your account is protected by multi-factor authentication (MFA), you will also be prompted to enter your OTP secret. This is a short string used to generate time-based one-time passwords (TOTP), which can typically be found or exported from your authenticator app (such as Google Authenticator, 1Password, or similar). The secret is also briefly shown during the initial MFA setup in the TeamBeam web app and can be copied from there.
You can then use all available commands.
You can send a TeamBeam transfer by using the upload
command. The command requires some options that can either be passed via flags or interactively. You can specify the files and folders to upload
as arguments. The command will automatically zip folders before uploading.
$ teambeamjs upload --to alice@example.com --message "Hello Alice, have a look at these pictures and videos. Aren't they gorgeous? Cheers, Bob" ./videos/ DSC01472.jpg DSC01473.jpg
✔ Created zip file for './videos/'
✔ Subject: Pics from yesterday
✔ TTL: 14 days
✔ Transfer upload |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■| 100%
✔ Successfully uploaded transfer
Or you can download transfers:
$ teambeamjs download --include-sent --use-filename
▷ Fetching transfers...
▶ 2 transfers found. Downloading...
┌ Transfer 2kfqnlw7td5199oextpglgte92k57xknlldg1lp8
│
◆ File DSC01472.jpg |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■| 100%
◆ File DSC01473.jpg |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■| 100%
│
└ Done!
┌ Transfer 219wfpzuy5iozoyoe3yyraug3xi2r6ab0vbposct
│
◆ File DSC01540.jpg |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■| 100%
◆ File DSC01541.jpg |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■| 100%
│
└ Done!
By default, download
will retrieve all new (unread) transfers
that have been sent to the current user. As a result, transfers will get
downloaded only once.
This filter can be changed using and combining these flags:
--include-old
: Include transfers that have been downloaded before and are thus no longer marked as unread--include-sent
: Include transfers that have been sent by the current user
The files of a transfer can contain all sorts of characters. When downloading these files, this may cause problems on the downloading host, where some of these characters may not be readable or have conflicting purposes.
Therefore, by default, teambeamjs
uses a unique ASCII-based identifier when
naming downloaded files, called the objectId. This avoids any conflicts or
problems and leads to unique filenames. The intended filename, as specified
by the uploader, can be looked up in the transfer's metadata JSON object
transfer.json
.
Set the flag --use-filename
to instead use the original filenames.
When downloading a transfer, teambeamjs
creates a JSON-encoded file containing
the metadata of the transfer. It is named transfer.json
and located in the
downloaded transfer directory.
This command can be used to copy received transfer into a TeamBeam Transfer archive folder
$ teambeamjs copy --folder 4711
┌ Fetching transfers...
◆ Found 3 transfers to copy
│
│ Copying into archive folder 4711...
◆ [████████████████████████████████████████] 3/3 transfers
│
└ Done!
teambeamjs
uses a configuration file to persist the necessary server and account
credentials to interact with the TeamBeam system.
Important
Make sure to protect the file as it contains sensitive credentials.
You can provide the --interval <delay>
option on the download
or copy
command run it in an endless loop with <delay>
seconds in between each run.
This loop can be exited by using Ctrl + C or by manually killing teambeamjs
's process.
$ teambeamjs download --interval 30
[09:41:03]
▷ Fetching transfers...
▶ 1 transfer found. Downloading...
┌ Transfer 2kfqnlw7td5199oextpglgte92k57xknlldg1lp8
│
◆ File i1oks3z4tk |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■| 100%
◆ File i1oks3z6t1 |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■| 100%
◆ File i1oks3z6tm |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■| 100%
│
└ Done!
[09:41:39]
▷ Fetching transfers...
▶ No new transfers found
[09:42:09]
▷ Fetching transfers...
▶ 1 transfer found. Downloading...
┌ Transfer 219wfpzuy5iozoyoe3yyraug3xi2r6ab0vbposct
│
◆ File b9bct3z7tp |■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■| 100%
│
└ Done!
⠦ Next run in 30s...
Use the node package manager to keep teambeamjs
up to date:
$ sudo npm update -g skalio/teambeamjs
- v1.0.0 2025-05-26 Reimplemented the entire tool from scratch using modern TypeScript to support the next generation of the TeamBeam platform.
- Breaking changes:
- removed support for the legacy TeamBeam platform
- replaced copy command flag
-d
/--drive
with-f
/--folder
- removed
--config
option to all commands - changed config file location and schema
- Breaking changes:
- v0.3.1 2022-07-05 Files are now uploaded sequentially - one upload waiting before the next starts in order to prevent RateLimitExceptions. Lifting versions of dependencies.
- v0.3.0 2022-03-02 Adding new feature to copy received transfers to a drive folder. Interval actions now re-login on lost user sesion. Lifting versions of dependencies.
- v0.2.4 2019-06-20 Fixing issue with zipping folders prior to uploading. Lifting versions of dependencies.
- v0.2.3 2018-12-21 Fixing issue where uploads without content-length were rejected.
- v0.2.2 2018-07-24 Fixing issue where files without name extension could not be uploaded. Fixed download of already downloaded transfers.
- v0.2.1 2017-10-26 Fixing issue with number as transfer passphrase. Better temp folder support
- v0.2.0 2017-10-26 Fixing special characters issue. Proxy Support. Support for uploading directories. Quiet output flag. Support for IDN domains in E-Mail addresses.
- v0.1.3 2016-03-23 Fixing download; adding progress information when
--verbose
- v0.1.2 2016-03-08 Adds support for download-intervals
- v0.1.1 2016-02-23 Adds support for transfer passwords
- v0.1.0 2016-01-26 Initial Release
teambeamjs
releases are available on github.
Copyright (c) 2025 Skalio GmbH support@teambeam.de
Licensed under the MIT license.