Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Molecule lifecycle commands

These commands use physics-inspired names (nucleate, evolve, decay, spore, …). New to the vocabulary? See The physics vocabulary.

cs spark

Spark — capture a one-line operator intent into the Inbox (ADR-061)

Usage: cs spark [OPTIONS] <TEXT>

EXAMPLES: cs spark "réunion demain : revoir le pitch" cs spark "debug the flaky test" --kind task cs spark "CI broken on macOS" --kind issue --tag temp:warm cs spark "constellation idea" --nucleon operator-demo@example.com

A spark is the pre-task — a one-line operator intent dropped into the Inbox (HOT bucket by default) with the sparker's identity attached. The demo criterion: operator-demo on her iPhone via Blink Shell SSH types a single spark and the operator sees it on the next 'cs peek' refresh. No Claude Code in the chain.

DEFAULTS: --kind idea # 💡 one-line Inbox shape --tag temp:hot # surfaces in 'cs inbox' HOT bucket nucleon_id: git user.email, else $USER@$(hostname)

SACRIFICES: offline fails, auth ≡ SSH access, no push (next refresh), raw Blink terminal UX, v1 is one-way (no pilot reply from Inbox).

SEE ALSO: cs inbox (where sparks land), cs tackle (promote to work), cs transform (re-kind), cs collapse (reject with reason).

Arguments:
  • <TEXT> — The spark text itself — what appeared in the operator's head.

    Captured verbatim into the molecule's topic variable and thus into prompt.md (sealed by the usual nucleate path). Quote the argument if it contains spaces.

Options:
  • --kind <KIND> — Override the molecule kind. Defaults to idea (💡) — the Jobs §2 shape. Accepts idea, task, issue, or any other [cosmon_core::kind::MoleculeKind] string the operator cares to pass; the actual validation happens in nucleate

    Default value: idea

  • --tag <TAG> — Tag to attach (repeatable). When no --tag is supplied the spark lands with temp:hot so it surfaces immediately in cs inbox (HOT bucket) and cs ensemble --tag temp:hot

  • --fleet <FLEET> — Fleet to nucleate into. Defaults to default

    Default value: default

  • --nucleon <NUCLEON> — Override the auto-derived nucleon_id (sparker identity).

    Normally derived from git config user.email with a $USER@$(hostname) fallback. Pass this when scripting a test demo or when the git email is not the identity you want to record.

  • --sparked-by <SESSION_ID> — Currently-open pilot-session molecule id (ADR-061 §SparkedBy).

    Recorded as a variable only in v1 — the SparkedBy typed link is reserved until ADR-061 is marked accepted. Passed verbatim into prompt.md so later migrations can recover the edge.

  • --formula <FORMULA> — Override the formula name (defaults to spark). Exists for tests and for exotic deployments that vendor their own capture formula; normal callers leave this unset

    Default value: spark

  • --formulas-dir <DIR> — Path to the formulas directory (defaults to walk-up discovery)

  • --store-dir <DIR> — Path to the state store root (defaults to walk-up discovery)

cs drop

Drop — universal Inbox gesture (hotkey / zsh widget / menubar) → cs spark

Usage: cs drop [OPTIONS] [TEXT]...

EXAMPLES: cs drop # universal Inbox gesture — captures whatever is in scope

Equivalent of cs spark reachable from hotkey / zsh widget / menubar.

SEE ALSO: cs spark (canonical), cs nucleate spark (formula form).

Arguments:
  • <TEXT> — The drop text itself. When absent or empty, the text is read from stdin — supports cs drop < file and pipe chains.

    Multiple words are joined with single spaces so callers can pass raw command-line tokens (cs drop hello there) without quoting. Leading/trailing whitespace is trimmed.

