diff --git a/action/list.go b/action/list.go
index a2d35c7..8ff6c69 100644
--- a/action/list.go
+++ b/action/list.go
@@ -1,6 +1,7 @@
 package action
 
 import (
+	"encoding/json"
 	"path/filepath"
 	"sort"
 
@@ -13,8 +14,8 @@
 // Params:
 //  - dir (string): basedir
 //  - deep (bool): whether to do a deep scan or a shallow scan
-func List(basedir string, deep bool) {
-
+//  - format (string): The format to output (text, json, json-pretty)
+func List(basedir string, deep bool, format string) {
 	basedir, err := filepath.Abs(basedir)
 	if err != nil {
 		msg.Die("Could not read directory: %s", err)
@@ -27,34 +28,71 @@
 	h := &dependency.DefaultMissingPackageHandler{Missing: []string{}, Gopath: []string{}}
 	r.Handler = h
 
-	sortable, err := r.ResolveLocal(deep)
+	localPkgs, err := r.ResolveLocal(deep)
 	if err != nil {
 		msg.Die("Error listing dependencies: %s", err)
 	}
-
-	msg.Info("Sorting...")
-	sort.Strings(sortable)
-
-	msg.Puts("INSTALLED packages:")
-	for _, k := range sortable {
-		v, err := filepath.Rel(basedir, k)
+	sort.Strings(localPkgs)
+	installed := make([]string, len(localPkgs))
+	for i, pkg := range localPkgs {
+		relPkg, err := filepath.Rel(basedir, pkg)
 		if err != nil {
-			//msg.Warn("Failed to Rel path: %s", err)
-			v = k
+			// msg.Warn("Failed to Rel path: %s", err)
+			relPkg = pkg
 		}
-		msg.Puts("\t%s", v)
+		installed[i] = relPkg
+	}
+	l := PackageList{
+		Installed: installed,
+		Missing:   h.Missing,
+		Gopath:    h.Gopath,
 	}
 
-	if len(h.Missing) > 0 {
-		msg.Puts("\nMISSING packages:")
-		for _, pkg := range h.Missing {
+	outputList(l, format)
+}
+
+// PackageList contains the packages being used by their location
+type PackageList struct {
+	Installed []string `json:"installed"`
+	Missing   []string `json:"missing"`
+	Gopath    []string `json:"gopath"`
+}
+
+const (
+	textFormat       = "text"
+	jsonFormat       = "json"
+	jsonPrettyFormat = "json-pretty"
+)
+
+func outputList(l PackageList, format string) {
+	switch format {
+	case textFormat:
+		msg.Puts("INSTALLED packages:")
+		for _, pkg := range l.Installed {
 			msg.Puts("\t%s", pkg)
 		}
-	}
-	if len(h.Gopath) > 0 {
-		msg.Puts("\nGOPATH packages:")
-		for _, pkg := range h.Gopath {
-			msg.Puts("\t%s", pkg)
+
+		if len(l.Missing) > 0 {
+			msg.Puts("\nMISSING packages:")
+			for _, pkg := range l.Missing {
+				msg.Puts("\t%s", pkg)
+			}
 		}
+		if len(l.Gopath) > 0 {
+			msg.Puts("\nGOPATH packages:")
+			for _, pkg := range l.Gopath {
+				msg.Puts("\t%s", pkg)
+			}
+		}
+	case jsonFormat:
+		json.NewEncoder(msg.Default.Stdout).Encode(l)
+	case jsonPrettyFormat:
+		b, err := json.MarshalIndent(l, "", "  ")
+		if err != nil {
+			msg.Die("could not unmarshal package list: %s", err)
+		}
+		msg.Puts(string(b))
+	default:
+		msg.Die("invalid output format: must be one of: json|json-pretty|text")
 	}
 }
diff --git a/action/list_test.go b/action/list_test.go
index 6792210..69e3eaf 100644
--- a/action/list_test.go
+++ b/action/list_test.go
@@ -2,20 +2,49 @@
 
 import (
 	"bytes"
+	"encoding/json"
 	"testing"
 
 	"github.com/Masterminds/glide/msg"
 )
 
 func TestList(t *testing.T) {
-	var buf bytes.Buffer
-	old := msg.Default.Stdout
 	msg.Default.PanicOnDie = true
+	old := msg.Default.Stdout
+	defer func() {
+		msg.Default.Stdout = old
+	}()
+
+	var buf bytes.Buffer
 	msg.Default.Stdout = &buf
-	List("../", false)
+	List("../", false, "text")
 	if buf.Len() < 5 {
 		t.Error("Expected some data to be found.")
 	}
-	// TODO: We should capture and test output.
-	msg.Default.Stdout = old
+
+	var buf2 bytes.Buffer
+	msg.Default.Stdout = &buf2
+	List("../", false, "json")
+	j := buf2.Bytes()
+	var o PackageList
+	err := json.Unmarshal(j, &o)
+	if err != nil {
+		t.Errorf("Error unmarshaling json list: %s", err)
+	}
+	if len(o.Installed) == 0 {
+		t.Error("No packages found on json list")
+	}
+
+	var buf3 bytes.Buffer
+	msg.Default.Stdout = &buf3
+	List("../", false, "json-pretty")
+	j = buf3.Bytes()
+	var o2 PackageList
+	err = json.Unmarshal(j, &o2)
+	if err != nil {
+		t.Errorf("Error unmarshaling json-pretty list: %s", err)
+	}
+	if len(o2.Installed) == 0 {
+		t.Error("No packages found on json-pretty list")
+	}
 }
diff --git a/action/project_info.go b/action/project_info.go
new file mode 100644
index 0000000..5e0995e
--- /dev/null
+++ b/action/project_info.go
@@ -0,0 +1,39 @@
+package action
+
+import (
+	"bytes"
+
+	"github.com/Masterminds/glide/msg"
+)
+
+func Info(format string) {
+	conf := EnsureConfig()
+	var buffer bytes.Buffer
+	varInit := false
+	for _, var_format := range format {
+		if varInit {
+			switch var_format {
+			case 'n':
+				buffer.WriteString(conf.Name)
+			case 'd':
+				buffer.WriteString(conf.Description)
+			case 'h':
+				buffer.WriteString(conf.Home)
+			case 'l':
+				buffer.WriteString(conf.License)
+			default:
+				msg.Die("Invalid format %s", string(var_format))
+			}
+		} else {
+			switch var_format {
+			case '%':
+				varInit = true
+				continue
+			default:
+				buffer.WriteString(string(var_format))
+			}
+		}
+		varInit = false
+	}
+	msg.Puts(buffer.String())
+}
diff --git a/glide.go b/glide.go
index e13a8d9..e205796 100644
--- a/glide.go
+++ b/glide.go
@@ -52,7 +52,7 @@
 	"os/user"
 )
 
-var version = "0.10.2"
+var version = "0.11.0-dev"
 
 const usage = `The lightweight vendor package manager for your Go projects.
 
@@ -134,12 +134,12 @@
 			ShortName: "init",
 			Usage:     "Initialize a new project, creating a glide.yaml file",
 			Description: `This command starts from a project without Glide and
-	sets it up. It generates a glide.yaml file, parsing your codebase to guess
-	the dependencies to include. Once this step is done you may edit the
-	glide.yaml file to update imported dependency properties such as the version
-	or version range to include.
+   sets it up. It generates a glide.yaml file, parsing your codebase to guess
+   the dependencies to include. Once this step is done you may edit the
+   glide.yaml file to update imported dependency properties such as the version
+   or version range to include.
 
-	To fetch the dependencies you may run 'glide install'.`,
+   To fetch the dependencies you may run 'glide install'.`,
 			Flags: []cli.Flag{
 				cli.BoolFlag{
 					Name:  "skip-import",
@@ -154,33 +154,33 @@
 			Name:  "get",
 			Usage: "Install one or more packages into `vendor/` and add dependency to glide.yaml.",
 			Description: `Gets one or more package (like 'go get') and then adds that file
-	to the glide.yaml file. Multiple package names can be specified on one line.
+   to the glide.yaml file. Multiple package names can be specified on one line.
 
-		$ glide get github.com/Masterminds/cookoo/web
+   	$ glide get github.com/Masterminds/cookoo/web
 
-	The above will install the project github.com/Masterminds/cookoo and add
-	the subpackage 'web'.
+   The above will install the project github.com/Masterminds/cookoo and add
+   the subpackage 'web'.
 
-	If a fetched dependency has a glide.yaml file, configuration from Godep,
-	GPM, or GB Glide that configuration will be used to find the dependencies
-	and versions to fetch. If those are not available the dependent packages will
-	be fetched as either a version specified elsewhere or the latest version.
+   If a fetched dependency has a glide.yaml file, configuration from Godep,
+   GPM, or GB Glide that configuration will be used to find the dependencies
+   and versions to fetch. If those are not available the dependent packages will
+   be fetched as either a version specified elsewhere or the latest version.
 
-	When adding a new dependency Glide will perform an update to work out the
-	the versions to use from the dependency tree. This will generate an updated
-	glide.lock file with specific locked versions to use.
+   When adding a new dependency Glide will perform an update to work out the
+   the versions to use from the dependency tree. This will generate an updated
+   glide.lock file with specific locked versions to use.
 
-	If you are storing the outside dependencies in your version control system
-	(VCS), also known as vendoring, there are a few flags that may be useful.
-	The '--update-vendored' flag will cause Glide to update packages when VCS
-	information is unavailable. This can be used with the '--strip-vcs' flag which
-	will strip VCS data found in the vendor directory. This is useful for
-	removing VCS data from transitive dependencies and initial setups. The
-	'--strip-vendor' flag will remove any nested 'vendor' folders and
-	'Godeps/_workspace' folders after an update (along with undoing any Godep
-	import rewriting). Note, The Godeps specific functionality is deprecated and
-	will be removed when most Godeps users have migrated to using the vendor
-	folder.`,
+   If you are storing the outside dependencies in your version control system
+   (VCS), also known as vendoring, there are a few flags that may be useful.
+   The '--update-vendored' flag will cause Glide to update packages when VCS
+   information is unavailable. This can be used with the '--strip-vcs' flag which
+   will strip VCS data found in the vendor directory. This is useful for
+   removing VCS data from transitive dependencies and initial setups. The
+   '--strip-vendor' flag will remove any nested 'vendor' folders and
+   'Godeps/_workspace' folders after an update (along with undoing any Godep
+   import rewriting). Note, The Godeps specific functionality is deprecated and
+   will be removed when most Godeps users have migrated to using the vendor
+   folder.`,
 			Flags: []cli.Flag{
 				cli.BoolFlag{
 					Name:  "insecure",
@@ -259,12 +259,11 @@
 			ShortName: "rm",
 			Usage:     "Remove a package from the glide.yaml file, and regenerate the lock file.",
 			Description: `This takes one or more package names, and removes references from the glide.yaml file.
-	This will rebuild the glide lock file with the following constraints:
+   This will rebuild the glide lock file with the following constraints:
 
-	- Dependencies are re-negotiated. Any that are no longer used are left out of the lock.
-	- Minor version re-nogotiation is performed on remaining dependencies.
-	- No updates are peformed. You may want to run 'glide up' to accomplish that.
-`,
+   - Dependencies are re-negotiated. Any that are no longer used are left out of the lock.
+   - Minor version re-nogotiation is performed on remaining dependencies.
+   - No updates are peformed. You may want to run 'glide up' to accomplish that.`,
 			Flags: []cli.Flag{
 				cli.BoolFlag{
 					Name:  "delete,d",
@@ -360,9 +359,7 @@
 			Description: `Given a directory, list all the relevant Go paths that are not vendored.
 
 Example:
-
-			$ go test $(glide novendor)
-`,
+   $ go test $(glide novendor)`,
 			Flags: []cli.Flag{
 				cli.StringFlag{
 					Name:  "dir,d",
@@ -392,12 +389,12 @@
 			ShortName: "i",
 			Usage:     "Install a project's dependencies",
 			Description: `This uses the native VCS of each packages to install
-		the appropriate version. There are two ways a projects dependencies can
-	be installed. When there is a glide.yaml file defining the dependencies but
-	no lock file (glide.lock) the dependencies are installed using the "update"
-	command and a glide.lock file is generated pinning all dependencies. If a
-	glide.lock file is already present the dependencies are installed or updated
-	from the lock file.`,
+   the appropriate version. There are two ways a projects dependencies can
+   be installed. When there is a glide.yaml file defining the dependencies but
+   no lock file (glide.lock) the dependencies are installed using the "update"
+   command and a glide.lock file is generated pinning all dependencies. If a
+   glide.lock file is already present the dependencies are installed or updated
+   from the lock file.`,
 			Flags: []cli.Flag{
 				cli.BoolFlag{
 					Name:  "delete",
@@ -458,42 +455,41 @@
 			ShortName: "up",
 			Usage:     "Update a project's dependencies",
 			Description: `This uses the native VCS of each package to try to
-	pull the most applicable updates. Packages with fixed refs (Versions or
-	tags) will not be updated. Packages with no ref or with a branch ref will
-	be updated as expected.
+   pull the most applicable updates. Packages with fixed refs (Versions or
+   tags) will not be updated. Packages with no ref or with a branch ref will
+   be updated as expected.
 
-	If a dependency has a glide.yaml file, update will read that file and
-	update those dependencies accordingly. Those dependencies are maintained in
-	a the top level 'vendor/' directory. 'vendor/foo/bar' will have its
-	dependencies stored in 'vendor/'. This behavior can be disabled with
-	'--no-recursive'. When this behavior is skipped a glide.lock file is not
-	generated because the full dependency tree cannot be known.
+   If a dependency has a glide.yaml file, update will read that file and
+   update those dependencies accordingly. Those dependencies are maintained in
+   a the top level 'vendor/' directory. 'vendor/foo/bar' will have its
+   dependencies stored in 'vendor/'. This behavior can be disabled with
+   '--no-recursive'. When this behavior is skipped a glide.lock file is not
+   generated because the full dependency tree cannot be known.
 
-	Glide will also import Godep, GB, and GPM files as it finds them in dependencies.
-	It will create a glide.yaml file from the Godeps data, and then update. This
-	has no effect if '--no-recursive' is set.
+   Glide will also import Godep, GB, and GPM files as it finds them in dependencies.
+   It will create a glide.yaml file from the Godeps data, and then update. This
+   has no effect if '--no-recursive' is set.
 
-	If you are storing the outside dependencies in your version control system
-	(VCS), also known as vendoring, there are a few flags that may be useful.
-	The '--update-vendored' flag will cause Glide to update packages when VCS
-	information is unavailable. This can be used with the '--strip-vcs' flag which
-	will strip VCS data found in the vendor directory. This is useful for
-	removing VCS data from transitive dependencies and initial setups. The
-	'--strip-vendor' flag will remove any nested 'vendor' folders and
-	'Godeps/_workspace' folders after an update (along with undoing any Godep
-	import rewriting). Note, The Godeps specific functionality is deprecated and
-	will be removed when most Godeps users have migrated to using the vendor
-	folder.
+   If you are storing the outside dependencies in your version control system
+   (VCS), also known as vendoring, there are a few flags that may be useful.
+   The '--update-vendored' flag will cause Glide to update packages when VCS
+   information is unavailable. This can be used with the '--strip-vcs' flag which
+   will strip VCS data found in the vendor directory. This is useful for
+   removing VCS data from transitive dependencies and initial setups. The
+   '--strip-vendor' flag will remove any nested 'vendor' folders and
+   'Godeps/_workspace' folders after an update (along with undoing any Godep
+   import rewriting). Note, The Godeps specific functionality is deprecated and
+   will be removed when most Godeps users have migrated to using the vendor
+   folder.
 
-	Note, Glide detects vendored dependencies. With the '--update-vendored' flag
-	Glide will update vendored dependencies leaving them in a vendored state.
-	Tertiary dependencies will not be vendored automatically unless the
-	'--strip-vcs' flag is used along with it.
+   Note, Glide detects vendored dependencies. With the '--update-vendored' flag
+   Glide will update vendored dependencies leaving them in a vendored state.
+   Tertiary dependencies will not be vendored automatically unless the
+   '--strip-vcs' flag is used along with it.
 
-	By default, packages that are discovered are considered transient, and are
-	not stored in the glide.yaml file. The --file=NAME.yaml flag allows you
-	to save the discovered dependencies to a YAML file.
-	`,
+   By default, packages that are discovered are considered transient, and are
+   not stored in the glide.yaml file. The --file=NAME.yaml flag allows you
+   to save the discovered dependencies to a YAML file.`,
 			Flags: []cli.Flag{
 				cli.BoolFlag{
 					Name:  "delete",
@@ -571,11 +567,11 @@
 			Name:  "tree",
 			Usage: "Tree prints the dependencies of this project as a tree.",
 			Description: `This scans a project's source files and builds a tree
-	representation of the import graph.
+   representation of the import graph.
 
-	It ignores testdata/ and directories that begin with . or _. Packages in
-	vendor/ are only included if they are referenced by the main project or
-	one of its dependencies.`,
+   It ignores testdata/ and directories that begin with . or _. Packages in
+   vendor/ are only included if they are referenced by the main project or
+   one of its dependencies.`,
 			Action: func(c *cli.Context) {
 				action.Tree(".", false)
 			},
@@ -585,14 +581,62 @@
 			Usage: "List prints all dependencies that the present code references.",
 			Description: `List scans your code and lists all of the packages that are used.
 
-			It does not use the glide.yaml. Instead, it inspects the code to determine what packages are
-			imported.
+   It does not use the glide.yaml. Instead, it inspects the code to determine what packages are
+   imported.
 
-			Directories that begin with . or _ are ignored, as are testdata directories. Packages in
-			vendor are only included if they are used by the project.
-			`,
+   Directories that begin with . or _ are ignored, as are testdata directories. Packages in
+   vendor are only included if they are used by the project.`,
 			Action: func(c *cli.Context) {
-				action.List(".", true)
+				action.List(".", true, c.String("output"))
+			},
+			Flags: []cli.Flag{
+				cli.StringFlag{
+					Name:  "output, o",
+					Usage: "Output format. One of: json|json-pretty|text",
+					Value: "text",
+				},
+			},
+		},
+		{
+			Name:  "info",
+			Usage: "Info prints information about this project",
+			Flags: []cli.Flag{
+				cli.StringFlag{
+					Name:  "format, f",
+					Usage: `Format of the information wanted (required).`,
+				},
+			},
+			Description: `A format containing the text with replacement variables
+   has to be passed in. Those variables are:
+
+       %n - name
+       %d - description
+       %h - homepage
+       %l - license
+
+   For example, given a project with the following glide.yaml:
+
+       package: foo
+       homepage: https://example.com
+       license: MIT
+       description: Some example description
+
+   Then running the following commands:
+
+       glide info -f %n
+          prints 'foo'
+
+       glide info -f "License: %l"
+          prints 'License: MIT'
+
+       glide info -f "%n - %d - %h - %l"
+          prints 'foo - Some example description - https://example.com - MIT'`,
+			Action: func(c *cli.Context) {
+				if c.IsSet("format") {
+					action.Info(c.String("format"))
+				} else {
+					cli.ShowCommandHelp(c, c.Command.Name)
+				}
 			},
 		},
 		{
