Skip to content
No description or website provided.
HTML Go Perl JavaScript Python Makefile Shell
Latest commit 62da360 May 19, 2016 @teharrison teharrison Merge pull request #302 from teharrison/master
add 'distinct' option to node query for list of distinct values, must be indexed field in node.attributes
Failed to load latest commit information.
docker missing mgo.v2 dependency Dec 17, 2015
libs vendorized Jun 10, 2015
shock-client Vendorizing Shock codebase. Sep 15, 2015
shock-server add 'distinct' option to node query to return list of distinct values… May 19, 2016
utils fixed stream upload and added debug information Nov 13, 2014
vendor minor refactoring Feb 10, 2016
.gitmodules Removed wiki submodule Apr 17, 2014
LICENSE added software license May 2, 2012
Makefile update dockerfile to use make Sep 1, 2015
RELEASE_NOTES.txt version / release notes updated Jan 29, 2016
VERSION version / release notes updated Jan 29, 2016
shock-client.conf.template missing auth section in example conf May 15, 2013
shock-server.conf.template Revert "Revert "added compression/archive functionality, cleaned up p… Apr 24, 2015


Shock is a platform to support computation, storage, and distribution. Designed from the ground up to be fast, scalable, fault tolerant, federated.

Shock is RESTful. Accessible from desktops, HPC systems, exotic hardware, the cloud and your smartphone.

Shock is for scientific data. One of the challenges of large volume scientific data is that without often complex metadata it is of little to no value. Shock allows storage and querying of complex metadata.

Shock is a data management system. The long term goals of Shock include the ability to annotate, anonymize, convert, filter, perform quality control, and statically subsample at line speed bioinformatics sequence data. Extensible plug-in architecture is in development.

Most importantly Shock is still very much in development. Be patient and contribute.

Shock is actively being developed at


Shock (requires mongodb=>2.0.3, go=>1.1.0, git, mercurial and bazaar). You must also set the $GOPATH and $GOROOT environment variables before installing Shock. There are two options for installing Shock.

OPTION 1: The recommended method for installing Shock is to download the Makefile located here to your $GOPATH directory and then run:

make install

OPTION 2: You could alternatively install Shock by running:

go get

The upside to using OPTION 1 is that this will insert the Shock version number into your Shock server to be displayed when the server is started and this will also generate the Shock documentation locally to be hosted by the server. The built binaries will be located in the env configured $GOPATH/bin/ directory.


Alternativly your can use Docker to compile Shock. The Dockerfile in directory "docker" in this repository compiles Shock statically.

docker build --force-rm --no-cache --tag shock:latest docker

If you only want the binary you can create an container from the image an copy the binary to your host. This will copy the shock-server binary to your current working directory

docker run --name shock shock:latest ls
docker cp shock:/gopath/bin/shock-server .
docker rm shock


In ubuntu you can simply install mongo with:

sudo apt-get install -y mongodb-server

If you do not want to use a package manager to install mongodb, use:

curl -s | tar -v -C /mongodb/ -xz

If you do not use a service manager such as systemd, you can start mongodb like this, in foreground:

/mongodb/bin/mongod --dbpath /data/

or in background:

nohup /mongodb/bin/mongod --dbpath /mnt/db/ &


The Shock configuration file is in INI file format. There is a template of the config file located at the root level of the repository.


To run:

shock-server -conf <path_to_config_file>


For further information about Shock's functionality, please refer to our github wiki.

Something went wrong with that request. Please try again.