diff --git a/VERSION b/VERSION
index 15d45d4..1df3b82 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.6.9
+1.6.10
diff --git a/internal/pkg/commands/command.go b/internal/pkg/commands/command.go
index 8cefc14..6e6d0d3 100644
--- a/internal/pkg/commands/command.go
+++ b/internal/pkg/commands/command.go
@@ -24,6 +24,7 @@
 	"io/ioutil"
 	"log"
 	"os"
+	"os/user"
 	"path/filepath"
 	"reflect"
 	"regexp"
@@ -295,16 +296,59 @@
 	}
 }
 
-func ReadConfig() {
-	if len(GlobalOptions.Config) == 0 {
+func homeDir() (string, error) {
+
+	// First attempt is using the current user information, if that
+	// fails we attempt to use the environment variables via a call
+	// to os.UserHomeDir()
+	cur, err := user.Current()
+	if err != nil {
 		home, err := os.UserHomeDir()
 		if err != nil {
-			Warn.Printf("Unable to discover the user's home directory: %s", err)
-			home = "~"
+			return "", errors.New("unable to get current user or determine home directory via environment")
+		}
+		return home, nil
+	}
+	if len(cur.HomeDir) == 0 {
+		home, err := os.UserHomeDir()
+		if err != nil {
+			return "", errors.New("unable to get determine home directory via user information or environment")
+		}
+		return home, nil
+	}
+	return cur.HomeDir, nil
+}
+
+func ReadConfig() {
+	// assume that the config file was specified until it is
+	// determined it was not
+	if len(GlobalOptions.Config) == 0 {
+		home, err := homeDir()
+		if err != nil {
+			Error.Fatalf("Unable to create default configuration file path: %s", err.Error())
 		}
 		GlobalOptions.Config = filepath.Join(home, ".volt", "config")
 	}
 
+	// If the config file value is `~` or begins with `~/` then
+	// attempt to expand that to the user's home directory
+	if GlobalOptions.Config == "~" {
+		home, err := homeDir()
+		if err != nil {
+			Error.Fatalf("Unable to expand config file path '%s': %s",
+				GlobalOptions.Config, err)
+		}
+		GlobalOptions.Config = home
+	} else if strings.HasPrefix(GlobalOptions.Config, "~/") {
+		home, err := homeDir()
+		if err != nil {
+			Error.Fatalf("Unable to expand config file path '%s': %s",
+				GlobalOptions.Config, err)
+		}
+		GlobalOptions.Config = filepath.Join(home,
+			GlobalOptions.Config[2:])
+	}
+
 	if info, err := os.Stat(GlobalOptions.Config); err == nil && !info.IsDir() {
 		configFile, err := ioutil.ReadFile(GlobalOptions.Config)
 		if err != nil {
@@ -327,7 +371,6 @@
 			}
 		}
 	}
-
 }
 
 func NewConnection() (*grpc.ClientConn, error) {
diff --git a/voltctl.v3.config b/voltctl.v3.config
index d890fb7..a76d777 100644
--- a/voltctl.v3.config
+++ b/voltctl.v3.config
@@ -11,7 +11,7 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
-apiVersion: v2
+apiVersion: v3
 stacks:
 - name: default
   server: localhost:55555
