diff --git a/cmd/apps.go b/cmd/apps.go
index 3bc34f3a..7fff6bb9 100644
--- a/cmd/apps.go
+++ b/cmd/apps.go
@@ -133,7 +133,7 @@ func (d *DryccCmd) AppInfo(appID string) error {
 			table.Append([]string{"", "Release:", process.Release})
 			table.Append([]string{"", "State:", process.State})
 			table.Append([]string{"", "Type:", process.Type})
-			table.Append([]string{"", "Started:", process.Started.Format("2006-01-02T15:04:05MST")})
+			table.Append([]string{"", "Started:", d.formatTime(process.Started)})
 			if len(processes) > index+1 {
 				table.Append([]string{""})
 			}
diff --git a/cmd/apps_test.go b/cmd/apps_test.go
index e99156e2..27e234e5 100644
--- a/cmd/apps_test.go
+++ b/cmd/apps_test.go
@@ -198,7 +198,7 @@ Processes:
               Release:                                v2                                  
               State:                                  up                                  
               Type:                                   cmd                                 
-              Started:                                2016-08-22T17:42:16UTC              
+              Started:                                2016-08-22T17:42:16Z                
 Domains:      
               Domain:                                 lorem-ipsum                         
               Created:                                2016-08-22T17:40:16Z                
diff --git a/cmd/certs.go b/cmd/certs.go
index c3983862..2d5fafb5 100644
--- a/cmd/certs.go
+++ b/cmd/certs.go
@@ -4,7 +4,6 @@ import (
 	"fmt"
 	"os"
 	"strings"
-	"time"
 
 	drycc "github.com/drycc/controller-sdk-go"
 	"github.com/drycc/controller-sdk-go/certs"
@@ -136,8 +135,8 @@ func (d *DryccCmd) CertInfo(name string) error {
 	table.Append([]string{""})
 	table.Append([]string{"Connected Domains:", safeGetString(strings.Join(cert.Domains[:], ","))})
 	table.Append([]string{"Owner:", safeGetString(cert.Owner)})
-	table.Append([]string{"Created:", d.formatTime(safeGetTime(cert.Created, time.RFC3339))})
-	table.Append([]string{"Updated:", d.formatTime(safeGetTime(cert.Updated, time.RFC3339))})
+	table.Append([]string{"Created:", d.formatTime(cert.Created)})
+	table.Append([]string{"Updated:", d.formatTime(cert.Updated)})
 	table.Render()
 	return nil
 }
diff --git a/cmd/certs_test.go b/cmd/certs_test.go
index 0616ff91..f8f7bd52 100644
--- a/cmd/certs_test.go
+++ b/cmd/certs_test.go
@@ -168,8 +168,8 @@ func TestCertsInfo(t *testing.T) {
 			"issuer": "testca",
 			"subject": "testing",
 			"common_name": "test.drycc.com",
-			"created": "2016-06-09T00:00:00UTC",
-			"updated": "2016-06-09T00:00:00UTC",
+			"created": "2016-06-09T00:00:00Z",
+			"updated": "2016-06-09T00:00:00Z",
 			"expires": "2016-06-09T00:00:00UTC",
 			"starts": "2016-06-09T00:00:00UTC",
 			"fingerprint": "ab:12:ab:12:ab",
@@ -222,8 +222,8 @@ Subject:              <none>
                       
 Connected Domains:    <none>            
 Owner:                <none>            
-Created:              <none>            
-Updated:              <none>            
+Created:                                
+Updated:                                
 `, "output")
 }
 
diff --git a/cmd/ps.go b/cmd/ps.go
index b77706de..66ee0200 100644
--- a/cmd/ps.go
+++ b/cmd/ps.go
@@ -132,7 +132,11 @@ func (d *DryccCmd) PsDescribe(appID, podID string) error {
 			table.Append([]string{"State:", key})
 			value := containerState.State[key]
 			for innerKey := range value {
-				table.Append([]string{fmt.Sprintf("  %s:", innerKey), strconv.Quote(fmt.Sprintf("%v", value[innerKey]))})
+				innerValue := strconv.Quote(fmt.Sprintf("%v", value[innerKey]))
+				if innerKey == "startedAt" || innerKey == "finishedAt" {
+					innerValue = d.formatTime(fmt.Sprintf("%s", value[innerKey]))
+				}
+				table.Append([]string{fmt.Sprintf("  %s:", innerKey), innerValue})
 			}
 		}
 		// LastState
@@ -140,7 +144,11 @@ func (d *DryccCmd) PsDescribe(appID, podID string) error {
 			table.Append([]string{"Last State:", key})
 			value := containerState.LastState[key]
 			for innerKey := range value {
-				table.Append([]string{fmt.Sprintf("  %s:", innerKey), strconv.Quote(fmt.Sprintf("%v", value[innerKey]))})
+				innerValue := strconv.Quote(fmt.Sprintf("%v", value[innerKey]))
+				if innerKey == "startedAt" || innerKey == "finishedAt" {
+					innerValue = d.formatTime(fmt.Sprintf("%s", value[innerKey]))
+				}
+				table.Append([]string{fmt.Sprintf("  %s:", innerKey), innerValue})
 			}
 		}
 		table.Append([]string{"Ready:", fmt.Sprintf("%v", containerState.Ready)})
@@ -162,7 +170,7 @@ func (d *DryccCmd) PsDescribe(appID, podID string) error {
 			te.Append([]string{
 				fmt.Sprintf("  %s", ev.Reason),
 				ev.Message,
-				ev.Created.Format("2006-01-02T15:04:05MST"),
+				d.formatTime(ev.Created),
 			})
 		}
 		te.Render()
@@ -208,7 +216,7 @@ func printProcesses(d *DryccCmd, appID string, input []api.Pods) {
 					pod.Type,
 					pod.Ready,
 					fmt.Sprintf("%v", pod.Restarts),
-					pod.Started.Format("2006-01-02T15:04:05MST"),
+					d.formatTime(pod.Started),
 				})
 			}
 		}
diff --git a/cmd/ps_test.go b/cmd/ps_test.go
index 2eafa25d..8fdc51dc 100644
--- a/cmd/ps_test.go
+++ b/cmd/ps_test.go
@@ -6,10 +6,8 @@ import (
 	"io"
 	"net/http"
 	"testing"
-	"time"
 
 	"github.com/drycc/controller-sdk-go/api"
-	dtime "github.com/drycc/controller-sdk-go/pkg/time"
 	"github.com/drycc/workflow-cli/pkg/testutil"
 	"github.com/stretchr/testify/assert"
 	"golang.org/x/net/websocket"
@@ -17,10 +15,6 @@ import (
 
 func TestPrintProcesses(t *testing.T) {
 	var b bytes.Buffer
-	d, err := time.Parse("2006-01-02T15:04:05MST", "2023-11-15T11:55:16CST")
-	if err != nil {
-		t.Fatal(err)
-	}
 	pods := []api.Pods{
 		{
 			Release:  "v3",
@@ -29,7 +23,7 @@ func TestPrintProcesses(t *testing.T) {
 			State:    "up",
 			Ready:    "1/1",
 			Restarts: 0,
-			Started:  dtime.Time{Time: &d},
+			Started:  "2023-11-15T11:55:16CST",
 		},
 		{
 			Release:  "v3",
@@ -38,7 +32,7 @@ func TestPrintProcesses(t *testing.T) {
 			State:    "up",
 			Ready:    "1/1",
 			Restarts: 0,
-			Started:  dtime.Time{Time: &d},
+			Started:  "2023-11-15T11:55:16CST",
 		},
 	}
 	cf, server, err := testutil.NewTestServerAndClient()
@@ -88,8 +82,8 @@ func TestPsList(t *testing.T) {
 	err = cmdr.PsList("foo", -1)
 	assert.NoError(t, err)
 
-	assert.Equal(t, b.String(), `NAME                        RELEASE    STATE    PTYPE    READY    RESTARTS    STARTED                
-foo-web-4084101150-c871y    v2         up       web      1/1      0           2016-02-13T00:47:52UTC    
+	assert.Equal(t, b.String(), `NAME                        RELEASE    STATE    PTYPE    READY    RESTARTS    STARTED             
+foo-web-4084101150-c871y    v2         up       web      1/1      0           2016-02-13T00:47:52    
 `, "output")
 }
 
diff --git a/cmd/pts.go b/cmd/pts.go
index fccc348a..9940e6b7 100644
--- a/cmd/pts.go
+++ b/cmd/pts.go
@@ -130,7 +130,7 @@ func printProcessTypes(d *DryccCmd, appID string, ptypes api.Ptypes) {
 				pt.Ready,
 				fmt.Sprintf("%v", pt.UpToDate),
 				fmt.Sprintf("%v", pt.AvailableReplicas),
-				pt.Started.Format("2006-01-02T15:04:05MST"),
+				d.formatTime(pt.Started),
 			})
 		}
 		table.Render()
