Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.cirron.com/llms.txt

Use this file to discover all available pages before exploring further.

Monorepo support

Many teams keep several models in one repository each in its own directory with its own cirron.yaml. A root cirron.yaml with a top-level workspace: key lets the CLI discover all of them and operate from the repo root, the way Turborepo’s turbo.json does for JavaScript monorepos. When the CLI finds a workspace: config in the current directory it runs in monorepo mode. Otherwise it runs in single-model mode (the default behavior). There is no upward search — running a command inside a model subdirectory operates on that model alone.

Root cirron.yaml

workspace:
  name: ml-models                  # workspace / repo name
  models:
    - path: models/sentiment-rnn   # a single model directory
    - path: models/news-classifier
    - path: models/*               # glob: each immediate subdir that has a cirron.yaml
  # Optional: shared defaults inherited by every model
  defaults:
    profiling:
      snapshots: stats
      flush_interval: 1.0
    env:
      ENVIRONMENT: production
Each path points to a directory containing a model-level cirron.yaml. A path that doesn’t resolve to a directory with a cirron config is reported as an error.

Model cirron.yaml

Unchanged — a model config never has a workspace: key:
name: sentiment-rnn
framework: tensorflow
type: classification
version: "1.0.0"
description: Bidirectional LSTM sentiment classifier
profiling:
  snapshots: sampled        # overrides the workspace default of "stats"
env:
  THRESHOLD: "0.5"          # merged with the workspace defaults

Inheritance

Root defaults are merged into each model’s config with a shallow strategy:
  • env — shallow-merged; the model’s value wins on key conflicts. With the example above the model ends up with ENVIRONMENT: production (from defaults) and THRESHOLD: "0.5" (its own).
  • profiling — replaced wholesale when the model defines its own profiling block; otherwise the default profiling is used as-is.
  • Any other key under defaults — applied only when the model doesn’t already set it.
No deep merge anywhere — predictable, no surprises.

Commands

Today cirron validate is workspace-aware:
cirron validate                       # validate the root config + every model
cirron validate --model sentiment-rnn  # validate just one model (by name or path)
cirron validate --json                 # machine-readable results
See cirron validate for details. Workspace-aware push, status, and list are on the roadmap.