Apache OpenWhisk is a serverless event-based programming service and an Apache Incubator project.
Scala JavaScript Python Shell Java Groovy Other
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
.github Add Slack and Mailing List links (#3748) Jun 11, 2018
ansible Make amount of parallel docker runs configurable. (#3698) Aug 10, 2018
bin Move wskadmin to tools/admin. Sep 22, 2016
common/scala Implement invoker-node affinity and eliminate usage of kubectl. (#3963) Aug 17, 2018
core Implement invoker-node affinity and eliminate usage of kubectl. (#3963) Aug 17, 2018
docs update documentation for nodejs runtime (#3946) Aug 8, 2018
gradle Enable test code coverage collection for containers. (#3685) Jul 31, 2018
licenses Add the license and notice for ConcurrentMapBackedCache.scala (#3703) May 30, 2018
tests Implement invoker-node affinity and eliminate usage of kubectl. (#3963) Aug 17, 2018
tools Add tracing component name to wskadmin-next. (#3958) Aug 14, 2018
.gitattributes Fix vagrant not use runc (#3546) Apr 19, 2018
.gitignore Generate whisk.conf as default for wskadmin-next. (#3817) Jun 28, 2018
.pydevproject Add python:3 action support. Mar 28, 2017
.scalafmt.conf Add ASF license headers to all Scala .conf files. May 8, 2018
.travis.yml Make gradle and dependency downloads more stable. (#3960) Aug 13, 2018
CONTRIBUTING.md Slightly expand description of ICLA process. (#3692) May 24, 2018
CREDITS.txt Remove unused classes. Feb 2, 2017
DISCLAIMER.txt Add the DISCLAIMER file for Apache incubator project (#3727) Jun 6, 2018
LICENSE.txt Remove the copyright of lightbend (#3827) Jun 29, 2018
NOTICE.txt Restore the LICENSE and NOTICE to fit the source code release (#3643) May 11, 2018
README.md Add Twitter badge (#3954) Aug 8, 2018
build.gradle Bump gradle and scoverage version (#3802) Jun 25, 2018
gradlew Bumping to gradle 4.1. (#2399) Aug 16, 2017
gradlew.bat Bump gradle version to 3.0 Sep 18, 2016
settings.gradle Fix invokerId assignment path in zookeeper (#3866) Jul 13, 2018



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 http://openwhisk.incubator.apache.org.

Quick Start

The easiest way to start using OpenWhisk is to get Docker installed on on Mac, Windows or Linux. The Docker website has details 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 https://github.com/apache/incubator-openwhisk-devtools.git
cd incubator-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. OpenWhisk can be installed 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 https://github.com/apache/incubator-openwhisk-deploy-kube.git

Then follow the instructions in the OpenWhisk on Kubernetes README.md.

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 https://github.com/apache/incubator-openwhisk.git 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/README.md

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 all.sh oracle'" into "su vagrant -c 'source all.sh'" 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 https://openwhisk-team.slack.com and chat with developers. To get access to our public slack team, request an invite https://openwhisk.incubator.apache.org/slack.html.


Apache OpenWhisk is an effort undergoing incubation at The Apache Software Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of all newly accepted projects until a further review indicates that the infrastructure, communications, and decision making process have stabilized in a manner consistent with other successful ASF projects. While incubation status is not necessarily a reflection of the completeness or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.