Skip to content

Configuration Reference

This document is the complete reference for Ripline configuration files, environment variables, and supported OpenClaw host options.


Configuration files

Ripline reads configuration from three separate files, each scoped to a different level.

FileScopePurpose
~/.ripline/config.jsonUser (global)Default pipeline/profile directories, default profile, built-in runner user-level settings
ripline.config.jsonProject (local)Per-project pipeline/profile directory overrides; commit alongside your code
~/.ripline/agent.jsonUser (global)Standalone agent runner configuration (provider, model, API key, base URL, Claude Code, Codex)

User config — ~/.ripline/config.json

Optional. Applied globally for the current user.

json
{
  "pipelineDir": "~/.ripline/pipelines",
  "profileDir": "~/.ripline/profiles",
  "defaultProfile": null,
  "claudeCode": {
    "allowDangerouslySkipPermissions": false
  },
  "codex": {
    "allowDangerouslySkipPermissions": false
  }
}

Fields

FieldTypeDefaultDescription
pipelineDirstring~/.ripline/pipelinesDefault directory to search for pipeline YAML/JSON files. Supports ~ expansion.
profileDirstring~/.ripline/profilesDefault directory to search for profile YAML files. Supports ~ expansion.
skillsDirstring~/.ripline/skillsDirectory containing per-skill markdown files. See Text skills. Supports ~ expansion.
defaultProfilestring | nullnullProfile name applied to every run unless --profile or --no-profile is passed.
claudeCode.allowDangerouslySkipPermissionsbooleanfalseUser-level gate for the bypass permissions feature in the Claude Code runner. Must be true here (or via the env var) for any node with dangerouslySkipPermissions: true to use bypass mode. See Agent integration.
codex.allowDangerouslySkipPermissionsbooleanfalseUser-level gate for the dangerous bypass mode in the Codex runner. Must be true here (or via the env var) for any node with dangerouslySkipPermissions: true to use bypass mode.

Project config — ripline.config.json

Optional. Place this file in the root of a project to set project-local overrides. It is resolved from the current working directory when the CLI is run.

json
{
  "pipelineDir": "./pipelines",
  "profileDir": "./profiles",
  "agent": {
    "provider": "ollama",
    "model": "llama3.2"
  },
  "agentRunner": {
    "provider": "openai",
    "model": "gpt-4o-mini",
    "apiKey": "sk-..."
  },
  "claudeCode": {
    "mode": "execute",
    "cwd": "./",
    "maxTurns": 10,
    "timeoutSeconds": 120
  },
  "codex": {
    "mode": "execute",
    "cwd": "./",
    "model": "gpt-5.4",
    "timeoutSeconds": 120
  }
}

Fields

FieldTypeDefaultDescription
pipelineDirstringOverride the pipeline directory for this project. Relative paths resolve from the project root (CWD).
profileDirstringOverride the profile directory for this project.
agent / agentRunnerobjectStandalone LLM agent config. Either key is accepted. See Agent config.
claudeCodeobjectClaude Code runner config. See Claude Code config.
codexobjectCodex runner config. See Codex config.

Agent config — ~/.ripline/agent.json or ripline.config.json

Configure the standalone agent runner (Ollama, OpenAI, or Anthropic) used when running Ripline directly.

You can put this in either:

  • ~/.ripline/agent.json — user-level default
  • ripline.config.json (in the project root) under the agent or agentRunner key
json
{
  "provider": "openai",
  "model": "gpt-4o-mini",
  "apiKey": "sk-your-key",
  "baseURL": "https://api.openai.com/v1"
}

Fields

FieldTypeRequiredDescription
provider"ollama" | "openai" | "anthropic"LLM provider.
modelstringModel name (e.g. llama3.2, gpt-4o-mini, claude-3-5-sonnet-20241022).
apiKeystringAPI key. If omitted, falls back to OPENAI_API_KEY or ANTHROPIC_API_KEY from the environment.
baseURLstringCustom API base URL (e.g. for a local Ollama instance or an OpenAI-compatible endpoint).

