Your webhook robot

Usage no npm install needed!

<script type="module">
  import vici from '';



Run Status license Docker Pulls vici

Your webhook robot :ribbon:

Named after vici ( Pronounced Vicky ) from Small Wonder TV series.


via git

# with ssh
git clone

# with https
git clone

npm install

npm start

via npm

npm install -g vici

# start vici

via docker

docker run -p 4454:4454 -e VICI_SECRET="top_secret_key" scriptnull/vici:latest


vici is a web server, that can execute scripts for the action you instruct.

Actions can be configured by giving a special file called vici.yml.

  - name: echoHello
    script: "/scripts/"
  - name: deploy-myapp
    script: "/scripts/"

The above vici.yml will give you a POST /do/{action-name} endpoint, which on requested will execute the script corresponding to that action.

All the action scripts receive 2 arguments.

  1. payload - The payload sent in the request body.
  2. query - The query parameters as JSON value.
POST /do/echoHello?key=value

{ "hello" : "world" }
# echoHello.js
echo "Hello world"
echo "payload is $1" 
echo "query is $2"


For now, all your requests to vici server must contain the VICI_SECRET as a query parameter or header.

  • query - POST /do/echoHello?secret=my_simple_vici_secret
  • header - X-VICI-SECRET : my_simple_vici_secret


vici settings can be changed by changing appropriate environment variables.

Env Usage Defaults
VICI_YML_PATH path to find the vici yml file vici.yml inside vici repository
VICI_PORT port to be used for vici server 4454
VICI_SECRET secret phrase to authenticate with vici my_simple_vici_secret


Handling success and failures

vici can execute some other actions specified in the yml, in case of success or failure of one action.

success and failure is determined by the exit code of the script provided in the action.

  - name: notify-gitter
    script: "/scripts/notify-gitter.js"
  - name: echoHello
    script: "/scripts/"
      - do: notify-gitter
          url: ""
          message: "Executed echoHello successfully"
      - do: notify-gitter
          url: ""
          message: "Failed to execute echoHello"

BONUS : Script for notifying gitter

If echoHello is success, it will trigger the actions in on_success serially. In this case, only one action i.e. notify-gitter

do tag instructs vici to send a HTTP request to vici server. payload tag helps define payload to be sent in the HTTP request.

docker - cooking

scriptnull/vici image is built on top of debian installed with node.js. So, you should be able to execute bash, python, node.js etc. scripts. If you are using docker, this gets even more fun. You can cook the flavour of vici, you want.

Dockerfile for cooking flavour of vici, that could exceute ruby scripts looks like this

FROM scriptnull/vici:latest

RUN apt-get install ruby-full -y

docker - mounting scripts

Mount volumes from host, to provide vici.yml and scripts.

docker run -p 4454:4454 -v /scripts:/scripts scriptnull/vici:latest

docker - mounting docker

Host's docker can be accessed from inside of vici, by mounting the docker sock.

docker run -p 4454:4454  -v /var/run/docker.sock:/var/run/docker.sock scriptnull/vici:latest

This is useful for cases, where vici is used to automate deployments via docker.


Always welcome.


Thanks for taking time to check vici. It means a lot to the project.


If you are using vici in your stack, for automating deployments, remote execution etc. Support vici project by adding a badge in your project.