@@ -190,7 +190,7 @@ func printProcessTypeDetail(d *DryccCmd, ptypeStates api.PtypeStates, events api
 			te.Append([]string{
 				fmt.Sprintf("  %s", ev.Reason),
 				ev.Message,
-				ev.Created.Format("2006-01-02T15:04:05MST"),
+				d.formatTime(ev.Created),
 			})
 		}
 		te.Render()
diff --git a/cmd/pts_test.go b/cmd/pts_test.go
index c178e7b2..977923e2 100644
--- a/cmd/pts_test.go
+++ b/cmd/pts_test.go
@@ -5,20 +5,14 @@ import (
 	"fmt"
 	"net/http"
 	"testing"
-	"time"
 
 	"github.com/drycc/controller-sdk-go/api"
-	dtime "github.com/drycc/controller-sdk-go/pkg/time"
 	"github.com/drycc/workflow-cli/pkg/testutil"
 	"github.com/stretchr/testify/assert"
 )
 
 func TestPrintProcessTypes(t *testing.T) {
 	var b bytes.Buffer
-	d, err := time.Parse("2006-01-02T15:04:05MST", "2024-07-04T14:33:00CST")
-	if err != nil {
-		t.Fatal(err)
-	}
 	ptypes := api.Ptypes{
 		{
 			Name:              "web",
@@ -26,7 +20,7 @@ func TestPrintProcessTypes(t *testing.T) {
 			Ready:             "1/1",
 			UpToDate:          1,
 			AvailableReplicas: 1,
-			Started:           dtime.Time{Time: &d},
+			Started:           "2024-07-04T14:33:00CST",
 		},
 		{
 			Name:              "worker",
@@ -34,7 +28,7 @@ func TestPrintProcessTypes(t *testing.T) {
 			Ready:             "1/1",
 			UpToDate:          1,
 			AvailableReplicas: 1,
-			Started:           dtime.Time{Time: &d},
+			Started:           "2024-07-04T14:33:00CST",
 		},
 	}
 	cf, server, err := testutil.NewTestServerAndClient()
@@ -83,8 +77,8 @@ func TestPtsList(t *testing.T) {
 	err = cmdr.PtsList("foo", -1)
 	assert.NoError(t, err)
 
-	assert.Equal(t, b.String(), `NAME    RELEASE    READY    UP-TO-DATE    AVAILABLE    STARTED                
-web     v1         1/1      1             1            2016-02-13T00:47:52UTC    
+	assert.Equal(t, b.String(), `NAME    RELEASE    READY    UP-TO-DATE    AVAILABLE    STARTED             
+web     v1         1/1      1             1            2016-02-13T00:47:52    
 `, "output")
 }
 
diff --git a/cmd/volumes.go b/cmd/volumes.go
index 997ebd69..c2222acd 100644
--- a/cmd/volumes.go
+++ b/cmd/volumes.go
@@ -27,7 +27,6 @@ func (d *DryccCmd) VolumesList(appID string, results int) error {
 	if results == defaultLimit {
 		results = s.Limit
 	}
-	//fmt.Println("-----app-----", appID)  # debug
 	volumes, count, err := volumes.List(s.Client, appID, results)
 	if d.checkAPICompatibility(s.Client, err) != nil {
 		return err
diff --git a/go.mod b/go.mod
index a028885e..efd6c175 100644
--- a/go.mod
+++ b/go.mod
@@ -5,7 +5,7 @@ go 1.22
 require (
 	github.com/containerd/console v1.0.4
 	github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815
-	github.com/drycc/controller-sdk-go v0.0.0-20240709083211-c3849cd23514
+	github.com/drycc/controller-sdk-go v0.0.0-20240710072101-82db20de8e4a
 	github.com/drycc/pkg v0.0.0-20240225112316-78fc9239f51f
 	github.com/olekukonko/tablewriter v0.0.5
 	github.com/stretchr/testify v1.9.0
diff --git a/go.sum b/go.sum
index d035f28f..6aabc93b 100644
--- a/go.sum
+++ b/go.sum
@@ -4,8 +4,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c
 github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815 h1:bWDMxwH3px2JBh6AyO7hdCn/PkvCZXii8TGj7sbtEbQ=
 github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE=
-github.com/drycc/controller-sdk-go v0.0.0-20240709083211-c3849cd23514 h1:f30ztVlj3CTWqvDtXpo09Kz6DOe3rS8+MGxPwvJrli8=
-github.com/drycc/controller-sdk-go v0.0.0-20240709083211-c3849cd23514/go.mod h1:n6eQe1irJqjwLo/7t9+Dhdv6faSESQN+ATnZRBP3/Uc=
+github.com/drycc/controller-sdk-go v0.0.0-20240710072101-82db20de8e4a h1:ETfWMgVW7ZR5PqFwnaCYbZHsejFym/vPdsv5RLTjNkE=
+github.com/drycc/controller-sdk-go v0.0.0-20240710072101-82db20de8e4a/go.mod h1:n6eQe1irJqjwLo/7t9+Dhdv6faSESQN+ATnZRBP3/Uc=
 github.com/drycc/pkg v0.0.0-20240225112316-78fc9239f51f h1:kgjvUQJeAszDoU1Vo4vTTE92KI8Av3JPb6Qn890niXg=
 github.com/drycc/pkg v0.0.0-20240225112316-78fc9239f51f/go.mod h1:n+QxGif6ha9CEoxVnlipxb9IdmerybcUSzTEDFkvjiA=
 github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
diff --git a/parser/limits.go b/parser/limits.go
index 19d88c81..42db3922 100644
--- a/parser/limits.go
+++ b/parser/limits.go
@@ -107,7 +107,6 @@ Usage: drycc limits:unset [options] <type>...
 Arguments:
   <type>
     the process type as defined in your Procfile, such as 'web' or 'worker'.
-    Note that Dockerfile apps have a default 'cmd' process type.
 
 Options:
   -a --app=<app>
diff --git a/parser/pts.go b/parser/pts.go
index 993fecc0..45fad1d1 100644
--- a/parser/pts.go
+++ b/parser/pts.go
@@ -124,7 +124,6 @@ Usage: drycc pts:scale <ptype>=<num>... [options]
 Arguments:
   <ptype>
     the process name as defined in your Procfile, such as 'web' or 'worker'.
-    Note that Dockerfile apps have a default 'cmd' process type.
   <num>
     the number of processes.
 
diff --git a/parser/timeouts.go b/parser/timeouts.go
index 5bfde0a4..2d7dcec5 100644
--- a/parser/timeouts.go
+++ b/parser/timeouts.go
@@ -68,7 +68,6 @@ Usage: drycc timeouts:set [options] <type>=<value>...
 Arguments:
   <type>
     the process type as defined in your Procfile, such as 'web' or 'worker'.
-    Note that Dockerfile apps have a default 'cmd' process type.
   <value>
     The value to apply to the process type in seconds.
 
@@ -98,7 +97,6 @@ Usage: drycc timeouts:unset [options] <type>...
 Arguments:
   <type>
     the process type as defined in your Procfile, such as 'web' or 'worker'.
-    Note that Dockerfile apps have a default 'cmd' process type.
 
 Options:
   -a --app=<app>
diff --git a/parser/volumes.go b/parser/volumes.go
index 4b572081..5370e683 100644
--- a/parser/volumes.go
+++ b/parser/volumes.go
@@ -263,7 +263,6 @@ Arguments:
     the volume name.
   <type>
     the process name as defined in your Procfile, such as 'web' or 'worker'.
-    Note that Dockerfile apps have a default 'cmd' process type.
   <path>
     the filesystem path.
 
@@ -295,7 +294,6 @@ Arguments:
     the volume name.
   <type>
     the process name as defined in your Procfile, such as 'web' or 'worker'.
-    Note that Dockerfile apps have a default 'cmd' process type.
 
 Options:
   -a --app=<app>
