diff --git a/cmd/eris-db.go b/cmd/eris-db.go
new file mode 100644
index 0000000000000000000000000000000000000000..543442a198e71154c3f6f90832c4afab026da65a
--- /dev/null
+++ b/cmd/eris-db.go
@@ -0,0 +1,63 @@
+// Copyright 2015, 2016 Eris Industries (UK) Ltd.
+// This file is part of Eris-RT
+
+// Eris-RT is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// Eris-RT is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Eris-RT.  If not, see <http://www.gnu.org/licenses/>.
+
+package commands
+
+import (
+  "fmt"
+  "os"
+
+  cobra "github.com/spf13/cobra"
+
+  common "github.com/eris-ltd/common/go/common"
+
+  version "github.com/eris-ltd/eris-db/version"
+)
+
+const VERSION = version.VERSION
+
+var ErisDbCmd = &cobra.Command {
+  Use:   "eris-db"
+  Short: "Eris-DB is the beating heart of the eris chain."
+  Long:  `Eris-DB is the beating heart of the eris chain.  Eris-DB combines
+a modular consensus engine and application manager to run a chain to suit
+your needs.
+
+Made with <3 by Eris Industries.
+
+Complete documentation is available at https://docs.erisindustries.com
+` + "\nVERSION:\n " + VERSION,
+  PersistentPreRun: func(cmd *cobra.Command, args [string]) {
+    // TODO: [ben] set up eris logger after glide resolution of logrus
+  },
+  Run: func(cmd *cobra.Command, args []string) { cmd.Help() },
+}
+
+func Execute() {
+  AddCommands()
+  ErisDbCmd.Execute()
+}
+
+func AddCommands() {
+  buildServeCommand()
+  ErisDbCmd.AddCommand()
+}
+
+func AddGlobalFlags() {
+	ErisCMCmd.PersistentFlags().BoolVarP(&do.Verbose, "verbose", "v", defaultVerbose(), "verbose output; more output than no output flags; less output than debug level; default respects $ERIS_DB_VERBOSE")
+	ErisCMCmd.PersistentFlags().BoolVarP(&do.Debug, "debug", "d", defaultDebug(), "debug level output; the most output available for eris-db; if it is too chatty use verbose flag; default respects $ERIS_DB_DEBUG")
+	ErisCMCmd.PersistentFlags().BoolVarP(&do.Output, "output", "o", defaultOutput(), "should eris-db provide an output of its job; default respects $ERIS_DB_OUTPUT")
+}
diff --git a/cmd/erisdb/main.go b/cmd/erisdb/main.go
index a3ef77a82c44cc4c1b463f25a92875cfac9067e8..2cf48ace139703d4474595b941868a1b9b7d121f 100644
--- a/cmd/erisdb/main.go
+++ b/cmd/erisdb/main.go
@@ -1,36 +1,62 @@
+// Copyright 2015, 2016 Eris Industries (UK) Ltd.
+// This file is part of Eris-RT
+
+// Eris-RT is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// Eris-RT is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Eris-RT.  If not, see <http://www.gnu.org/licenses/>.
+
 package main
 
 import (
-	"fmt"
-	edb "github.com/eris-ltd/eris-db/erisdb"
-	"os"
+	"github.com/eris-ltd/eris-db/cmd"
 )
 
-// TODO the input stuff.
 func main() {
-	args := os.Args[1:]
-	var baseDir string
-	var inProc bool
-	if len(args) > 0 {
-		baseDir = args[0]
-		if len(args) > 1 {
-			if args[1] == "inproc" {
-				inProc = true
-			}
-		}
-	} else {
-		baseDir = os.Getenv("HOME") + "/.erisdb"
-	}
-
-	proc, errSt := edb.ServeErisDB(baseDir, inProc)
-	if errSt != nil {
-		panic(errSt.Error())
-	}
-	errSe := proc.Start()
-	if errSe != nil {
-		panic(errSe.Error())
-	}
-	// TODO For now.
-	fmt.Println("DONTMINDME55891")
-	<-proc.StopEventChannel()
+  commands.Execute()
 }
+
+// package main
+//
+// import (
+// 	"fmt"
+// 	edb "github.com/eris-ltd/eris-db/erisdb"
+// 	"os"
+// )
+//
+// // TODO the input stuff.
+// func main() {
+// 	args := os.Args[1:]
+// 	var baseDir string
+// 	var inProc bool
+// 	if len(args) > 0 {
+// 		baseDir = args[0]
+// 		if len(args) > 1 {
+// 			if args[1] == "inproc" {
+// 				inProc = true
+// 			}
+// 		}
+// 	} else {
+// 		baseDir = os.Getenv("HOME") + "/.erisdb"
+// 	}
+//
+// 	proc, errSt := edb.ServeErisDB(baseDir, inProc)
+// 	if errSt != nil {
+// 		panic(errSt.Error())
+// 	}
+// 	errSe := proc.Start()
+// 	if errSe != nil {
+// 		panic(errSe.Error())
+// 	}
+// 	// TODO For now.
+// 	fmt.Println("DONTMINDME55891")
+// 	<-proc.StopEventChannel()
+// }
diff --git a/cmd/serve.go b/cmd/serve.go
new file mode 100644
index 0000000000000000000000000000000000000000..d2e385b7fce48fcc6e37b94839ae0f909f355718
--- /dev/null
+++ b/cmd/serve.go
@@ -0,0 +1,30 @@
+// Copyright 2015, 2016 Eris Industries (UK) Ltd.
+// This file is part of Eris-RT
+
+// Eris-RT is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// Eris-RT is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Eris-RT.  If not, see <http://www.gnu.org/licenses/>.
+
+package commands
+
+import (
+  "fmt"
+  "os"
+
+  cobra "github.com/spf13/cobra"
+
+  common "github.com/eris-ltd/common/go/common"
+
+  serve "github.com/eris-ltd/eris-db/serve"
+)
+
+var