Skip to content
Apache OpenWhisk is a serverless event-based programming service and an Apache Incubator project.
Scala JavaScript Python Shell Java Groovy Other
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github graduation: remove more incubator- references (#4581) Aug 14, 2019
ansible Update java kind to include the version number too (#4390) Aug 23, 2019
bin Move wskadmin to tools/admin. Sep 22, 2016
common/scala Add GB unit to ByteSize (#4589) Aug 22, 2019
core Update java kind to include the version number too (#4390) Aug 23, 2019
docs graduation: remove more incubator- references (#4581) Aug 14, 2019
gradle Update Gradle to 5.5 version (#4567) Aug 12, 2019
licenses Add the license and notice for ConcurrentMapBackedCache.scala (#3703) May 30, 2018
tests Update java kind to include the version number too (#4390) Aug 23, 2019
tools Api Gateway support in OpenWhisk Standalone mode (#4571) Aug 15, 2019
.gitattributes Fix vagrant not use runc (#3546) Apr 19, 2018
.gitignore Ignore route management artifacts from deployment. Jun 30, 2019
.pydevproject Add python:3 action support. Mar 28, 2017
.scalafmt.conf Update all files using Mini license header to use full ASF header (#4512 Jun 13, 2019
.travis.yml Update docker client version to 18.06.3 (#4430) May 15, 2019 Add code of conduct pointer. (#4260) Feb 8, 2019 Remove Incubator(ing, tion) references and DISCLAIMER (#4566) Jul 23, 2019
CREDITS.txt graduation: remove more incubator- references (#4581) Aug 14, 2019
Jenkinsfile Run Gradle install for Jenkins build to install Standalone jar (#4531) Jul 2, 2019
LICENSE.txt gradlew licensing (#4552) Jul 10, 2019
NOTICE.txt update second year in copyright notice (#4292) Feb 16, 2019 graduation: remove more incubator- references (#4581) Aug 14, 2019
build.gradle Update Gradle to 5.5 version (#4567) Aug 12, 2019
gradlew Update Gradle to 5.5 version (#4567) Aug 12, 2019
gradlew.bat Update Gradle to 5.5 version (#4567) Aug 12, 2019
settings.gradle Update to Scala 2.12.9 (#4588) Aug 21, 2019


Build Status License Join Slack codecov Twitter

OpenWhisk is a cloud-first distributed event-based programming service. It provides a programming model to upload event handlers to a cloud service, and register the handlers to respond to various events. Learn more at

Quick Start

The easiest way to start using OpenWhisk is to get Docker installed on Mac, Windows or Linux. The Docker website has detailed instructions on getting the tools installed. This does not give you a production deployment but gives you enough of the pieces to start writing functions and seeing them run.

git clone
cd openwhisk-devtools/docker-compose
make quick-start

For more detailed instructions or if you encounter problems see the OpenWhisk-dev tools project.

Kubernetes Setup

Another path to quickly starting to use OpenWhisk is to install it on a Kubernetes cluster. On a Mac, you can use the Kubernetes support built into Docker 18.06 (or higher). You can also deploy OpenWhisk on Minikube, on a managed Kubernetes cluster provisioned from a public cloud provider, or on a Kubernetes cluster you manage yourself. To get started,

git clone

Then follow the instructions in the OpenWhisk on Kubernetes

Vagrant Setup

A Vagrant machine is also available to run OpenWhisk on Mac, Windows PC or GNU/Linux but isn't used by as much of the dev team so sometimes lags behind. Download and install VirtualBox and Vagrant for your operating system and architecture.

Note: For Windows, you may need to install an ssh client in order to use the command vagrant ssh. Cygwin works well for this, and Git Bash comes with an ssh client you can point to. If you run the command and no ssh is installed, Vagrant will give you some options to try.

Follow these step to run your first OpenWhisk Action:

# Clone openwhisk
git clone --depth=1 openwhisk

# Change directory to tools/vagrant
cd openwhisk/tools/vagrant

# Run script to create vm and run hello action

Wait for hello action output:

wsk action invoke /whisk.system/utils/echo -p message hello --result
    "message": "hello"

These steps were tested on Mac OS X El Capitan, Ubuntu 14.04.3 LTS and Windows using Vagrant. For more information about using OpenWhisk on Vagrant see the tools/vagrant/

During the Vagrant setup, the Oracle JDK 8 is used as the default Java environment. If you would like to use OpenJDK 8, please change the line "su vagrant -c 'source oracle'" into "su vagrant -c 'source'" in tools/vagrant/Vagrantfile.

Native development

Docker must be natively installed in order to build and deploy OpenWhisk. If you plan to make contributions to OpenWhisk, we recommend either a Mac or Ubuntu environment.

Learn concepts and commands

Browse the documentation to learn more. Here are some topics you may be interested in:

Repository Structure

The OpenWhisk system is built from a number of components. The picture below groups the components by their GitHub repos. Please open issues for a component against the appropriate repo (if in doubt just open against the main openwhisk repo).

component/repo mapping


Report bugs, ask questions and request features here on GitHub.


You can also join the OpenWhisk Team on Slack and chat with developers. To get access to our public slack team, request an invite

You can’t perform that action at this time.