Claude Code config

Configure the Claude Code runner. Place in ripline.config.json under claudeCode or set via environment variables.

json
{
  "claudeCode": {
    "mode": "execute",
    "cwd": "/path/to/project",
    "maxTurns": 10,
    "timeoutSeconds": 120
  }
}

Fields

FieldTypeDefaultDescription
mode"plan" | "execute""execute"Default mode for all Claude Code nodes. "plan" = read-only (writes denied). "execute" = full tool access. Per-node mode overrides this.
cwdstringDefault working directory for all Claude Code nodes. Per-node cwd overrides this.
maxTurnsnumberMaximum number of agent turns per Claude Code invocation.
timeoutSecondsnumberTimeout in seconds per Claude Code invocation.

Codex config

Configure the Codex runner. Place in ripline.config.json under codex or set via environment variables.

json
{
  "codex": {
    "mode": "execute",
    "cwd": "/path/to/project",
    "model": "gpt-5.4",
    "timeoutSeconds": 120
  }
}

Fields

FieldTypeDefaultDescription
mode"plan" | "execute""execute"Default mode for all Codex nodes. "plan" = read-only sandbox. "execute" = workspace-write sandbox. Per-node mode overrides this.
cwdstringDefault working directory for all Codex nodes. Per-node cwd overrides this.
modelstringDefault model for Codex nodes. Per-node model overrides this.
timeoutSecondsnumberTimeout in seconds per Codex invocation.

OpenClaw host config

When Ripline is loaded inside OpenClaw, these fields are set in the host's plugin config block.

jsonc
{
  "id": "ripline",
  "from": "./path/to/ripline/openclaw.plugin.json",
  "config": {
    "pipelinesDir": "./pipelines",        // required
    "runsDir": ".ripline/runs",           // optional
    "maxConcurrency": 4,                  // optional
    "httpPath": "/pipelines",             // optional
    "httpPort": 4001,                     // optional
    "authToken": "optional-bearer-token", // optional
    "agentRunner": {                      // optional — standalone LLM runner
      "provider": "ollama",
      "model": "llama3.2"
    },
    "claudeCode": {                       // optional — Claude Code runner
      "mode": "execute",
      "cwd": "/path/to/project",
      "maxTurns": 10,
      "timeoutSeconds": 120
    },
    "codex": {                            // optional — Codex runner
      "mode": "execute",
      "cwd": "/path/to/project",
      "model": "gpt-5.4",
      "timeoutSeconds": 120
    }
  }
}

Fields

FieldTypeRequiredDescription
pipelinesDirstringDirectory containing pipeline YAML/JSON files. Relative paths resolve from the OpenClaw workspace root.
runsDirstringDirectory for run state (one subdirectory per run). Default: .ripline/runs. Relative paths resolve from the workspace.
maxConcurrencynumberMaximum number of pipeline runs executing in parallel (default: 4).
httpPathstringBase URL path for the HTTP API when mounted by the OpenClaw host (default: /pipelines).
httpPortnumberPort for the HTTP server when started by the plugin (default: 4001).
authTokenstringIf set, all HTTP requests must include Authorization: Bearer <token>.
agentRunnerobjectStandalone LLM agent config. Same shape as the agent config.
claudeCodeobjectClaude Code runner config. Same shape as Claude Code config.
codexobjectCodex runner config. Same shape as Codex config.

Environment variables

All environment variables override the corresponding config file values unless a CLI flag is also provided (CLI flags have the highest precedence).

Agent runner