Options:
  • --galaxy <NAME> — Galaxy name to drop into. Resolved via ~/.config/cosmon/galaxies.toml ([TomlGalaxyIndex]).

    When set, the resolved Galaxy.path becomes the store root (<path>/.cosmon/state/) for this nucleation. Without it, cosmon's usual walk-up discovery picks the galaxy from the current working directory.

  • --kind <KIND> — Molecule kind override. Defaults to idea — same as cs spark.

    The briefing names spark | idea | task as common choices; any valid [cosmon_core::kind::MoleculeKind] token is accepted (validated in nucleate).

    Default value: idea

  • --tag <TAG> — Additional tag to attach (repeatable). temp:hot and source:drop are always added; --tag extends the list.

    Callers use this to stamp the drop's origin surface (e.g. --tag source:shortcut from the iPhone SSH wrapper, which supplements rather than replaces source:drop).

  • --fleet <FLEET> — Fleet to nucleate into. Defaults to default

    Default value: default

  • --nucleon <NUCLEON> — Override the auto-derived nucleon_id (drop author identity). Same semantics as cs spark --nucleon

  • --sparked-by <SESSION_ID> — Currently-open pilot-session molecule id (ADR-061 §SparkedBy). Same semantics as cs spark --sparked-by

  • --formula <FORMULA> — Override the formula name (defaults to spark). Exists for tests and exotic deployments; normal callers leave this unset

    Default value: spark

  • --formulas-dir <DIR> — Path to the formulas directory (default: walk-up discovery)

  • --store-dir <DIR> — Path to the state store root (default: walk-up discovery, or the galaxy-registry lookup when --galaxy is set)

cs listen

Listen — voice → whisper.cpp → cs nucleate spark (MVP)

Usage: cs listen [OPTIONS]

EXAMPLES: cs listen # voice-driven spark capture (whisper.cpp) cs listen --once # single utterance, then exit

Voice ingress to the fleet. Wraps whisper.cpp transcription and produces a spark molecule per utterance.

SEE ALSO: cs spark, cs drop.

Options:
  • --seconds <SECONDS> — Seconds to record before cutting off (no VAD in v0).

    Ignored when --transcript or --audio is supplied. Keep the value short: whisper-cli on CPU runs near 1× realtime on the small model, so 15 s of speech costs ~15 s of wall-clock.

    Default value: 10

  • --transcript <TEXT> — Skip recording + transcription and use this text directly.

    Useful for scripting (end-to-end dry-runs without a microphone) and for isolating the spark pipeline from the audio stack when debugging. Incompatible with --audio.

  • --audio <PATH> — Transcribe an existing audio file instead of recording.

    Accepted formats are whatever the configured whisper-cli was built with (WAV/FLAC/MP3 on the default homebrew build). Incompatible with --transcript.

  • --whisper-bin <PATH> — Path to the whisper-cli binary (defaults to whisper-cli in $PATH).

    This is the whisper.cpp CLI (brew install whisper-cpp), not the OpenAI Python package — the latter is slower and violates the local-first constraint (it bundles PyTorch).

    Default value: whisper-cli

  • --model <PATH> — Path to the whisper model (e.g. ggml-small.bin).

    Can also be set via the COSMON_WHISPER_MODEL env var. Required for actual transcription — if absent and --transcript was not supplied the command fails loudly instead of silently producing an empty spark.

  • --language <LANG> — Whisper language hint: auto, fr, en, …

    The whisper-cpp flag accepts ISO 639-1 codes. auto asks whisper to detect the language itself.

    Default value: auto

  • --ffmpeg-bin <PATH> — Path to the ffmpeg binary used for recording

    Default value: ffmpeg

  • --device <SPEC> — ffmpeg AVFoundation input device specifier.

    On macOS the default microphone is ":0". Run ffmpeg -f avfoundation -list_devices true -i "" to enumerate.

    Default value: :0

  • --dry-run — Skip nucleation — print the transcript only.

    Use this when validating the audio path on a fresh machine so you do not pollute the Inbox with test utterances.

  • --kind <KIND> — Molecule kind for the resulting spark (delegated to cs spark)

    Default value: idea

  • --tag <TAG> — Tag to attach (repeatable, defaults to temp:hot)

  • --fleet <FLEET> — Fleet to nucleate into

    Default value: default

  • --nucleon <NUCLEON> — Override the auto-derived nucleon_id (sparker identity)

  • --formulas-dir <DIR> — Path to the formulas directory (defaults to walk-up discovery)

  • --store-dir <DIR> — Path to the state store root (defaults to walk-up discovery)

