This guide documents the runtime model for projects, execution workspaces, and issue runs in DarkDuck.

Project Runtime Configuration

You can define how to run a project on the project workspace itself.
  • Project workspace runtime config describes how to run services for that project checkout
  • This is the default runtime configuration that child execution workspaces may inherit
  • Defining the config does not start anything by itself
Runtime configuration is declarative. It tells DarkDuck what commands to run and how, but execution is always explicitly triggered by a human operator.

Manual Runtime Control

Runtime services are manually controlled from the UI.
  • Project workspace runtime services are started and stopped from the project workspace UI
  • Execution workspace runtime services are started and stopped from the execution workspace UI
  • DarkDuck does not automatically start or stop these runtime services as part of issue execution
  • DarkDuck also does not automatically restart workspace runtime services on server boot
Automatic runtime service management is intentionally not implemented. This keeps the system predictable — you always know exactly what is running and why.

Execution Workspace Isolation

Execution workspaces isolate code and runtime state from the project primary workspace.
PropertyDescription
Checkout pathOwn directory, separate from project primary
BranchCan be on a different branch than the project
Runtime instanceRuns its own services independently
ConfigurationInherits from project, can override

Inheritance Model

An execution workspace inherits its runtime configuration from the linked project workspace by default. You can override with workspace-specific settings. The inherited configuration answers “how to run the service”, but the running process is always specific to that execution workspace.

Issues and Execution Workspaces

Issues are attached to execution workspace behavior, not to automatic runtime management.
  • An issue may create a new execution workspace when you choose an isolated workspace mode
  • An issue may reuse an existing execution workspace when you choose reuse
  • Multiple issues may intentionally share one execution workspace so they can work against the same branch and running runtime services
  • Assigning or running an issue does not automatically start or stop runtime services for that workspace

Execution Workspace Lifecycle

Execution workspaces are durable until a human closes them.
1

Creation

A workspace is created when an issue requests isolation or when you manually create one from the UI.
2

Active use

Agents work within the workspace during heartbeats. Runtime services can be started and stopped from the UI.
3

Archival

The UI can archive an execution workspace. Closing stops its runtime services and cleans up artifacts when allowed.
Shared workspaces that point at the project primary checkout are treated more conservatively during cleanup than disposable isolated workspaces.

Resolved Workspace Logic During Heartbeats

Heartbeats resolve a workspace for the run, but this is about code location and session continuity, not runtime-service control.
  1. Heartbeat resolves a base workspace for the run
  2. DarkDuck realizes the effective execution workspace, including creating or reusing a worktree when needed
  3. DarkDuck persists execution-workspace metadata (paths, refs, provisioning settings)
  4. Heartbeat passes the resolved code workspace to the agent run
  5. Workspace runtime services remain manual UI-managed controls
Think of workspaces as “where the code lives” and runtime services as “what processes are running.” DarkDuck manages the former automatically during heartbeats but leaves the latter under your explicit control.

Implementation Guarantees

GuaranteeDetail
Project runtime configFallback for execution workspace UI controls
Execution workspace overridesStored on the execution workspace
Heartbeat runsDo not auto-start workspace runtime services
Server startupDoes not auto-restart workspace runtime services