Barca runs Python asset graphs with content-addressed caching.
Every asset output is fully materialized to an artifact file at step boundaries (json, pickle, or parquet) — that persistence is the cache checkpoint. pandas/polars DataFrames, pyarrow Tables and duckdb relations are written as parquet; parameter type annotations choose how downstream steps read it back (pandas by default, or polars, pyarrow, duckdb) but do not skip materialization. Start with `barca list` (run inside the project) to discover a project's assets and tasks; run `barca docs` for the manual.

Usage: barca <COMMAND>

Commands:
  get      Get asset value(s) — cache-aware, runs only the needed subgraph
  run      Run a task and its dependency cone — the task always re-runs
  plan     Parse source files and emit the execution plan as JSON
  history  Show recent run history
  stats    Show execution statistics for an asset
  serve    Run a long-running HTTP server exposing the orchestrator as a JSON API
  list     List all discovered definitions (assets, tasks, sensors) with their deps
  status   Show every node's cache state, last materialization and artifact shape (read-only)
  sql      Query cached results with SQL (DuckDB) — each asset is a view named after its function
  docs     Show the built-in manual: concepts, output formats, examples, agent conventions
  version  Print version information
  help     Print this message or the help of the given subcommand(s)

Options:
  -h, --help
          Print help (see a summary with '-h')

  -V, --version
          Print version

Quick start:
  barca list                        # discover every asset, task and dependency in the project
  barca list pipeline.py            # ... or only those in one file
  barca get total pipeline.py       # run only what `total` needs (cached on re-run)
  barca run deploy pipeline.py      # run a task and its dependency cone
  barca docs                        # built-in manual: concepts, formats, examples

Output: results go to stdout as tables/summaries in a terminal and as JSON when piped or
captured; --json / --pretty (or BARCA_OUTPUT=json|pretty) override. Progress and errors go to
stderr. In JSON mode an error is one JSON line on stderr: {error, code, kind, remediation}.
Exit codes: 0 ok, 1 step failed, 2 usage error, 3 barca/infra failure, 130 cancelled.
Scripts and AI agents: barca docs skill (short, start here), barca docs agents (full contract)