cs nucleate

Nucleate a new molecule from a formula template

Usage: cs nucleate [OPTIONS] [FORMULA]

EXAMPLES: cs nucleate task-work --var topic="refactor CLI help" cs nucleate deep-think --kind deliberation --var question="..." cs nucleate patrol --blocks root-mol # add a DAG edge cs nucleate constellation --kind constellation
--var pattern="three molecules re-invent the same missing primitive"
--var citations="delib-example-0001,task-example-0002,idea-example-0003" cs nucleate --from molecules/ # hydrate from TOML declarations

KINDS (--kind): idea 💡, task 🔧, decision 📐, issue 🐛, signal ⚡, deliberation 🧠 (use with the deep-think formula), constellation 🌌 (fil-rouge artifact; see cs help guide).

LINK FLAGS: --blocks DAG progression edge (target cannot advance until this one completes) --blocked-by symmetric counterpart of --blocks --decayed-from information edge: parent this molecule emerged from --refines citation edge (no progression semantics), auto-populated from --var citations for --kind constellation

SEE ALSO: cs tackle (launch a worker on the molecule you just nucleated). docs/guides/constellation-pattern.md (when to use 🌌 vs 🧠).

Arguments:
  • <FORMULA> — Formula name (looks for {name}.formula.toml in the formulas directory).

    Required unless --from is supplied.

Options:
  • --from <PATH> — Hydrate molecule(s) from a TOML declaration file or directory.

    When PATH is a directory, every *.toml file inside (non-recursive, sorted) is loaded as a [MoleculeDeclaration]. The positional formula argument is ignored in this mode — each declaration carries its own formula field.

  • --blocks <MOLECULE_REF> — Target molecule(s) that this new molecule blocks — each target cannot progress until this one completes.

    Accepts two forms: - <molecule-id> — same-galaxy edge. Adds Blocks here and a symmetric BlockedBy on the target. Targets must already exist. - <galaxy-alias>:<molecule-id> (or <galaxy-alias>@<molecule-id>) — cross-galaxy edge (Phase 1, ADR-035). The remote target is resolved best-effort via configured galaxy aliases or the cluster root. The reciprocal edge is not filed on the target galaxy (one-writer-per-galaxy, ADR-052) — the edge is recorded locally and a stderr warning is emitted if the target is unreachable.

  • --blocked-by <MOLECULE_REF> — Source molecule(s) that block this new molecule — this new molecule cannot progress until each source completes.

    Same syntax as --blocks, including the <alias>:<mol_id> cross-galaxy form (Phase 1, ADR-035).

  • --decayed-from <MOLECULE_ID> — Declare that the new molecule decayed from PARENT_ID — an information edge (not a progression edge): the parent is the cognitive source this molecule emerged from, but the parent is free to keep advancing independently. Symmetric counterpart: the parent gains a DecayProduct link to the new molecule.

    This is the explicit form of the auto-parent contract: when a worker cs tackles a molecule, COSMON_PARENT_MOL_ID is injected into its environment, and any subsequent cs nucleate from that worker auto-populates this flag unless one of --blocks, --blocked-by, --decayed-from, or --no-parent is already set. Passing it explicitly wins over the env var.

  • --no-parent — Disable the env-driven auto-parent contract for this invocation.

    When set, the COSMON_PARENT_MOL_ID environment variable is ignored and no DecayedFrom edge is synthesized. Use this for legitimate orphan nucleations (e.g., a worker that intentionally spawns an unrelated top-level molecule).

  • --refines <MOLECULE_ID> — Cited molecule(s) that this new molecule refines (semantic citation edge — does NOT carry progression semantics, unlike --blocks).

    For every target, the new molecule gets a Refines link and the target gets a symmetric RefinedBy link. Intended for Constellation molecules that name a fil-rouge across N existing molecules. Repeat the flag per citation; targets must already exist.

    Also auto-populated for --kind constellation from a comma-separated --var citations=mol1,mol2,mol3.

  • --refutes <MOLECULE_ID> — Diagnosis molecule(s) that this new molecule refutes (semantic refutation edge — no progression semantics, unlike --blocks).

    For every target, the new molecule gets a Refutes link and the target gets a symmetric RefutedBy link. This is the DAG-native form of the ADR-143 diagnosis-verify gate: a cmb-verify molecule that reproduces a relayed symptom but finds the stated mechanism describes a nonexistent code path records the divergence by refuting the diagnosis molecule. Repeat the flag per refuted diagnosis; targets must already exist.

  • --fleet <FLEET> — Fleet to nucleate the molecule into (default: "default")

    Default value: default

  • --kind <KIND> — Molecule kind: idea, task, decision, issue, signal, deliberation, constellation (see docs/guides/constellation-pattern.md)

  • --class <CLASS> — Operational class — standard (default), stress-test, or infra (ADR-085 §1).

    stress-test opts the molecule into the two-layer pre-commitment seal at dispatch (Layer 1 runtime precondition + Layer 2 witness-quorum, ADR-085 §2-§3) and out of autopilot drain. The remaining classes are gate-equivalent to the legacy default; this flag is a marker, not a runtime mode.

  • --assign <ASSIGN> — Assign a worker to the new molecule

  • --var <KEY=VALUE> — Set a variable (repeatable: --var key=value)

  • --formulas-dir <DIR> — Path to the formulas directory (default: ./formulas)

  • --role <ROLE> — Agent role for the worker that will tackle this molecule.

    Valid roles: orchestration, research, implementation, infrastructure, advisory, validation. When set, cs tackle uses this role instead of the default implementation.

  • --store-dir <DIR> — Path to the state store root (default: .cosmon)

  • --tag <TAG> — Typed label to attach to the new molecule (repeatable).

    Format: key or key:value. Keys are kebab-case; values exclude whitespace and :. Duplicate tags are deduplicated.

  • --interaction-mode <MODE> — Static interaction-mode discriminant posed at nucleation.

    One of operator-required or background. Recorded as the interaction-mode:<mode> tag. Posed by the molecule's author — often an agent — and read at dispatch ; survives the operator's present state. Default explicit, not implicit : when absent, the tag is simply not set, and consumers (the graceful degradation controller, in particular) decide what to do.

    Conflicts with --tag interaction-mode:* to keep the discriminant single-sourced.

  • --may-block-on-operator <BOUNDARY> — Grant the operator-block capability at an irreversibility boundary (ADR-123 Q5).

    One of signature, external-send, publish, authoritative-value. Recorded as the op-block:<boundary> tag. A worker reads this single typed capability to decide whether it MAY pause for an operator (cs await-operator) at that boundary — or, when absent, MUST surface-and-continue. The capability is granted here at nucleation and never self-asserted by the worker.

    Conflicts with --tag op-block:* to keep the grant single-sourced.

  • --ttl <DURATION> — Relative TTL — deadline is now + duration (ADR-029).

    Grammar: <N><unit> where unit ∈ {s,m,h,d,w}. Examples: 7d, 24h, 2w. Mutually exclusive with --expires-at.

  • --expires-at <WHEN> — Absolute expiry instant (ADR-029).

    Accepts RFC3339 (2026-07-02T00:00:00Z) or a plain YYYY-MM-DD date (anchored at end-of-day 23:59:59Z). Mutually exclusive with --ttl.

  • --expiry-policy <POLICY> — Expiry policy — what to do when expires_at is in the past.

    One of warn, collapse, escalate. Defaults to the per-kind default from config (or warn) when unset. Only meaningful when --ttl or --expires-at is also provided.

  • --energy-budget <N> — Per-molecule step counter circuit breaker (THESIS Part XI).

    cs evolve decrements this once per step. At zero, the next attempt transitions the molecule to Frozen with reason "energy-exhausted". Default comes from .cosmon/config.toml [energy] default_step_budget (100 if absent). Pass 0 to disable the breaker for this molecule.

  • --require-galaxy — Refuse to nucleate into the host-global ~/.cosmon/state fleet.

    By default, running cs nucleate from a directory with no .cosmon/config.toml in cwd or any ancestor falls back to the host-global state dir ($HOME/.cosmon/state) and prints a warning to stderr — the molecule is born into a fleet invisible to every galaxy. --require-galaxy turns that warning into a hard error (exit ≠ 0), so scripts and tooling that must write galaxy-scoped state can fail fast instead of silently leaking orphans.

  • --adapter <NAME> — Durable per-molecule adapter pin — the rung-1 provider-family intent stamped at nucleation (ADR-097 / C6; committee-20260723-c0a1).

    Unlike the transient cs tackle --adapter flag (which routes a single dispatch), this pin is persisted to MoleculeData::adapter and survives any later run directive. A cs run --resident --adapter <X> owns a run-wide directive that stamps every pin-less molecule with <X>; a molecule nucleated with --adapter <Y> keeps <Y> because the per-molecule pin beats the run directive (cosmon_runtime::resident). This is what lets a cross-provider committee pin a seat's distinct family (e.g. mistral) so a resident loop driving the generator's family (e.g. claude) cannot auto-tackle the seat into a FamilyCollision.

    Values are validated against the adapter-name grammar (the same check cs tackle --adapter applies); an empty or malformed name aborts the nucleation. None (the default) stamps no pin — the molecule resolves its adapter through the canonical cs tackle chain at dispatch.

cs observe

Observe a molecule's current state and history

Usage: cs observe [OPTIONS] [MOLECULE_ID]

EXAMPLES: cs observe task-example-0001 # one-shot snapshot (never poll!) cs observe task-example-0001 --json # for scripts

SEE ALSO: cs wait (block until terminal), cs peek (fractal TUI).

Arguments:
  • <MOLECULE_ID> — Molecule ID (or prefix) to inspect. Omit to list all molecules
Options:
  • --status <STATUS> — Filter by status (active, frozen, completed, collapsed)

  • --worker <WORKER> — Filter by assigned worker

  • --formula <FORMULA> — Filter by formula

  • --search <SEARCH> — Free-text search across molecule fields

  • --all — Include completed and collapsed molecules (excluded by default in list mode)

  • --tag <GLOB> — Filter by tag glob pattern (repeatable, any-match)

  • --notes <N> — Number of trailing notes to show in detail mode (default: 3)

    Default value: 3

cs evolve

Evolve a molecule to its next lifecycle state

Usage: cs evolve [OPTIONS] --evidence <EVIDENCE> --formula <FORMULA> <MOLECULE>

EXAMPLES: cs evolve --evidence "step 1 done"
--formula .cosmon/formulas/task-work.formula.toml

Worker-callable. Advances the molecule one step per invocation.

Arguments:
  • <MOLECULE> — Molecule ID to evolve
Options:
  • --evidence <EVIDENCE> — Evidence documenting why the current step is complete
  • --ops-dir <OPS_DIR> — Path to the state store root (overrides walk-up discovery)
  • --formula <FORMULA> — Path to the formula TOML file

cs complete

Complete a molecule — idempotent Active→Completed transition (worker-callable)

Usage: cs complete [OPTIONS] [MOLECULE]

EXAMPLES: cs complete --reason "all steps done"

Idempotent Active→Completed transition. Worker-callable. Does NOT merge the branch or teardown the tmux session — use cs done for that.

SEE ALSO: cs done (merge + teardown), cs evolve (advance one step).

Arguments:
  • <MOLECULE> — Molecule ID to complete (single mode)
Options:
  • --batch <BATCH> — Complete multiple molecules at once

  • --reason <REASON> — Reason for completion (recorded in the log)

    Default value: completed via cs complete

  • --ops-dir <OPS_DIR> — Path to the state store root (overrides walk-up discovery)

  • --override-mindguard-down — Bypass mindguard only when the gate machinery itself is unreachable. Requires --justification. Lands a record in the append-only ledger at ~/.cosmon/audit/mindguard-overrides.jsonl before the completion proceeds. NEVER use this to bypass a MindguardRefused — the remedy for that is to run cs nucleate verify-surface --var target=<MOL>

  • --justification <JUSTIFICATION> — Justification for --override-mindguard-down. Required when the override flag is set. Recorded write-once in the audit ledger

cs collapse

Collapse a molecule — terminate with final state recording

Usage: cs collapse [OPTIONS] --reason <REASON> <MOLECULE>

EXAMPLES: cs collapse --reason "superseded by " cs collapse --reason "Claude usage limit reached"
--cause rate_limit --account default --kind max_rolling_5h

Terminal transition. Use instead of leaving stale pending molecules.

Pass --cause to attribute the failure with a structured tag (ADR-062): rate_limit — quota refused; pair with --account ALIAS --kind CURRENCY (max_rolling_5h, max_weekly, api_key_org_monthly, …). Surfaces as ghost: quota-exhausted in cs peek. inference_stall — worker alive but stopped emitting tokens. manual — operator decision (default if --reason alone). process_death — worker process died (OOM, signal). unknown — could not be classified.

Arguments:
  • <MOLECULE> — Molecule ID to collapse
Options:
  • --reason <REASON> — Reason for the collapse
  • --cause <CAUSE> — Structured cause attribution (ADR-062): rate_limit, inference_stall, manual, process_death, unknown. With rate_limit, pair --account and --kind for the K3 fixture shape
  • --account <ALIAS> — Account alias for --cause rate_limit (e.g. default)
  • --kind <KIND> — Quota currency name for --cause rate_limit (e.g. max_rolling_5h, max_weekly, api_key_org_monthly, financial_usd, custody_scoped). Free-form to remain extensible across providers
  • --reason-kind <REASON_KIND> — Operator-facing collapse classification for cs errors aggregation: one of worker_crashed, gate_failed, blocker_stuck, manual_abort, resource_exhausted. Any other value lands in [CollapseReason::Other] verbatim
  • --ops-dir <OPS_DIR> — Path to the state store root (overrides walk-up discovery)

cs stuck

Stuck — freeze a molecule and record the blocker

Usage: cs stuck --reason <REASON> <MOLECULE>

EXAMPLES: cs stuck --reason "waiting on ADR-30 decision"

Terminal-ish: freezes the molecule with a recorded blocker. Consider cs tag <mol> --add temp:frozen for backlog hygiene.

Arguments:
  • <MOLECULE> — Molecule ID that is stuck
Options:
  • --reason <REASON> — What is blocking progress

cs await-operator

Await-operator — the only sanctioned way to block on an operator decision at an irreversibility boundary (ADR-123). Routes on the molecule's op-block:* capability: block-and-emit, or surface-and-continue

Usage: cs await-operator --question <TEXT> <MOLECULE_ID>

EXAMPLES: cs await-operator --question "Sign and transmit the act, or revise?" cs await-operator --question "Push to the shared remote?" --question "Tag v1.2?"

Worker-callable (ADR-123). The ONLY sanctioned way to block on an operator decision at an IRREVERSIBLE boundary (signature transmitted, push to a shared remote, publish, an authoritative value downstream consumers act on). NEVER raise an off-cosmon modal (AskUserQuestion) — it is invisible to cosmon and the DAG stalls silently.

Routes on the molecule's op-block:<boundary> capability (granted at nucleation via cs nucleate --may-block-on-operator <boundary>): • capability present → BLOCK: writes blocked_on.json, emits worker_blocked_on_operator, tags temp:awaiting-op, and yields. Molecule stays Running. • capability absent → SURFACE-AND-CONTINUE: writes responses/needs-review.md and tells you to pick a sensible default and keep working (reversible).

SEE ALSO: cs nucleate --may-block-on-operator, cs patrol --event-age.

Arguments:
  • <MOLECULE_ID> — Molecule ID whose worker is blocking
Options:
  • --question <TEXT> — A decision the operator is being asked to make (repeatable). At least one is required

cs freeze

Freeze a worker — suspend with state preservation (preemption)

Usage: cs freeze [OPTIONS] <WORKER>

EXAMPLES: cs freeze worker-3 # suspend, keep state for later thaw cs freeze worker-3 --reason "rotating OOM" # graceful shutdown with recorded intent

--reason <str> is the canonical replacement for the former cs quench verb (ADR-052 §D3): graceful shutdown with state preservation IS freeze, and the reason captures operator intent on the audit event.

SEE ALSO: cs thaw (resume a frozen worker), cs tackle (launch replacement after freezing an incumbent — priority inversion = freeze + tackle).

Arguments:
  • <WORKER> — ID of the worker to freeze
Options:
  • --by <BY> — ID of the worker that is preempting this one (optional metadata)

  • --reason <REASON> — Operator-supplied reason for the freeze, recorded on the event.

    Under ADR-052 §D3, cs freeze --reason <str> subsumes the former cs quench verb: "graceful shutdown with state preservation" is what freeze already does, and the reason is the missing metadata that distinguished quench's intent.

  • --timeout <TIMEOUT> — Grace period in seconds before force-killing (default: 15)

    Default value: 15

  • --no-tmux — Skip tmux interaction (state-only transition, for testing)

cs thaw

Thaw a worker — resume a frozen worker's Claude session

Usage: cs thaw [OPTIONS] <WORKER>

EXAMPLES: cs thaw worker-3 # resume a previously frozen worker

SEE ALSO: cs freeze (counterpart), cs resume (nudge idle workers).

Arguments:
  • <WORKER> — ID of the worker to thaw
Options:
  • -c, --continue <CONTINUE_MSG> — Custom message to send after respawn instead of the default resume prompt.

    Useful for hot-restart scenarios: e.g. "A new MCP server X is now available. Continue your work on molecule Y."

  • --no-tmux — Skip tmux interaction (state-only transition, for testing)

cs decay

Decay a molecule into child molecules (1 → N)

Usage: cs decay [OPTIONS] --formula <FORMULA> --reason <REASON> <SOURCE>

EXAMPLES: cs decay --into task --var topic="subtask A" cs decay --formula task-work --var topic="subtask B"

1 → N. Children get a DecayProduct link back to parent. Remember to cs tag <child> --add temp:warm so backlog curation works.

Arguments:
  • <SOURCE> — Source molecule ID to decay
Options:
  • --formula <FORMULA> — Formula for the product molecules

  • --count <COUNT> — Number of products to create (or provide --product-vars multiple times)

    Default value: 1

  • --product-kind <PRODUCT_KIND> — Kind for the product molecules (default: task)

    Default value: task

  • --reason <REASON> — Reason for the decay

  • --chain — Wire consecutive decay products with Blocks/BlockedBy links (A→B→C)

  • --blocks <BLOCKS> — Explicit Blocks edges: the i-th product blocks the given molecule IDs. Repeatable; applied to each product in order

cs merge

Merge molecules into a synthesis (N → 1)

Usage: cs merge [OPTIONS] --formula <FORMULA> --reason <REASON> [SOURCES]...

EXAMPLES: cs merge --into synthesis- cs merge --formula synthesis --var kind=decision

N → 1. Inverse of decay.

Arguments:
  • <SOURCES> — Source molecule IDs to merge (space-separated)
Options:
  • --formula <FORMULA> — Formula for the product molecule

  • --product-kind <PRODUCT_KIND> — Kind for the product molecule (default: decision)

    Default value: decision

  • --reason <REASON> — Reason for the merge

cs transform

Transform a molecule's kind (idea → task, etc.)

Usage: cs transform --to <TO> --reason <REASON> <MOLECULE>

EXAMPLES: cs transform --to task # idea → task cs transform --to decision

Preserves molecule ID; rewrites kind + formula bindings.

Arguments:
  • <MOLECULE> — Molecule ID to transform
Options:
  • --to <TO> — Target kind: idea, task, decision, issue
  • --reason <REASON> — Reason for the transform

cs tag

Tag — add or remove typed labels on a molecule

Usage: cs tag [OPTIONS] <MOLECULE_ID>

EXAMPLES: cs tag --add temp:hot cs tag --remove temp:warm --add temp:frozen

Temperature tags govern backlog curation — see CLAUDE.md § Molecule Temperature Tags.

Arguments:
  • <MOLECULE_ID> — Molecule ID to retag
Options:
  • --add <TAG> — Tag to add (repeatable). Format: key or key:value
  • --remove <TAG> — Tag to remove (repeatable). Matched by exact string