Files
scriptorium/docs/cli.md

4.8 KiB

CLI Reference

Shortest Useful Command

go run ./cmd/scriptorium render \
  --config ./examples/config.yml \
  --prompt generic.markdown_summary \
  --input transcript=./examples/fixtures/transcript.md \
  --input glossary=./examples/fixtures/glossary.yml

render prepares and formats the prompt without calling an LLM.

Command Overview

  • scriptorium run: prepare prompt, call the configured LLM, write generated output, print a run summary.
  • scriptorium render: prepare prompt only; write prepared-run output as text or json.
  • scriptorium serve: start the HTTP server.

Integration references:

  • HTTP contract: docs/integrations/http-api.md
  • Narratio subprocess contract: docs/integrations/narratio.md

Common Argument Rules

  • --config is supported by run, render, and serve.
  • run and render require:
    • --prompt
    • at least one --input
    • an effective prompt_dir and profile_dir (from flags or config)
  • serve requires an effective prompt_dir and profile_dir (from flags or config).
  • Positional arguments are rejected.

Flag Reference

scriptorium run

  • --config <path>: app config file path.
  • --prompt-dir <dir>: prompt definition directory.
  • --profile-dir <dir>: profile definition directory.
  • --schema-dir <dir>: schema base directory for json_schema validation.
  • --prompt <id>: prompt ID to execute. Required.
  • --prompt-id <id>: deprecated alias for --prompt.
  • --profile <id>: explicit profile override.
  • --profile-id <id>: deprecated alias for --profile.
  • --input name=path: input mapping (repeatable, comma-separated accepted).
  • --var name=value: template variable mapping (repeatable, comma-separated accepted).
  • --out <path>: write artifact body to file instead of stdout.
  • --llm-base-url <url>: runtime endpoint override.
  • --model <name>: runtime model override.
  • --api-key-env <name>: runtime API key environment-variable name override.
  • --temperature <float>: runtime temperature override.
  • --max-tokens <int>: runtime max tokens override.
  • --top-p <float>: runtime top-p override.
  • --timeout <duration>: runtime timeout override (Go duration syntax, for example 30s, 2m).

scriptorium render

  • Supports the same flags as run, except:
    • no --schema-dir flag.
  • Adds:
    • --format text|json: prepared-run output format.

Notes:

  • render still resolves profile and runtime settings.
  • render still validates that api_key_env exists if the selected profile or overrides require it.

scriptorium serve

  • --config <path>: app config file path.
  • --addr <listen-address>: HTTP listen address.
  • --prompt-dir <dir>: prompt definition directory.
  • --profile-dir <dir>: profile definition directory.
  • --schema-dir <dir>: schema base directory for json_schema validation.

Notes:

  • serve does not accept runtime model override flags such as --model or --llm-base-url.

Input And Variable Syntax

  • --input name=path maps prompt input names to local file paths.
  • --var name=value maps template variable names to values.
  • Both flags can be repeated.
  • Both flags also support comma-separated batches, for example:
    • --input transcript=./t.md,glossary=./g.yml
    • --var session_id=42,session_date=2026-05-04

Output Behavior

run:

  • Writes generated artifact content to stdout by default.
  • Writes generated artifact content to --out when provided.
  • Prints run summary metadata to stderr on success.
  • Prints errors to stderr on failure.

render:

  • Writes prepared-run output to stdout by default.
  • Writes prepared-run output to --out when provided.
  • Does not print a success summary line.

serve:

  • Logs startup and server errors to stderr.

Exit Codes

  • 0: success.
  • 1: runtime/parse/config/load/render/generation/output-write error.
  • 2: run completed, output was generated, but validation status is failed.

When run exits 2, output may already be written to stdout or --out.

Common Workflows

Render prompt inputs and template variables as JSON:

go run ./cmd/scriptorium render \
  --config ./examples/config.yml \
  --prompt generic.markdown_summary \
  --input transcript=./examples/fixtures/transcript.md \
  --input glossary=./examples/fixtures/glossary.yml \
  --var session_date=2026-05-04 \
  --format json

Run a prompt with profile override and file output:

go run ./cmd/scriptorium run \
  --config ./examples/config.yml \
  --prompt generic.markdown_summary \
  --profile local-fast \
  --input transcript=./examples/fixtures/transcript.md \
  --input glossary=./examples/fixtures/glossary.yml \
  --out ./out/summary.md

Start the HTTP server with explicit config:

go run ./cmd/scriptorium serve --config ./examples/config.yml

Copyable example script:

  • examples/render-markdown-summary.sh