Musketeer logo Musketeer

State model

All Musketeer state lives on disk in the .musketeer/ directory as human-readable YAML files.

Core principles

State is explicit

All state is stored in named YAML files with clear purposes. There is no hidden state. You can inspect any file at any time with a text editor.

State is local

State is stored locally on disk in your project directory. State files are:

  • Human-readable YAML
  • Machine-parseable
  • Self-contained (no external references required)
  • Suitable for version control

Workspace configuration

The workspace config lives at .musketeer/musketeer.yml:

version: 1
workspace:
  state_dir: .musketeer
agents:
  originator:
    adapter: local
  cross_examiner:
    adapter: local
  executor:
    adapter: local
policy:
  executor_allowlist: []
  redaction:
    enabled: false
    patterns: []

This file defines the three agent seats (Originator, Cross-Examiner, Executor), their adapters, and workspace policy.

Run state

Each run is identified by a UUID (the replay_id) and stored in its own directory under .musketeer/runs/. A run contains five YAML files:

intent.yml

Owned by the Originator. Defines the goal:

replay_id: <uuid>
title: "Untitled"
outcome: "TBD"

constraints.yml

Owned by the Cross-Examiner. Sets boundaries:

replay_id: <uuid>
scope: []
non_goals: []
allowlist: []

plan.yml

Shared by Originator and Cross-Examiner. Defines tasks:

replay_id: <uuid>
tasks: []

Each task has an id, title, and status.

progress.yml

Owned by the Executor. Records sequenced progress entries:

replay_id: <uuid>
entries: []

Each entry has a seq (strictly increasing), ts (timestamp), role, and summary.

handoff.yml

Owned by the Executor. Records handoff notes:

replay_id: <uuid>
note: ""

State directory structure

.musketeer/
  musketeer.yml
  runs/
    <replay_id>/
      intent.yml
      constraints.yml
      plan.yml
      progress.yml
      handoff.yml

Querying state

The musketeer run status command shows run state:

musketeer run status                  # Show all runs
musketeer run status --replay <id>    # Show a specific run

When no --replay flag is given, run status lists all runs sorted lexicographically.

See run status for details.