Skip to main content
A Space is the configuration boundary for a Doppels project. It tells the CLI where to look for Capabilities and Recipes, where to store run history, and which organizational context applies. You commit the Space manifest to your repository alongside your Capabilities and Recipes, and it serves as the stable anchor point for every doppels command you run in that project.

What a Space is — and is not

A Space defines the scope of discovery. The CLI finds your Capability and Recipe manifests by convention — scanning the capabilities/ and recipes/ directories — rather than requiring you to enumerate them in the Space manifest. This means adding a new Capability or Recipe is as simple as dropping a file in the right directory; no Space edits required. A Space does not contain Organization information. That comes from doppels context, which holds your local authentication and org selection. The same Space YAML can therefore be applied in different Organizations without modification — useful when you want the same automation library available in a staging org and a production org. A Space also has no metadata.version. Unlike Capabilities and Recipes, a Space represents mutable runtime state (run history, local configuration) rather than a publishable definition with a stable public contract.

Initializing a Space

Run this command once in any project directory where you want to use Doppels:
This creates the standard directory structure:
After initialization you can start dropping Capability and Recipe YAML files into their respective directories and run doppels validate to confirm everything is well-formed.

Space manifest

The Space manifest is a single YAML file at the root of your project:
The labels map is free-form. Use it to annotate the Space with environment information, team ownership, or any other metadata that helps you organize runs and audits.

Field reference

string
required
Always doppels.so/v1alpha1. Identifies the schema version.
string
required
Always Space.
string
required
A machine-readable identifier for this Space. Used in CLI output and coordination contexts.
string
A human-readable label for this Space shown in doppels describe and any UI surfaces.
object
An arbitrary map of string key–value pairs. Use labels to tag the Space with environment, team, or project metadata. Labels have no effect on CLI behavior in the current version.

What to commit and what to gitignore

The capabilities/ and recipes/ directories are the source of truth for your automations. Commit them to your repository like any other source code — review them in pull requests, tag them with releases, and share them with teammates. The .doppels/ directory holds runtime data: run history, logs, and produced artifacts. It is specific to the machine and session where runs happen and should not be committed. Add it to your .gitignore:
Your project structure after a few freezes might look like this:

Using a Space across Organizations

Because the Space manifest does not embed an Organization identifier, you can apply the same manifest in multiple Doppels organizations by switching context:
The runs, logs, and any coordination (sharing, auditing) happen within whatever Organization your current context points to. The YAML manifests in capabilities/ and recipes/ remain unchanged.

Capabilities

Learn how Capability manifests define the public contract your Space exposes.

Recipes

See how Recipe manifests implement Capabilities within your Space.

How It Works

Understand where Spaces fit in the full Doppels execution model.

Git Workflow

Best practices for versioning your Space, Capabilities, and Recipes in Git.