diff --git a/cmd/helm/serve.go b/cmd/helm/serve.go
index ae60833abae6444fea95bb0fd8cf34e478ff9398..3fca0bd8aa1d4120d8b8b8e81ea90dcce17b2420 100644
--- a/cmd/helm/serve.go
+++ b/cmd/helm/serve.go
@@ -17,17 +17,19 @@ limitations under the License.
 package main
 
 import (
+	"os"
+	"path/filepath"
+
 	"github.com/spf13/cobra"
 
 	"k8s.io/helm/pkg/repo"
 )
 
-var serveDesc = `This command starts a local chart repository server that serves the charts saved in your $HELM_HOME/local/ directory.`
-
-//TODO: add repoPath flag to be passed in in case you want
-//  to serve charts from a different local dir
+var serveDesc = `This command starts a local chart repository server that serves charts from a local directory.`
+var repoPath string
 
 func init() {
+	serveCmd.Flags().StringVar(&repoPath, "repo-path", localRepoDirectory(), "The local directory path from which to serve charts.")
 	RootCommand.AddCommand(serveCmd)
 }
 
@@ -35,9 +37,19 @@ var serveCmd = &cobra.Command{
 	Use:   "serve",
 	Short: "start a local http web server",
 	Long:  serveDesc,
-	Run:   serve,
+	RunE:  serve,
 }
 
-func serve(cmd *cobra.Command, args []string) {
-	repo.StartLocalRepo(localRepoDirectory())
+func serve(cmd *cobra.Command, args []string) error {
+
+	repoPath, err := filepath.Abs(repoPath)
+	if err != nil {
+		return err
+	}
+	if _, err := os.Stat(repoPath); os.IsNotExist(err) {
+		return err
+	}
+
+	repo.StartLocalRepo(repoPath)
+	return nil
 }