Skip to main content
Help us improve PyPI by participating in user testing. All experience levels needed!

Slack CLI for productive developers

Project description

Effectively interact with Slack from the command line: send messages, upload files, send command output, pipe content… all from the confort of your terminal.

Member of dozens of Slack teams? No worries, slack-cli supports switching easily from one team to another.


$ pip install slack-cli
$ slack-cli -d general "Hello everyone!"

You will be asked to provide a Slack API token. It’s easy, just get one from the API token generator.


$ slack-cli -h
usage: slack-cli [-h] [-t TOKEN] [-T TEAM] [-d DST] [-f FILE] [--pre] [--run]
                 [-s SRC] [-l LAST]
                 [messages [messages ...]]

Send, pipe, upload and receive Slack messages from the CLI

optional arguments:
  -h, --help            show this help message and exit
  -t TOKEN, --token TOKEN
                        Explicitely specify Slack API token which will be
                        saved to /home/user/.config/slack-cli/slack_token.
  -T TEAM, --team TEAM  Team domain to interact with. This is the name that
                        appears in the Slack url: Use
                        this option to interact with different teams. If
                        unspecified, default to the team that was last used.

Send messages:
  -d DST, --dst DST     Send message to a Slack channel, group or username
  -f FILE, --file FILE  Upload file
  --pre                 Send as verbatim `message`
  --run                 Run the message as a shell command and send both the
                        message and the command output
  messages              Messages to send (messages can also be sent from
                        standard input)

Receive messages:
  -s SRC, --src SRC     Receive messages from a Slack channel, group or
  -l LAST, --last LAST  Print the last N messages

Note that the Slack token may optionally be stored in an environment variable (although it is not recommended for security reasons):

$ export SLACK_TOKEN="slack_token_string"

Send message

The destination argument may be any user, group or channel:

$ slack-cli -d general "Hello everyone!"
$ slack-cli -d slackbot "Hello!"

Switch to a different team anytime with the -T flag:

$ slack-cli -d general -T family "I'll be home in an hour"

Pipe content

$ cat /etc/hosts | slack-cli -d devteam

Usually you will want to format piped content as verbatim content with triple backticks (“```”). This is achieved with the –pre option:

$ tail -f /var/log/nginx/access.log | slack-cli -d devteam --pre

Upload file

$ slack-cli -f /etc/nginx/sites-available/default.conf -d alice

Run command and send output

This is really convenient for showing both the result of a command and the command itself:

$ slack-cli -d john --run "git log -1"

will send to user john:

$ git log -1
commit 013798f5c85043d31f0221a9a32b39298e97fb08
Author: Régis Behmo <>
Date:   Thu Jun 22 15:20:36 2017 +0200

    Replace all commands by a single command

    Our first 1.0 release!

Stream content from a channel

For monitoring a Slack channel from the terminal:

$ slack-cli -s general

Dump (backup) the content of a channel

$ slack-cli -s general --last 10000 > general.log
$ slack-cli -s myboss --last 10000 > covermyass.log


v2.0.2 (2017-09-13)

  • Better error management

v2.0.1 (2017-09-09)

  • Simplify reading from stdin

v2.0.0 (2017-09-09)

  • Add support for multiple teams
  • Fix streaming issues
  • Improve printed message format
  • Simplify sending messages from stdin

v1.0.3 (2017-09-04):

  • Add “–last” flag to print an entire conversation

v1.0.2 (2017-08-31):

  • Fix token verification issue for users that don’t have a “general” channel

v1.0 (2017-07-06):

  • Refactor command line by reducing all commands to a single “slack-cli” command.
  • Interactive API token input.
  • Automatic token creation check.


I am very much open to comments! Please don’t be afraid to raise issues or open pull requests.

This work is licensed under the terms of the MIT License

Note that this project was initially a fork of slacker-cli but the two projects have now considerably diverged.

Project details

Release history Release notifications

This version
History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
slack-cli-2.0.3.tar.gz (8.4 kB) Copy SHA256 hash SHA256 Source None Jan 20, 2018

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging CloudAMQP CloudAMQP RabbitMQ AWS AWS Cloud computing Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page