VariableDescription
RIPLINE_AGENT_PROVIDERStandalone agent provider: ollama, openai, or anthropic.
RIPLINE_AGENT_MODELStandalone agent model name.
RIPLINE_AGENT_BASE_URLCustom base URL for the agent API endpoint.
RIPLINE_AGENT_RUNNERForce runner: stub bypasses the default LLM runner even if configured.
OPENAI_API_KEYOpenAI API key (used when provider is openai and no apiKey in config).
ANTHROPIC_API_KEYAnthropic API key (used when provider is anthropic and no apiKey in config).

Claude Code runner

VariableDescription
RIPLINE_CLAUDE_CODE_MODEClaude Code mode: plan or execute.
RIPLINE_CLAUDE_CODE_CWDDefault working directory for Claude Code.
RIPLINE_CLAUDE_CODE_MAX_TURNSMaximum turns per Claude Code invocation.
RIPLINE_CLAUDE_CODE_TIMEOUTTimeout in seconds per Claude Code invocation.
RIPLINE_CLAUDE_CODE_DANGEROUSLY_SKIP_PERMISSIONSSet to true to enable the global bypass permissions gate. Must still be combined with dangerouslySkipPermissions: true on individual nodes.

Codex runner

VariableDescription
RIPLINE_CODEX_MODECodex mode: plan or execute.
RIPLINE_CODEX_CWDDefault working directory for Codex.
RIPLINE_CODEX_MODELDefault model for Codex nodes.
RIPLINE_CODEX_TIMEOUTTimeout in seconds per Codex invocation.
RIPLINE_CODEX_DANGEROUSLY_SKIP_PERMISSIONSSet to true to enable the global dangerous-bypass gate. Must still be combined with dangerouslySkipPermissions: true on individual nodes.

Run storage

VariableDescription
RIPLINE_RUNS_DIRDirectory for run state files (overridden by --runs-dir).

Helper scripts

VariableDescription
RIPLINE_INPUTSPath to JSON inputs file (used by cron/automation helper scripts).
RIPLINE_OUTPath for output JSON (used by cron/automation helper scripts).

Precedence order

When the same setting is available from multiple sources, values are resolved in the following order (highest to lowest):

Pipeline directory

  1. --pipeline-dir (CLI flag)
  2. pipelineDir in ~/.ripline/config.json
  3. pipelineDir in ripline.config.json (project root)
  4. Default: ~/.ripline/pipelines/

Profile directory

  1. --profile-dir (CLI flag)
  2. profileDir in ~/.ripline/config.json
  3. Default: ~/.ripline/profiles/

Skills directory

  1. skillsDir in ~/.ripline/config.json
  2. Default: ~/.ripline/skills/

Agent runner config

  1. CLI flags (--agent-provider, --agent-model, --agent-base-url)
  2. Environment variables (RIPLINE_AGENT_PROVIDER, RIPLINE_AGENT_MODEL, RIPLINE_AGENT_BASE_URL)
  3. Config file (~/.ripline/agent.json or ripline.config.json agent/agentRunner section)

Run directory

  1. --runs-dir (CLI flag)
  2. RIPLINE_RUNS_DIR (environment variable)
  3. runsDir in plugin config
  4. Default: .ripline/runs (relative to CWD)

Directory layout reference

~/.ripline/
├── config.json          # user config (pipelineDir, profileDir, skillsDir, defaultProfile, claudeCode)
├── agent.json           # standalone agent runner config (provider, model, apiKey, baseURL)
├── pipelines/           # default pipeline directory
│   ├── my-pipeline.yaml
│   └── spec-then-implement.yaml
├── profiles/            # default profile directory
│   ├── project-a.yaml
│   └── project-b.yaml
└── skills/              # text skill files (one .md per skill name)
    ├── github-cli.md
    ├── aws-cli.md
    └── web-search.md

<project-root>/
├── ripline.config.json  # project-local overrides (pipelineDir, agent, claudeCode)
├── pipelines/           # project-local pipelines (if pipelineDir points here)
│   └── ...
└── .ripline/
    └── runs/            # default run state directory
        └── <runId>/
            └── run.json

Released under the MIT License.