Workspace forks
Workspace forks let Roder branch a conversation or task into an isolated writable workspace. A fork is a Roder runtime concept: it can be backed by a Git worktree, a Rift copy-on-write snapshot, or a remote-runner session, but it is not a GitHub fork and not an inference provider.
Providers
git-worktreecreatesroder/fork/<name>worktrees under the source repository.riftshells out to a configured Rift binary for copy-on-write snapshots.remote-runnercan attach a fork to a fresh remote-runner session when a host constructs that provider.
Providers fail closed on unsafe inputs: dirty source workspaces are rejected by default, removal requires the caller to repeat the exact fork workspace path, and fork metadata never carries secrets.
Conversation forks
Forking a thread creates a child thread with the parent transcript history and a fresh workspace fork. Tool calls are not replayed. The child keepsparentThreadId, forkedFromTurnId, andworkspaceFork metadata in both JSONL and PostgreSQL stores.
/fork spike-ui
/fork status
/fork remove /absolute/path/to/forkroder thread fork <thread-id> --name spike-ui
roder forks providers
roder forks list --source /path/to/repo
roder forks create --name experiment --provider git-worktreeProtocol
App-server clients use thread/fork, thread/fork_status,thread/remove_fork, forks/providers/list,forks/list, forks/create, and forks/remove. Fork lifecycle events are emitted as normal runtime events, so TUI, desktop, and automation clients can render the same state.