Skip to content

Fileserver

Defined in: packages/core/src/kernel/types.ts:200

The universal filesystem interface. Any object implementing these 10 methods is a fileserver.

The kernel routes all I/O through fileservers via namespace resolution. A fileserver never sees process-level fd numbers — open() returns an opaque token that the kernel maps to a process fd. All data on the wire is Uint8Array.

Fileservers are composable: overlayFS layers two fileservers for copy-on-write, union bind stacks multiple fileservers at one mount point. The protocol is small enough that fundamental capabilities (overlay, readonly, proxy) are just more fileservers.

// Mount a custom fileserver
const fs = memoryFS()
Unix().mount('/data', fs).use(stdSystem()).build()

readonly optional type?: string

Defined in: packages/core/src/kernel/types.ts:202

Optional human-readable type tag (e.g. ‘memory’, ‘overlay’, ‘proc’).

optional checkAccess(path, flags, caller): Promise<void>

Defined in: packages/core/src/kernel/types.ts:232

Optional permission override. When present, kernel calls this INSTEAD of the default mode-bit check. Allows synthetic fileservers (procFS, devFS, etc.) to implement custom access control semantics.

InnerPath

OpenFlags

Gid

Uid

Promise<void>


close(fd): Promise<void>

Defined in: packages/core/src/kernel/types.ts:211

Close an open fd token.

unknown

Promise<void>


mkdir(path): Promise<void>

Defined in: packages/core/src/kernel/types.ts:220

Create a directory. Throws EEXIST if it already exists.

InnerPath

Promise<void>


open(path, flags, pid?): Promise<unknown>

Defined in: packages/core/src/kernel/types.ts:205

Open a file or directory, returning an opaque fd token.

InnerPath

OpenFlags

Pid

Promise<unknown>


read(fd, offset, count): Promise<Uint8Array<ArrayBufferLike>>

Defined in: packages/core/src/kernel/types.ts:207

Read up to count bytes from an open fd at the given offset.

unknown

number

number

Promise<Uint8Array<ArrayBufferLike>>


readdir(path): Promise<DirEntry[]>

Defined in: packages/core/src/kernel/types.ts:217

List entries in a directory. Throws ENOTDIR if path is a file.

InnerPath

Promise<DirEntry[]>


remove(path): Promise<void>

Defined in: packages/core/src/kernel/types.ts:222

Remove a file or empty directory.

InnerPath

Promise<void>


rename(oldPath, newPath): Promise<void>

Defined in: packages/core/src/kernel/types.ts:224

Rename/move a file or directory.

InnerPath

InnerPath

Promise<void>


stat(path, opts?): Promise<Stat>

Defined in: packages/core/src/kernel/types.ts:215

Return metadata for a path. Throws ENOENT if not found. When opts.nofollow is true, return the symlink node itself (lstat behavior).

InnerPath

boolean

Promise<Stat>


write(fd, offset, data): Promise<number>

Defined in: packages/core/src/kernel/types.ts:209

Write data at the given offset, returning bytes written.

unknown

number

Uint8Array

Promise<number>


wstat(path, changes): Promise<void>

Defined in: packages/core/src/kernel/types.ts:227

Update metadata fields (mode, uid, gid, mtime, size).

InnerPath

Partial<StatChanges>

Promise<void>