Skip to content

Remove need for user home directory entirely. #7410

Description

@mulroony

Allow the Cylc run root to be configured outside $HOME

Problem

Cylc currently uses $HOME/cylc-run as the root for installed and running workflows.

The existing [install][symlink dirs] configuration can store workflow data on another filesystem, but it still requires a corresponding path or symlink under $HOME/cylc-run. This does not cover sites where:

  • home directories are unavailable on workflow or job hosts;
  • home-directory inode or metadata quotas are restrictive; or
  • site policy requires runtime state to be kept outside home directories.

In these cases, the entire Cylc run namespace needs to live at another location rather than being reached through symlinks in $HOME/cylc-run.

Proposed solution

Allow CYLC_RUN_DIR to override the canonical Cylc run root:

export CYLC_RUN_DIR=/path/to/cylc-run

cylc install my-workflow
cylc play my-workflow

If CYLC_RUN_DIR is not set, Cylc would continue to use $HOME/cylc-run with no behavior change.

The override should apply consistently to installation, workflow discovery, scheduler paths, cleanup, remote commands, and generated job scripts. Cylc should automatically forward it to scheduler run hosts and job platforms.

An explicitly supplied alternate directory, such as cylc workflow-state --run-dir, should continue to take precedence.

Scope and constraints

  • This would configure one run root per Cylc process environment; it would not add discovery across multiple run roots.
  • All Cylc commands targeting workflows in the alternate root would need the same CYLC_RUN_DIR value.
  • The configured path would need to be accessible at the same location on scheduler and job hosts.
  • Existing [install][symlink dirs] behavior would continue to work, with symlinks created from the configured run root.

Relationship to existing symlink support

PR #4177 removed the old per-platform run-directory setting because symlink directories provided that storage-placement functionality. This proposal is narrower: it changes the canonical run namespace itself for installations where $HOME/cylc-run cannot be used at all.

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFlag this as a question for the next Cylc project meeting.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions