diff --git a/core/kg/app/app.go b/core/kg/app/app.go
new file mode 100644
index 0000000..5d5527b
--- /dev/null
+++ b/core/kg/app/app.go
@@ -0,0 +1,20 @@
+package app
+
+import (
+	"github.com/giolekva/pcloud/core/kg/log"
+	"github.com/giolekva/pcloud/core/kg/store"
+)
+
+// App represents an application layer of the kg
+type App struct {
+	store  store.Store
+	logger *log.Logger
+}
+
+// NewApp creates new app
+func NewApp(store store.Store, logger *log.Logger) *App {
+	return &App{
+		store:  store,
+		logger: logger,
+	}
+}
diff --git a/core/kg/go.mod b/core/kg/go.mod
index ebc81e8..990e6e9 100644
--- a/core/kg/go.mod
+++ b/core/kg/go.mod
@@ -4,15 +4,16 @@
 
 require (
 	github.com/Masterminds/squirrel v1.5.0
+	github.com/golang/protobuf v1.4.2
 	github.com/gorilla/mux v1.8.0
 	github.com/jmoiron/sqlx v1.3.1
 	github.com/pkg/errors v0.9.1
 	github.com/spf13/cobra v1.1.3
-	github.com/vardius/shutdown v1.0.2
 	go.uber.org/zap v1.16.0
 	golang.org/x/sys v0.0.0-20200122134326-e047566fdf82 // indirect
 	golang.org/x/tools v0.0.0-20200313205530-4303120df7d8 // indirect
 	google.golang.org/grpc v1.35.0
+	google.golang.org/protobuf v1.25.0
 	gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect
 	gopkg.in/natefinch/lumberjack.v2 v2.0.0
 )
diff --git a/core/kg/go.sum b/core/kg/go.sum
index 60b5893..5b4b744 100644
--- a/core/kg/go.sum
+++ b/core/kg/go.sum
@@ -231,8 +231,6 @@
 github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
 github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
 github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
-github.com/vardius/shutdown v1.0.2 h1:wNHRpdYc+KvJ3Q9KmkwKiqsnaW5LfkcP9ElXXv0OpC4=
-github.com/vardius/shutdown v1.0.2/go.mod h1:rvvQd32kv5NJycU1l4VJtqrJKY0Gg0IoQpVxZJeL44M=
 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
 github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
 go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU=
diff --git a/core/kg/model/proto/Makefile b/core/kg/model/proto/Makefile
new file mode 100644
index 0000000..a0efc58
--- /dev/null
+++ b/core/kg/model/proto/Makefile
@@ -0,0 +1,9 @@
+.PHONY: help
+
+.DEFAULT_GOAL := help
+
+help:
+	@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST)
+
+generate: ## generates the gRPC server interfaces from `*.proto` service definition
+	@protoc --go_out=. --go-grpc_out=. user.proto 
\ No newline at end of file
diff --git a/core/kg/model/proto/user.proto b/core/kg/model/proto/user.proto
new file mode 100644
index 0000000..eb543a5
--- /dev/null
+++ b/core/kg/model/proto/user.proto
@@ -0,0 +1,55 @@
+syntax = "proto3";
+
+option go_package = ".;proto";
+
+package proto;
+
+import "google/protobuf/timestamp.proto";
+
+// UserService handles commands dispatch and user view actions
+service UserService {
+  rpc GetUser (GetUserRequest) returns (User);
+  rpc ListUsers (ListUserRequest) returns (ListUserResponse);
+  rpc CreateUser (CreateUserRequest) returns (User);
+}
+
+// DispatchUserCommandRequest is passed when dispatching
+message DispatchUserCommandRequest {
+  string name = 1;
+  bytes payload = 2;
+}
+
+// User object
+message User {
+  optional string id = 1;
+  optional google.protobuf.Timestamp create_at = 2;
+  optional google.protobuf.Timestamp update_at = 3;
+  optional google.protobuf.Timestamp delete_at = 4;
+  string username = 5;
+  string password = 6;
+  optional google.protobuf.Timestamp last_password_update = 7;
+}
+
+// GetUserRequest is a request data to read user
+message GetUserRequest {
+  string id = 1;
+}
+
+// ListUserRequest is a request data to read all user for a given page
+message ListUserRequest {
+  int64 page = 1;
+  int64 limit = 2;
+}
+
+// ListUserResponse list of all users
+message ListUserResponse {
+  repeated User users = 1;
+  int64 page = 2;
+  int64 limit = 3;
+  int64 total = 4;
+}
+
+// CreateUserRequest is a request data to create a user
+message CreateUserRequest {
+    User user = 1;
+}
\ No newline at end of file
diff --git a/core/kg/rpc/user_service.go b/core/kg/rpc/user_service.go
new file mode 100644
index 0000000..b5ac194
--- /dev/null
+++ b/core/kg/rpc/user_service.go
@@ -0,0 +1,33 @@
+package rpc
+
+import (
+	"context"
+
+	"github.com/giolekva/pcloud/core/kg/app"
+	"github.com/giolekva/pcloud/core/kg/model/proto"
+)
+
+type userService struct {
+	proto.UnimplementedUserServiceServer
+	app *app.App
+}
+
+// NewService returns new user service
+func NewService(app *app.App) proto.UserServiceServer {
+	s := &userService{
+		app: app,
+	}
+
+	return s
+}
+
+func (us *userService) GetUser(context.Context, *proto.GetUserRequest) (*proto.User, error) {
+	// us.app.getUser...
+	return nil, nil
+}
+func (us *userService) ListUsers(context.Context, *proto.ListUserRequest) (*proto.ListUserResponse, error) {
+	return nil, nil
+}
+func (us *userService) CreateUser(context.Context, *proto.CreateUserRequest) (*proto.User, error) {
+	return nil, nil
+}
diff --git a/core/kg/server/grpc_server.go b/core/kg/server/grpc_server.go
index 565ce77..0e4f9e6 100644
--- a/core/kg/server/grpc_server.go
+++ b/core/kg/server/grpc_server.go
@@ -5,9 +5,11 @@
 	"net"
 	"os"
 
+	"github.com/giolekva/pcloud/core/kg/app"
 	"github.com/giolekva/pcloud/core/kg/log"
 	"github.com/giolekva/pcloud/core/kg/model"
-	"github.com/giolekva/pcloud/core/kg/store"
+	"github.com/giolekva/pcloud/core/kg/model/proto"
+	"github.com/giolekva/pcloud/core/kg/rpc"
 	"google.golang.org/grpc"
 )
 
@@ -16,17 +18,17 @@
 	Log    *log.Logger
 	srv    *grpc.Server
 	config *model.Config
-	store  store.Store
+	app    *app.App
 }
 
 var _ Server = &GRPCServerImpl{}
 
 // NewGRPCServer creates new GRPC Server
-func NewGRPCServer(logger *log.Logger, config *model.Config, store store.Store) Server {
+func NewGRPCServer(logger *log.Logger, config *model.Config, app *app.App) Server {
 	a := &GRPCServerImpl{
 		Log:    logger,
 		config: config,
-		store:  store,
+		app:    app,
 	}
 
 	pwd, _ := os.Getwd()
@@ -45,6 +47,8 @@
 	}
 
 	a.srv = grpc.NewServer()
+	userService := rpc.NewService(a.app)
+	proto.RegisterUserServiceServer(a.srv, userService)
 
 	a.Log.Info("GRPC Server is listening on", log.Int("port", a.config.GRPC.Port))
 	if err := a.srv.Serve(lis); err != nil {
