Skip to content

Storage

Port: StoragePort

Adapter Description
InMemoryStorageAdapter Development — tracks PVC names without creating K8s resources
K8sStorageAdapter Production — creates and manages PVCs via Kubernetes API

Two Volume Types

Session workspace — Per-session PVC mounted at /volundr/sessions. Created when a session starts, archived on stop, deleted on session delete.

Home volume — Per-user PVC mounted at /volundr/home. Persists across sessions. Stores user config, Claude credentials, shell history.

Helm Configuration

storage:
  sessions:
    enabled: true
    storageClass: longhorn
    accessMode: ReadWriteMany
    size: 1Gi
    mountPath: /volundr/sessions
  home:
    enabled: true
    storageClass: longhorn
    accessMode: ReadWriteMany
    size: 1Gi
    mountPath: /volundr/home

K8s Adapter (config.yaml)

storageAdapter:
  adapter: "volundr.adapters.outbound.k8s_storage_adapter.K8sStorageAdapter"
  kwargs:
    namespace: "volundr-sessions"
    home_storage_class: "longhorn"
    workspace_storage_class: "longhorn"
    workspace_size_gb: 2

Storage Class Requirements

Session PVCs need ReadWriteMany if multiple containers access them simultaneously. Home PVCs need ReadWriteMany for cross-session access.

Compatible storage classes:

  • Longhorn — recommended for bare-metal and edge
  • NFS-based provisioners — works everywhere
  • Cloud RWX classes — EFS (AWS), Azure Files, Filestore (GCP)

Single-node clusters can use ReadWriteOnce, but this limits session pods to the node where the PVC is bound.