diff --git a/server/src/delivery/graphql/fs/entries.go b/server/src/delivery/graphql/fs/entries.go
index 2cb5076..a3d0297 100644
--- a/server/src/delivery/graphql/fs/entries.go
+++ b/server/src/delivery/graphql/fs/entries.go
@@ -3,16 +3,27 @@ package fs
 import (
 	"context"
 
-	"git.kmsign.ru/royalcat/tstor/server/src/delivery/graphql/model"
 	"git.kmsign.ru/royalcat/tstor/server/src/vfs"
 )
 
+type Dir interface {
+	IsFsEntry()
+	IsDir()
+	GetName() string
+	GetEntries() []FsEntry
+}
+
+type FsEntry interface {
+	IsFsEntry()
+	GetName() string
+}
+
 type FsElem interface {
 	Name() string
 	IsDir() bool
 }
 
-func FillFsEntry(ctx context.Context, e FsElem, fs vfs.Filesystem, path string) (model.FsEntry, error) {
+func FillFsEntry(ctx context.Context, e FsElem, fs vfs.Filesystem, path string) (FsEntry, error) {
 	switch e.(type) {
 	case *vfs.ResolverFS:
 		e := e.(*vfs.ResolverFS)
@@ -54,12 +65,12 @@ func FillFsEntry(ctx context.Context, e FsElem, fs vfs.Filesystem, path string)
 	}
 }
 
-func ReadEntries(ctx context.Context, fs vfs.Filesystem, path string) ([]model.FsEntry, error) {
+func ReadEntries(ctx context.Context, fs vfs.Filesystem, path string) ([]FsEntry, error) {
 	entries, err := fs.ReadDir(ctx, path)
 	if err != nil {
 		return nil, err
 	}
-	out := []model.FsEntry{}
+	out := []FsEntry{}
 	for _, e := range entries {
 		entry, err := FillFsEntry(ctx, e, fs, ".")
 		if err != nil {
@@ -70,12 +81,12 @@ func ReadEntries(ctx context.Context, fs vfs.Filesystem, path string) ([]model.F
 	return out, nil
 }
 
-func (obj *ResolverFs) ResolverEntries(ctx context.Context) ([]model.FsEntry, error) {
+func (obj *ResolverFs) ResolverEntries(ctx context.Context) ([]FsEntry, error) {
 	entries, err := obj.FS.ReadDir(ctx, ".")
 	if err != nil {
 		return nil, err
 	}
-	out := []model.FsEntry{}
+	out := []FsEntry{}
 	for _, e := range entries {
 		entry, err := FillFsEntry(ctx, e, obj.FS, ".")
 		if err != nil {
@@ -86,12 +97,12 @@ func (obj *ResolverFs) ResolverEntries(ctx context.Context) ([]model.FsEntry, er
 	return out, nil
 }
 
-func (obj *SimpleDir) SimpleDirEntries(ctx context.Context) ([]model.FsEntry, error) {
+func (obj *SimpleDir) SimpleDirEntries(ctx context.Context) ([]FsEntry, error) {
 	entries, err := obj.FS.ReadDir(ctx, obj.Path)
 	if err != nil {
 		return nil, err
 	}
-	out := []model.FsEntry{}
+	out := []FsEntry{}
 	for _, e := range entries {
 		entry, err := FillFsEntry(ctx, e, obj.FS, obj.Path)
 		if err != nil {
diff --git a/server/src/delivery/graphql/fs/plain.go b/server/src/delivery/graphql/fs/plain.go
index 98e7726..4af6785 100644
--- a/server/src/delivery/graphql/fs/plain.go
+++ b/server/src/delivery/graphql/fs/plain.go
@@ -1,27 +1,26 @@
 package fs
 
 import (
-	"git.kmsign.ru/royalcat/tstor/server/src/delivery/graphql/model"
 	"git.kmsign.ru/royalcat/tstor/server/src/vfs"
 )
 
-var _ model.FsEntry = (*SimpleDir)(nil)
-var _ model.Dir = (*SimpleDir)(nil)
+var _ FsEntry = (*SimpleDir)(nil)
+var _ Dir = (*SimpleDir)(nil)
 
 type SimpleDir struct {
-	Name    string          `json:"name"`
-	Entries []model.FsEntry `json:"entries"`
-	FS      vfs.Filesystem  `json:"-"`
-	Path    string          `json:"-"`
+	Name    string         `json:"name"`
+	Entries []FsEntry      `json:"entries"`
+	FS      vfs.Filesystem `json:"-"`
+	Path    string         `json:"-"`
 }
 
 func (SimpleDir) IsDir()               {}
 func (this SimpleDir) GetName() string { return this.Name }
-func (this SimpleDir) GetEntries() []model.FsEntry {
+func (this SimpleDir) GetEntries() []FsEntry {
 	if this.Entries == nil {
 		return nil
 	}
-	interfaceSlice := make([]model.FsEntry, 0, len(this.Entries))
+	interfaceSlice := make([]FsEntry, 0, len(this.Entries))
 	for _, concrete := range this.Entries {
 		interfaceSlice = append(interfaceSlice, concrete)
 	}
diff --git a/server/src/delivery/graphql/fs/resolver.go b/server/src/delivery/graphql/fs/resolver.go
index b999778..7398369 100644
--- a/server/src/delivery/graphql/fs/resolver.go
+++ b/server/src/delivery/graphql/fs/resolver.go
@@ -1,26 +1,25 @@
 package fs
 
 import (
-	"git.kmsign.ru/royalcat/tstor/server/src/delivery/graphql/model"
 	"git.kmsign.ru/royalcat/tstor/server/src/vfs"
 )
 
-var _ model.FsEntry = (*ResolverFs)(nil)
-var _ model.Dir = (*ResolverFs)(nil)
+var _ FsEntry = (*ResolverFs)(nil)
+var _ Dir = (*ResolverFs)(nil)
 
 type ResolverFs struct {
 	Name    string          `json:"name"`
-	Entries []model.FsEntry `json:"entries"`
+	Entries []FsEntry       `json:"entries"`
 	FS      *vfs.ResolverFS `json:"-"`
 }
 
 func (ResolverFs) IsDir()               {}
 func (this ResolverFs) GetName() string { return this.Name }
-func (this ResolverFs) GetEntries() []model.FsEntry {
+func (this ResolverFs) GetEntries() []FsEntry {
 	if this.Entries == nil {
 		return nil
 	}
-	interfaceSlice := make([]model.FsEntry, 0, len(this.Entries))
+	interfaceSlice := make([]FsEntry, 0, len(this.Entries))
 	for _, concrete := range this.Entries {
 		interfaceSlice = append(interfaceSlice, concrete)
 	}
diff --git a/server/src/delivery/graphql/generated.go b/server/src/delivery/graphql/generated.go
index a83d077..6e9d029 100644
--- a/server/src/delivery/graphql/generated.go
+++ b/server/src/delivery/graphql/generated.go
@@ -105,13 +105,13 @@ type MutationResolver interface {
 }
 type QueryResolver interface {
 	Plugins(ctx context.Context) ([]*model.Plugin, error)
-	FsEntry(ctx context.Context, path string) (model.FsEntry, error)
+	FsEntry(ctx context.Context, path string) (fs.FsEntry, error)
 }
 type ResolverFSResolver interface {
-	Entries(ctx context.Context, obj *fs.ResolverFs) ([]model.FsEntry, error)
+	Entries(ctx context.Context, obj *fs.ResolverFs) ([]fs.FsEntry, error)
 }
 type SimpleDirResolver interface {
-	Entries(ctx context.Context, obj *fs.SimpleDir) ([]model.FsEntry, error)
+	Entries(ctx context.Context, obj *fs.SimpleDir) ([]fs.FsEntry, error)
 }
 type SubscriptionResolver interface {
 	TaskProgress(ctx context.Context, taskID string) (<-chan model.Progress, error)
@@ -1019,9 +1019,9 @@ func (ec *executionContext) _Query_fsEntry(ctx context.Context, field graphql.Co
 	if resTmp == nil {
 		return graphql.Null
 	}
-	res := resTmp.(model.FsEntry)
+	res := resTmp.(fs.FsEntry)
 	fc.Result = res
-	return ec.marshalOFsEntry2gitᚗkmsignᚗruᚋroyalcatᚋtstorᚋserverᚋsrcᚋdeliveryᚋgraphqlᚋmodelᚐFsEntry(ctx, field.Selections, res)
+	return ec.marshalOFsEntry2gitᚗkmsignᚗruᚋroyalcatᚋtstorᚋserverᚋsrcᚋdeliveryᚋgraphqlᚋfsᚐFsEntry(ctx, field.Selections, res)
 }
 
 func (ec *executionContext) fieldContext_Query_fsEntry(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
@@ -1243,7 +1243,7 @@ func (ec *executionContext) _ResolverFS_entries(ctx context.Context, field graph
 
 		directive1 := func(ctx context.Context) (any, error) {
 			if ec.directives.Resolver == nil {
-				var zeroVal []model.FsEntry
+				var zeroVal []fs.FsEntry
 				return zeroVal, errors.New("directive resolver is not implemented")
 			}
 			return ec.directives.Resolver(ctx, obj, directive0)
@@ -1256,10 +1256,10 @@ func (ec *executionContext) _ResolverFS_entries(ctx context.Context, field graph
 		if tmp == nil {
 			return nil, nil
 		}
-		if data, ok := tmp.([]model.FsEntry); ok {
+		if data, ok := tmp.([]fs.FsEntry); ok {
 			return data, nil
 		}
-		return nil, fmt.Errorf(`unexpected type %T from directive, should be []git.kmsign.ru/royalcat/tstor/server/src/delivery/graphql/model.FsEntry`, tmp)
+		return nil, fmt.Errorf(`unexpected type %T from directive, should be []git.kmsign.ru/royalcat/tstor/server/src/delivery/graphql/fs.FsEntry`, tmp)
 	})
 	if err != nil {
 		ec.Error(ctx, err)
@@ -1271,9 +1271,9 @@ func (ec *executionContext) _ResolverFS_entries(ctx context.Context, field graph
 		}
 		return graphql.Null
 	}
-	res := resTmp.([]model.FsEntry)
+	res := resTmp.([]fs.FsEntry)
 	fc.Result = res
-	return ec.marshalNFsEntry2ᚕgitᚗkmsignᚗruᚋroyalcatᚋtstorᚋserverᚋsrcᚋdeliveryᚋgraphqlᚋmodelᚐFsEntryᚄ(ctx, field.Selections, res)
+	return ec.marshalNFsEntry2ᚕgitᚗkmsignᚗruᚋroyalcatᚋtstorᚋserverᚋsrcᚋdeliveryᚋgraphqlᚋfsᚐFsEntryᚄ(ctx, field.Selections, res)
 }
 
 func (ec *executionContext) fieldContext_ResolverFS_entries(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
@@ -1429,7 +1429,7 @@ func (ec *executionContext) _SimpleDir_entries(ctx context.Context, field graphq
 
 		directive1 := func(ctx context.Context) (any, error) {
 			if ec.directives.Resolver == nil {
-				var zeroVal []model.FsEntry
+				var zeroVal []fs.FsEntry
 				return zeroVal, errors.New("directive resolver is not implemented")
 			}
 			return ec.directives.Resolver(ctx, obj, directive0)
@@ -1442,10 +1442,10 @@ func (ec *executionContext) _SimpleDir_entries(ctx context.Context, field graphq
 		if tmp == nil {
 			return nil, nil
 		}
-		if data, ok := tmp.([]model.FsEntry); ok {
+		if data, ok := tmp.([]fs.FsEntry); ok {
 			return data, nil
 		}
-		return nil, fmt.Errorf(`unexpected type %T from directive, should be []git.kmsign.ru/royalcat/tstor/server/src/delivery/graphql/model.FsEntry`, tmp)
+		return nil, fmt.Errorf(`unexpected type %T from directive, should be []git.kmsign.ru/royalcat/tstor/server/src/delivery/graphql/fs.FsEntry`, tmp)
 	})
 	if err != nil {
 		ec.Error(ctx, err)
@@ -1457,9 +1457,9 @@ func (ec *executionContext) _SimpleDir_entries(ctx context.Context, field graphq
 		}
 		return graphql.Null
 	}
-	res := resTmp.([]model.FsEntry)
+	res := resTmp.([]fs.FsEntry)
 	fc.Result = res
-	return ec.marshalNFsEntry2ᚕgitᚗkmsignᚗruᚋroyalcatᚋtstorᚋserverᚋsrcᚋdeliveryᚋgraphqlᚋmodelᚐFsEntryᚄ(ctx, field.Selections, res)
+	return ec.marshalNFsEntry2ᚕgitᚗkmsignᚗruᚋroyalcatᚋtstorᚋserverᚋsrcᚋdeliveryᚋgraphqlᚋfsᚐFsEntryᚄ(ctx, field.Selections, res)
 }
 
 func (ec *executionContext) fieldContext_SimpleDir_entries(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) {
@@ -3847,7 +3847,7 @@ func (ec *executionContext) unmarshalInputStringFilter(ctx context.Context, obj
 
 // region    ************************** interface.gotpl ***************************
 
-func (ec *executionContext) _Dir(ctx context.Context, sel ast.SelectionSet, obj model.Dir) graphql.Marshaler {
+func (ec *executionContext) _Dir(ctx context.Context, sel ast.SelectionSet, obj fs.Dir) graphql.Marshaler {
 	switch obj := (obj).(type) {
 	case nil:
 		return graphql.Null
@@ -3886,7 +3886,7 @@ func (ec *executionContext) _File(ctx context.Context, sel ast.SelectionSet, obj
 	}
 }
 
-func (ec *executionContext) _FsEntry(ctx context.Context, sel ast.SelectionSet, obj model.FsEntry) graphql.Marshaler {
+func (ec *executionContext) _FsEntry(ctx context.Context, sel ast.SelectionSet, obj fs.FsEntry) graphql.Marshaler {
 	switch obj := (obj).(type) {
 	case nil:
 		return graphql.Null
@@ -3916,7 +3916,7 @@ func (ec *executionContext) _FsEntry(ctx context.Context, sel ast.SelectionSet,
 			return graphql.Null
 		}
 		return ec._File(ctx, sel, obj)
-	case model.Dir:
+	case fs.Dir:
 		if obj == nil {
 			return graphql.Null
 		}
@@ -4768,7 +4768,7 @@ func (ec *executionContext) marshalNBoolean2bool(ctx context.Context, sel ast.Se
 	return res
 }
 
-func (ec *executionContext) marshalNFsEntry2gitᚗkmsignᚗruᚋroyalcatᚋtstorᚋserverᚋsrcᚋdeliveryᚋgraphqlᚋmodelᚐFsEntry(ctx context.Context, sel ast.SelectionSet, v model.FsEntry) graphql.Marshaler {
+func (ec *executionContext) marshalNFsEntry2gitᚗkmsignᚗruᚋroyalcatᚋtstorᚋserverᚋsrcᚋdeliveryᚋgraphqlᚋfsᚐFsEntry(ctx context.Context, sel ast.SelectionSet, v fs.FsEntry) graphql.Marshaler {
 	if v == nil {
 		if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) {
 			ec.Errorf(ctx, "the requested element is null which the schema does not allow")
@@ -4778,7 +4778,7 @@ func (ec *executionContext) marshalNFsEntry2gitᚗkmsignᚗruᚋroyalcatᚋtstor
 	return ec._FsEntry(ctx, sel, v)
 }
 
-func (ec *executionContext) marshalNFsEntry2ᚕgitᚗkmsignᚗruᚋroyalcatᚋtstorᚋserverᚋsrcᚋdeliveryᚋgraphqlᚋmodelᚐFsEntryᚄ(ctx context.Context, sel ast.SelectionSet, v []model.FsEntry) graphql.Marshaler {
+func (ec *executionContext) marshalNFsEntry2ᚕgitᚗkmsignᚗruᚋroyalcatᚋtstorᚋserverᚋsrcᚋdeliveryᚋgraphqlᚋfsᚐFsEntryᚄ(ctx context.Context, sel ast.SelectionSet, v []fs.FsEntry) graphql.Marshaler {
 	ret := make(graphql.Array, len(v))
 	var wg sync.WaitGroup
 	isLen1 := len(v) == 1
@@ -4802,7 +4802,7 @@ func (ec *executionContext) marshalNFsEntry2ᚕgitᚗkmsignᚗruᚋroyalcatᚋts
 			if !isLen1 {
 				defer wg.Done()
 			}
-			ret[i] = ec.marshalNFsEntry2gitᚗkmsignᚗruᚋroyalcatᚋtstorᚋserverᚋsrcᚋdeliveryᚋgraphqlᚋmodelᚐFsEntry(ctx, sel, v[i])
+			ret[i] = ec.marshalNFsEntry2gitᚗkmsignᚗruᚋroyalcatᚋtstorᚋserverᚋsrcᚋdeliveryᚋgraphqlᚋfsᚐFsEntry(ctx, sel, v[i])
 		}
 		if isLen1 {
 			f(i)
@@ -5229,7 +5229,7 @@ func (ec *executionContext) marshalODateTime2ᚖtimeᚐTime(ctx context.Context,
 	return res
 }
 
-func (ec *executionContext) marshalOFsEntry2gitᚗkmsignᚗruᚋroyalcatᚋtstorᚋserverᚋsrcᚋdeliveryᚋgraphqlᚋmodelᚐFsEntry(ctx context.Context, sel ast.SelectionSet, v model.FsEntry) graphql.Marshaler {
+func (ec *executionContext) marshalOFsEntry2gitᚗkmsignᚗruᚋroyalcatᚋtstorᚋserverᚋsrcᚋdeliveryᚋgraphqlᚋfsᚐFsEntry(ctx context.Context, sel ast.SelectionSet, v fs.FsEntry) graphql.Marshaler {
 	if v == nil {
 		return graphql.Null
 	}
diff --git a/server/src/delivery/graphql/model/models_gen.go b/server/src/delivery/graphql/model/models_gen.go
index 2891015..01f17ac 100644
--- a/server/src/delivery/graphql/model/models_gen.go
+++ b/server/src/delivery/graphql/model/models_gen.go
@@ -2,13 +2,6 @@
 
 package model
 
-type Dir interface {
-	IsFsEntry()
-	IsDir()
-	GetName() string
-	GetEntries() []FsEntry
-}
-
 type File interface {
 	IsFsEntry()
 	IsFile()
@@ -16,11 +9,6 @@ type File interface {
 	GetSize() int64
 }
 
-type FsEntry interface {
-	IsFsEntry()
-	GetName() string
-}
-
 type Progress interface {
 	IsProgress()
 	GetCurrent() int64
diff --git a/server/src/delivery/graphql/resolver/fs.resolvers.go b/server/src/delivery/graphql/resolver/fs.resolvers.go
index 831094d..6a5db29 100644
--- a/server/src/delivery/graphql/resolver/fs.resolvers.go
+++ b/server/src/delivery/graphql/resolver/fs.resolvers.go
@@ -9,16 +9,15 @@ import (
 
 	graph "git.kmsign.ru/royalcat/tstor/server/src/delivery/graphql"
 	"git.kmsign.ru/royalcat/tstor/server/src/delivery/graphql/fs"
-	"git.kmsign.ru/royalcat/tstor/server/src/delivery/graphql/model"
 )
 
 // Entries is the resolver for the entries field.
-func (r *resolverFSResolver) Entries(ctx context.Context, obj *fs.ResolverFs) ([]model.FsEntry, error) {
+func (r *resolverFSResolver) Entries(ctx context.Context, obj *fs.ResolverFs) ([]fs.FsEntry, error) {
 	return obj.ResolverEntries(ctx)
 }
 
 // Entries is the resolver for the entries field.
-func (r *simpleDirResolver) Entries(ctx context.Context, obj *fs.SimpleDir) ([]model.FsEntry, error) {
+func (r *simpleDirResolver) Entries(ctx context.Context, obj *fs.SimpleDir) ([]fs.FsEntry, error) {
 	return obj.SimpleDirEntries(ctx)
 }
 
diff --git a/server/src/delivery/graphql/resolver/query.resolvers.go b/server/src/delivery/graphql/resolver/query.resolvers.go
index 88d7508..6c52829 100644
--- a/server/src/delivery/graphql/resolver/query.resolvers.go
+++ b/server/src/delivery/graphql/resolver/query.resolvers.go
@@ -19,7 +19,7 @@ func (r *queryResolver) Plugins(ctx context.Context) ([]*model.Plugin, error) {
 }
 
 // FsEntry is the resolver for the fsEntry field.
-func (r *queryResolver) FsEntry(ctx context.Context, path string) (model.FsEntry, error) {
+func (r *queryResolver) FsEntry(ctx context.Context, path string) (fs.FsEntry, error) {
 	entry, err := r.VFS.Stat(ctx, path)
 	if err != nil {
 		return nil, err