diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index c3cc4996c31030c390bc57b25a7fff8ff6f7dc70..3faf7e9f3f1f72eb519d9b991a9ad806f58baec7 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -38,6 +38,7 @@ Code lint:
     - golang
     - lint
   script:
+    - "go install ./..."
     - "go get github.com/alecthomas/gometalinter"
     - "go get gopkg.in/mgo.v2"
     - "gometalinter --install"
diff --git a/dfssc/main.go b/dfssc/main.go
new file mode 100644
index 0000000000000000000000000000000000000000..2dfee6b99d123cde088fa11fa3aad4dd0933e16d
--- /dev/null
+++ b/dfssc/main.go
@@ -0,0 +1,46 @@
+package main
+
+import (
+	"dfss"
+	"flag"
+	"fmt"
+	"runtime"
+)
+
+var (
+	verbose bool
+)
+
+func init() {
+
+	flag.BoolVar(&verbose, "v", false, "Print verbose messages")
+
+	flag.Usage = func() {
+		fmt.Println("DFSS client command line v" + dfss.Version)
+		fmt.Println("A tool to sign multiparty contracts")
+
+		fmt.Println("\nUsage:")
+		fmt.Println("  dfssc command [flags]")
+
+		fmt.Println("\nThe commands are:")
+		fmt.Println("  help     print this help")
+		fmt.Println("  version  print dfss client version")
+
+		fmt.Println("\nFlags:")
+		flag.PrintDefaults()
+
+		fmt.Println()
+	}
+}
+
+func main() {
+	flag.Parse()
+	command := flag.Arg(0)
+
+	switch command {
+	case "version":
+		fmt.Println("v"+dfss.Version, runtime.GOOS, runtime.GOARCH)
+	default:
+		flag.Usage()
+	}
+}
diff --git a/version.go b/version.go
new file mode 100644
index 0000000000000000000000000000000000000000..afa2c6434a6c284f60bb3e4f24757fa9eacec33e
--- /dev/null
+++ b/version.go
@@ -0,0 +1,4 @@
+package dfss
+
+// Version represents the current version of the DFSS software suite
+const Version = "0.0.1-dev"