Skip to content

Welcome to Forkspacer

Forkspacer is an open-source platform that lets you create, fork, and hibernate entire Kubernetes or VM-based environments. Developers can clone full setups, test changes in isolation, and automatically hibernate idle workspaces to save resources—all declaratively, with GitOps-style reproducibility. Perfect for teams where each developer needs a personal, forked environment from a shared baseline.

Create a workspace

Create workspaces to connect local or remote Kubernetes clusters and install modules to them. You can hibernate workspaces to sleep or resume the modules installed in them.

apiVersion: batch.forkspacer.com/v1
kind: Workspace
metadata:
name: default
namespace: default
spec:
type: kubernetes
connection:
type: in-cluster
autoHibernation:
enabled: true
schedule: "0 42 18 * * *"
wakeSchedule: "0 42 19 * * *"

Install a module

Manage your environments via pre-defined and configurable modules.

apiVersion: batch.forkspacer.com/v1
kind: Module
metadata:
name: redis
namespace: default
spec:
source:
httpURL: https://shorturl.at/2zh6Z
workspace:
name: default
namespace: default
config:
version: 21.2.7
replicaCount: 0

Module examples

Helm redis example
kind: Helm
metadata:
name: redis
version: "1.0.0"
supportedOperatorVersion: ">= 0.0.0, < 1.0.0"
author: "platform-team"
description: "Redis in-memory data store"
category: "database"
config:
- type: option
name: "Redis Version"
alias: "version"
spec:
editable: true
required: false
default: "21.2.9"
values:
- "21.2.9"
- "21.2.7"
- "21.2.6"
- type: integer
name: "Replica Count"
alias: "replicaCount"
spec:
editable: true
required: false
default: 1
min: 0
max: 5
spec:
namespace: default
repo: https://charts.bitnami.com/bitnami
chartName: redis
version: "{{.config.version}}"
values:
- raw:
replica:
replicaCount: "{{.config.replicaCount}}"
outputs:
- name: "Redis Password"
valueFrom:
secret:
name: "{{.releaseName}}"
key: redis-password
namespace: default
- name: "Redis Port"
value: 6379
cleanup:
removeNamespace: false
removePVCs: true
Custom module example
kind: Custom
metadata:
name: test
version: "1.0.0"
supportedOperatorVersion: ">= 0.0.0, < 1.0.0"
author: "platform-team"
description: "Test"
category: "database"
config:
- type: integer
name: "Disk Size"
alias: "diskSize"
spec:
editable: true
required: false
default: 10
min: 10
max: 50
spec:
repo:
file: "https://example.com/plugin.so"