bead CLI Reference

Complete reference for all bead commands and options.

Global Options

bead [--version] [--help] <command> [<args>]

Options:
  --version    Show version information
  --help       Show help message
  -w PATH      Workspace directory (default: current directory)

Core Commands

bead new

Create a new bead workspace.

bead new <name> [-w <workspace>]

Arguments:
  name         Name of the new bead

Example:
  $ bead new customer-analysis
  Created "customer-analysis"

bead develop

Open an existing bead for development.

bead develop <bead-ref> [-w <workspace>] [-x|--extract-output]

Arguments:
  bead-ref     Bead name, timestamp, or archive path

Options:
  -x, --extract-output    Also extract output data

Examples:
  $ bead develop my-analysis                    # Latest version
  $ bead develop my-analysis_20250730T120000.zip  # Specific version
  $ bead develop -x my-analysis                 # With outputs

bead save

Save current workspace as a new bead archive.

bead save <box> [-w <workspace>]

Arguments:
  box          Name of the bead box to save to

Example:
  $ bead save production
  Successfully stored bead at /path/to/box/my-bead_20250730T120000.zip

bead zap

Delete a workspace (handles read-only input folders).

bead zap [-w <workspace>]

Example:
  $ bead zap
  Workspace deleted

Input Management

bead input add

Add a new input dependency.

bead input add <input-name> [<bead-ref>] [--time TIME]

Arguments:
  input-name   Name for this input in your workspace
  bead-ref     Source bead (default: same as input-name)

Options:
  --time TIME  Use specific version timestamp

Examples:
  $ bead input add survey-data
  $ bead input add responses survey-2024
  $ bead input add old-model model --time 20250601T000000+0200

bead input load

Load data for existing input dependencies.

bead input load [<input-name>] [--all]

Arguments:
  input-name   Specific input to load

Options:
  --all        Load all defined inputs

Examples:
  $ bead input load survey-data
  $ bead input load --all

bead input update

Update inputs to newer versions.

bead input update [<input-name>] [--all] [--time TIME] [--prev]

Arguments:
  input-name   Specific input to update

Options:
  --all        Update all inputs
  --time TIME  Update to specific timestamp
  --prev       Update to previous version

Examples:
  $ bead input update processed-data
  $ bead input update --all
  $ bead input update --prev my-model

bead input unload

Remove input data but keep dependency definition.

bead input unload <input-name>

Example:
  $ bead input unload large-dataset
  Input data removed (definition kept)

bead input delete

Remove input dependency entirely.

bead input delete <input-name>

Example:
  $ bead input delete old-data
  Input dependency removed

bead input map

Remap input to different source bead.

bead input map <input-name> <new-bead-ref>

Example:
  $ bead input map test-data production-data
  Input remapped

Box Management

bead box add

Define a new bead box (storage location).

bead box add <name> <path>

Arguments:
  name         Friendly name for the box
  path         Directory path for storage

Example:
  $ bead box add shared /mnt/team/beads
  Box 'shared' added

bead box list

List all configured bead boxes.

bead box list

Example:
  $ bead box list
  Boxes:
  -------------
  local: /home/user/beads
  shared: /mnt/team/beads
  archive: /backup/bead-archive

bead box forget

Remove a box from configuration.

bead box forget <name>

Example:
  $ bead box forget old-storage
  Box forgotten

Web Visualization

bead web

Generate and manipulate dependency graph visualizations.

bead web <command> [args...]

Commands:
  load <file>              Load saved web graph
  save <file>              Save current web graph
  / <sources..> / <sinks..> /    Filter by sources/sinks
  heads                    Show only latest versions
  color                    Apply freshness coloring
  png <file>              Generate PNG visualization
  svg <file>              Generate SVG visualization
  view <file>              Open visualization in browser

Example Pipeline:
  $ bead web heads color png graph.png view graph.png

Metadata Commands

bead meta

View bead metadata.

bead meta [-w <workspace>]

Example:
  $ bead meta
  bead: my-analysis
  Created: 2025-07-30T12:00:00+02:00
  Inputs: processed-data, model-config

bead xmeta

Export extended metadata.

bead xmeta <bead-archive>

Example:
  $ bead xmeta my-analysis_20250730.zip > metadata.json

Environment Variables

BEAD_PATH

Colon-separated list of directories to search for bead boxes.

export BEAD_PATH=/shared/beads:/archive/beads

BEAD_WORKSPACE

Default workspace directory.

export BEAD_WORKSPACE=/home/user/current-bead

File Structure

Workspace Layout

workspace/
├── .bead-meta/          # Metadata (don't edit)
│   ├── bead            # bead specification
│   └── input.map       # Input mappings
├── input/              # Input dependencies (read-only)
│   └── <input-name>/   # One folder per input
├── output/             # Files to share
├── temp/               # Temporary files (not saved)
└── <other>/            # Your code and files

Archive Structure

bead-name_TIMESTAMP.zip
├── code/               # All non-special directories
├── data/               # Contents of output/
└── meta/               # Metadata files
    ├── bead           # Specification
    └── manifest       # File checksums

Exit Codes

  • 0 - Success
  • 1 - General error
  • 2 - Usage error (invalid arguments)
  • 3 - Workspace error (not a valid bead)
  • 4 - Dependency error (missing/invalid input)
  • 5 - Box error (storage issues)

Common Workflows

Basic Development Cycle

# 1. Create new bead
$ bead new my-analysis
$ cd my-analysis

# 2. Add dependencies
$ bead input add clean-data

# 3. Develop
$ python analyze.py

# 4. Save snapshot
$ bead save results

# 5. Clean up
$ cd ..
$ bead zap my-analysis

Updating Dependencies

# Check for updates
$ bead input update --dry-run

# Update all inputs
$ bead input update --all

# Rerun analysis
$ make all

# Save new version
$ bead save results

Debugging Dependencies

# List current inputs
$ ls -la input/

# Check input metadata
$ cat .bead-meta/input.map

# Verify input contents
$ head input/my-data/data.csv

# Check available versions
$ ls /path/to/box/my-data_*.zip

For more detailed examples and patterns, see our Guides.