charter-cli
Command-line interface for Charter. Install this package when you want the charter command for project setup, workflow installation, execution, and run inspection from the terminal.
pip install charter-cli
charter --help
For the workflow model, config files, and shared examples, see the main Charter README.
Use This Package When
- You want to bootstrap and operate Charter projects from the terminal.
- You want Charter to resolve capabilities from project config, workflow plans, and installed integrations.
- You want local interactive handling for gates and input steps when running in a TTY.
What charter-cli Owns
- project discovery and
charter.ymlloading - workflow pulling and project-runtime dependency installation into
.charter/.venv - capability resolution precedence for
charter run - subprocess integration lifecycle for command-backed capabilities
- interactive terminal UX for
gateandinputpauses - run inspection commands such as
statusandruns list
Command Reference
charter init [PATH]
charter pull [--project-path PATH]
charter install [--project-path PATH]
charter workflows list [--json] [--project-path PATH]
charter workflows show WORKFLOW_ID [--project-path PATH]
charter run WORKFLOW_ID [options]
charter resume RUN_ID (--approve | --deny) [options]
charter submit-input RUN_ID --answers JSON_OBJECT [options]
charter status RUN_ID [--project-path PATH]
charter runs list [--limit N] [--cursor TOKEN] [--project-path PATH]
Workflow ids come from manifest.yml. They must start with a letter or number
and may contain only letters, numbers, ., _, or -. Workflows use
workflows/<workflow-id>/plan.yml with a sibling
workflows/<workflow-id>/manifest.yml.
Common Flows
Initial project setup:
charter init
charter pull
charter install
charter install is required before project-backed execution commands such as
run, resume, and submit-input. The host-installed CLI activates
.charter/.venv for project-installed integrations and project-local Python
dependencies instead of delegating to a second project-local Charter CLI.
Run a workflow with variables:
charter run research-summary \
--var topic="quantum computing"
When manifest.yml declares required inputs and the CLI is attached to a
terminal, charter run prompts for any missing required values before the run
starts. Non-interactive callers should pass those values with --var.
Override capability resolution explicitly for a run:
charter run pipeline \
--capability binding/extractor="./extractor.py" \
--capability binding/transformer="./transformer.py"
Discover workflows for agents or tooling:
charter workflows list --json
charter workflows show research-summary
charter workflows show prints a man-page-style command contract for one
workflow: synopsis, declared inputs, capability role descriptions, current
project binding status, workflow files, examples, and next commands. It does
not require charter install because it only inspects project and workflow
metadata.
Resume paused work:
charter resume <run_id> --approve
charter resume <run_id> --deny --note "Needs another pass"
charter submit-input <run_id> --answers '{"color":"blue","notes":"ship it"}'
Input steps use the canonical questions: / outputs: YAML form with optional
show context. The CLI pause help lists every question id and kind, and
--answers must be a JSON object keyed by those question ids.
Inspect run state:
charter status <run_id>
charter runs list
charter runs list --limit 25
charter runs list --limit 25 --cursor <token-from-previous-page>
Runtime commands keep output compact and diagnostic-first. charter workflows show is the contract-shaped inspection surface; run, resume,
submit-input, and status report the current result plainly, including failed
step context and available stderr/provider error text without wrapping workflow
outputs in metadata.
Integration Resolution
For every explicit uses: reference in a workflow step, charter run resolves it in this order:
--capability <uses-ref>=SPEC- workflow
plan.ymlbindingsover rootcharter.ymlcapabilities - direct root
charter.ymlcapabilities
SPEC can be either:
module.path:ClassNamefor an in-process Python integration- a shell command string for a subprocess-backed integration
Resolved capability metadata is persisted with the run so a normal resume or submit-input does not need the original overrides again.
Workflow manifests only define the workflow contract. Workflow plans may use
bindings: role descriptions and shallow with: config overlays, but they do
not define capability implementations or Python package dependencies. Steps use
uses: binding/<id> for plan-local bindings and uses: capability/<id> for
direct project capabilities.
Both uses: integrations, optional secrets backends, and optional storage
backends are discovered from installed Python packages via entry points. Source
code sitting next to a project is not enough on its own; the relevant package
must be installed in the active runtime environment.
Related Packages
charter-core: internal runtime engine used by the CLIcharter-integration-sdk: integration interface and protocol models
Metadata
Release files for charter-cli 0.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| charter_cli-0.0.1.tar.gz | 19.4 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| charter_cli-0.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 42.5 kB
Release files / charter_cli-0.0.1.tar.gz
| Download URL | charter_cli-0.0.1.tar.gz |
|---|---|
| Size | 19.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7635e79623f414fb8e9dbbb1c79b3e5b56c2c0037bdbd6efde807a412dd2c371
|
|
BLAKE2b-256 checksum How to use checksums |
21223ddf1850c504ccc6cbe237199f13ccd337806e439984a0361630ab1b95ba
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 18, 2026.
Transparency logRelease files / charter_cli-0.0.1-py3-none-any.whl
| Download URL | charter_cli-0.0.1-py3-none-any.whl |
|---|---|
| Size | 23.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ea49ed46d2595198e56b7c5cbdfe58c34101a0dbd9e5240949f9f9f0c94a8a8a
|
|
BLAKE2b-256 checksum How to use checksums |
d59f3c81b0b2c2824b217e4a71b1a22284947ffc72039faf87bc43e2217a31db
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 18, 2026.
Transparency logSecurity for charter-cli 0.0.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for charter_cli-0.0.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 18, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.