CLI for Expedait project management — download specs, post comments
Project description
Expedait CLI
CLI for Expedait — lets AI coding agents download project specs and post comments via the Expedait API.
The model
Expedait organizes specs around four primitives:
- Objectives — top-level goals. An objective is itself a deliverable that nests child deliverables beneath it (
parent_deliverable_id). - Deliverables — the individual spec documents (formerly "pages").
- Context — the assembled LLM context for one deliverable: dependency deliverables, linked external sources, uploaded files, and aggregate sizes.
- Review — scoring findings raised on a deliverable: severity, description, the criteria that flagged them, and anchor offsets.
Usage
Run with uvx (recommended)
No installation needed — run directly:
uvx expedait-cli auth login
uvx expedait-cli projects list
uvx expedait-cli projects download 1
Add as a dev dependency
If your AI agent needs it available in the project environment:
uv add --group dev expedait-cli
Then reference it in your agent configuration (e.g. CLAUDE.md, .cursor/rules, etc.).
Project Setup
After authenticating, run init inside your project directory to store your tenant and project settings locally:
uvx expedait-cli init
This creates .expedait/settings.json with your tenant_id and project_id. Add .expedait/ to your .gitignore.
Once initialized, commands that need a project ID will resolve it automatically. Downloads default to .expedait/context/:
expedait projects download # downloads to .expedait/context/
expedait deliverables list # no --project-id needed
expedait deliverables download 42 # downloads to .expedait/context/
Resolution order for tenant/project: CLI flag > env var > .expedait/settings.json > ~/.expedait/config.json.
Authentication
Interactive login
uvx expedait-cli auth login
Prompts for login method (SSO or email/password). Stores credentials in ~/.expedait/config.json.
Environment variables (CI / agents)
export EXPEDAIT_TOKEN="your-jwt-token"
export EXPEDAIT_API_URL="https://your-instance.expedait.org"
export EXPEDAIT_TENANT_ID=1
Token resolution order: EXPEDAIT_TOKEN env var > ~/.expedait/config.json > error.
Commands
Auth
expedait auth login # Interactive login
expedait auth status # Show current user and tenant
expedait auth logout # Clear stored credentials
Projects
expedait projects list # List all projects
expedait projects get PROJECT_ID # Get project details
expedait projects download PROJECT_ID # Extract all deliverables to .expedait/context/
expedait projects download PROJECT_ID --output-dir ./specs # Extract to a custom directory
Deliverables
expedait deliverables list --project-id PROJECT_ID # List deliverables in a project
expedait deliverables get DELIVERABLE_ID # Print deliverable markdown content
expedait deliverables get DELIVERABLE_ID --include meta,content,dependencies,score
expedait deliverables inspect DELIVERABLE_ID # Full context (content + comments + deps + lock)
expedait deliverables download DELIVERABLE_ID # Extract to .expedait/context/
--include accepts a comma-separated subset of: meta, content, template,
requirements, writer_instructions, dependencies, external_context,
score, comments, versions. It defaults to content. meta surfaces
parent_deliverable_id (non-null ⇒ this deliverable is a child nested under an
objective).
Objectives
expedait objectives overview DELIVERABLE_ID # Objective metadata + full descendant tree
Context
expedait context get DELIVERABLE_ID # The LLM context snapshot for one deliverable
Review
expedait review issues DELIVERABLE_ID # List scoring findings (default: all)
expedait review issues DELIVERABLE_ID --state open # Only open findings
expedait review mute ISSUE_ID --note "by design" # Mute a finding
expedait review mute ISSUE_ID --unmute # Unmute a finding
Comments
expedait comments list DELIVERABLE_ID # List comments on a deliverable
expedait comments create DELIVERABLE_ID \ # Create a comment (offsets resolved automatically)
--text "Comment content" \
--selected-text "text from the deliverable" \
--source-deliverable-id 5 # Optional: agent's source deliverable
expedait comments resolve DELIVERABLE_ID COMMENT_ID # Mark as resolved
expedait comments delete DELIVERABLE_ID COMMENT_ID # Delete a comment
Only --text and --selected-text are required; the CLI locates the selected
text in the deliverable to compute anchor offsets. Pass --start-offset and
--end-offset to anchor explicitly (e.g. when the selected text appears more
than once).
Global Options
expedait --api-url https://host:8000 ... # Override API URL
expedait --tenant-id 2 ... # Override tenant
expedait --format json ... # Force JSON output
expedait --format text ... # Force human-readable output
expedait --version # Show version
Output format defaults to text when connected to a terminal, json when piped.
Migration note: the
pagescommand group has been renamed todeliverables.expedait pages …still works for one release (it warns and forwards) but will be removed.
Agent Skills
For step-by-step guides on using the CLI from AI coding agents, see expedait-skills.
Development
git clone https://github.com/Expedait/expedait-cli.git
cd expedait-cli
uv sync --group dev
uv run python -m pytest
License
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file expedait_cli-0.3.0.tar.gz.
File metadata
- Download URL: expedait_cli-0.3.0.tar.gz
- Upload date:
- Size: 30.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b170423ff2ed4cc1292342c99620760fa5c830e54519c00bb77d0b41d86d688f
|
|
| MD5 |
01c8bd8c6e4ace8d28b2ed5e44b3518e
|
|
| BLAKE2b-256 |
8c0c187c2ca43ec5fbfe8afa83332ce44428a67fc73a30af941d19bf40aa55db
|
Provenance
The following attestation bundles were made for expedait_cli-0.3.0.tar.gz:
Publisher:
publish.yml on Expedait/expedait-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
expedait_cli-0.3.0.tar.gz -
Subject digest:
b170423ff2ed4cc1292342c99620760fa5c830e54519c00bb77d0b41d86d688f - Sigstore transparency entry: 1767093215
- Sigstore integration time:
-
Permalink:
Expedait/expedait-cli@e1eb104ac8bae2df21aee01a029b33c5a480fa5e -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/Expedait
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@e1eb104ac8bae2df21aee01a029b33c5a480fa5e -
Trigger Event:
push
-
Statement type:
File details
Details for the file expedait_cli-0.3.0-py3-none-any.whl.
File metadata
- Download URL: expedait_cli-0.3.0-py3-none-any.whl
- Upload date:
- Size: 24.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4e9aaf63524093d7e57c6eeb8c479f0c2b1a09657c81df5029309de040662979
|
|
| MD5 |
991bbb94d8f8e3daa37417f566de56b4
|
|
| BLAKE2b-256 |
59c3de9c15bc02fbb312ddd0fa9eaf7c42c1aee326c5060956446a2300e4032d
|
Provenance
The following attestation bundles were made for expedait_cli-0.3.0-py3-none-any.whl:
Publisher:
publish.yml on Expedait/expedait-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
expedait_cli-0.3.0-py3-none-any.whl -
Subject digest:
4e9aaf63524093d7e57c6eeb8c479f0c2b1a09657c81df5029309de040662979 - Sigstore transparency entry: 1767093305
- Sigstore integration time:
-
Permalink:
Expedait/expedait-cli@e1eb104ac8bae2df21aee01a029b33c5a480fa5e -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/Expedait
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@e1eb104ac8bae2df21aee01a029b33c5a480fa5e -
Trigger Event:
push
-
Statement type: