CLI reference

Every command of the exponential command-line tool, generated from the CLI itself, with how to install it and sign in

The `exponential` command-line tool gives you, your scripts and your agents the same objects the app has: actions, projects, goals and OKRs, meetings, decisions, products, tickets, features, epics, pages, CRM contacts, deals and time entries. Every command prints readable output in a terminal and JSON when piped or given `--json`, so it works as well inside an agent's shell as in yours. ## Where to find it The tool is the `exponential-cli` package on npm; its source is at [github.com/positonic/exponential-cli](https://github.com/positonic/exponential-cli). It talks to whatever installation you point it at. ## How to install and sign in 1. Install it globally: ```bash npm install -g exponential-cli ``` 2. Create a **JWT Token** under [Settings → API keys](/settings/api-keys) (see [API tokens](/docs/developers/api-tokens)). An [external agent](/docs/developers/external-agents) uses its own `exp_agent_` key instead, and everything it does is attributed to the agent. 3. Sign in, naming the address you open Exponential at: ```bash exponential auth login --token --api-url https:// ``` 4. Check it worked: ```bash exponential auth status ``` Credentials are stored in your home directory. `exponential auth logout` removes them. ## How to read this reference - Every command group is a section below; every subcommand shows its usage line, arguments and options. The tables are generated from the CLI's own definitions, so they match the version named at the top of the reference. - Most list and create commands take `--workspace `; product-scoped commands (`tickets`, `features`) take `--product ` and need `--workspace` when the product is given by slug. Ids are CUIDs; a ticket can also be addressed by its short id. - Add `--json` (or pipe the output) for machine-readable output. ## How it connects - **API tokens** — the key the CLI signs in with: [API tokens](/docs/developers/api-tokens). - **External agents** — agent-owned keys and attribution: [External agents](/docs/developers/external-agents). - **Time tracking** — worked examples of `time log`, `time list` and `time confirm`: [Time tracking](/docs/do/time-tracking). ## FAQ **The reference is behind the CLI I installed.** Run `npm install -g exponential-cli@latest`; the version this page was generated from is stated at the top of the reference. To regenerate the page, run `npm run docs:cli` in the Exponential repository with `EXPONENTIAL_CLI_DIR` pointing at a CLI checkout. **Can I use it against a self-hosted installation?** Yes. Pass that installation's address to `--api-url` when you sign in. ## Commands _Generated from exponential-cli 1.18.1._ | Command | What it does | |---|---| | [`auth`](#auth) | Authentication commands | | [`actions`](#actions) | Manage actions/tasks | | [`contacts`](#contacts) | Manage CRM contacts | | [`decisions`](#decisions) | Log and manage decisions and open questions (the workspace Decision Log). | | [`deals`](#deals) | Manage pipeline deals | | [`epics`](#epics) | Manage epics. Epics are workspace-scoped and group actions and tickets across products. | | [`features`](#features) | Manage features. A feature lives under a product and groups user stories, scopes, and tickets. | | [`labels`](#labels) | Manage labels (orthogonal tags applied to actions, tickets, features, and epics). | | [`meetings`](#meetings) | Manage meetings and their notes (recorded, imported, or manually created) | | [`organizations`](#organizations) | Manage CRM organizations | | [`pages`](#pages) | Manage Knowledge pages (PRDs, research, technical specs). Link one to a feature with "features link-page". | | [`products`](#products) | Manage products. A workspace contains products; a product holds features and tickets. | | [`projects`](#projects) | Manage projects | | [`search`](#search) | Global search across projects, actions, goals, workspaces and more — same coverage as the app's Cmd+K palette | | [`tickets`](#tickets) | Manage product backlog tickets. Tickets live under a product, link to features/epics, depend on each other, and can be implemented via actions. | | [`time`](#time) | Time entries — log the day's work and list it. Run with an external-agent key, the entry belongs to the agent's OWNER and is always PROPOSED; a personal token logs your own time, CONFIRMED by default. | | [`workspaces`](#workspaces) | Manage workspaces | | [`goals`](#goals) | Manage goals (objectives) and their key results. Objectives have integer ids; key results are CUIDs. | | [`okrs`](#okrs) | OKRs — objectives with their key results nested. Manage the parts with `goals` and `goals kr`. | ## `auth` Authentication commands ### `auth login` Configure CLI with your API token ```bash exponential auth login [options] ``` | Option | Description | |---|---| | `--token ` | JWT token from /settings/api-keys | | `--api-url ` | API URL (e.g., https://www.exponential.im) | ### `auth logout` Remove stored credentials ```bash exponential auth logout [options] ``` ### `auth whoami` Show current authentication status ```bash exponential auth whoami [options] ``` ### `auth show` Print parts of the current credentials. Use --token to print the raw JWT (for piping into other tools, e.g. `gh secret set EXPONENTIAL_TOKEN ` | Filter by project ID | | `--status ` | Filter by kanban status (BACKLOG, TODO, IN_PROGRESS, IN_REVIEW, DONE) | | `--assignee ` | Filter by assignee ID | ### `actions today` What's on your plate: overdue, today, and inbox ```bash exponential actions today [options] ``` | Option | Description | |---|---| | `--workspace ` | Filter by workspace ID | | `--due-only` | Only actions whose dueDate is today (the pre-1.8 shape — excludes overdue) | ### `actions overdue` Why the overdue pile is that size: bulk-created cohorts vs real debt ```bash exponential actions overdue [options] ``` | Option | Description | |---|---| | `--workspace ` | Filter by workspace ID | ### `actions defer` Amnesty: clear dates so actions fall back to their project backlog untimed ```bash exponential actions defer [options] ``` | Option | Description | |---|---| | `--ids ` | Comma-separated action IDs | ### `actions reschedule` Move actions to a new do-date (use "actions defer" if they were never really due) ```bash exponential actions reschedule [options] ``` | Option | Description | |---|---| | `--ids ` | Comma-separated action IDs | | `--to ` | New do-date (YYYY-MM-DD, or "today") | ### `actions range` Get actions by date range ```bash exponential actions range [options] ``` | Option | Description | |---|---| | `--start ` | Start date (YYYY-MM-DD) | | `--end ` | End date (YYYY-MM-DD) | | `--workspace ` | Filter by workspace ID | ### `actions kanban` Get kanban board actions ```bash exponential actions kanban [options] ``` | Option | Description | |---|---| | `--project ` | Filter by project ID | | `--status ` | Filter by kanban status | | `--assignee ` | Filter by assignee ID | ### `actions update` Update an existing action ```bash exponential actions update [options] ``` | Option | Description | |---|---| | `--id ` | Action ID to update | | `-n, --name ` | New action name | | `-d, --description ` | New description | | `-p, --project ` | Move to project ID | | `--priority ` | Priority (Quick, Scheduled, 1st Priority, etc.) | | `--status ` | Status (ACTIVE, COMPLETED, CANCELLED) | | `--kanban ` | Kanban status (BACKLOG, TODO, IN_PROGRESS, IN_REVIEW, DONE) | | `--due ` | Due date (YYYY-MM-DD or "null" to clear) | | `--scheduled-start ` | Do-date: when you plan to work on it (YYYY-MM-DD, ISO datetime, or "null" to clear). This is what /today partitions on. | | `--scheduled-end ` | End of the time block (YYYY-MM-DD, ISO datetime, or "null" to clear) | ### `actions create` Create a new action ```bash exponential actions create [options] ``` | Option | Description | |---|---| | `-n, --name ` | Action name/title | | `-d, --description ` | Action description | | `-p, --project ` | Project ID to assign the action to | | `--priority ` | Priority (Quick, Scheduled, 1st Priority, etc.) | | `--due ` | Due date (YYYY-MM-DD) | | `--effort ` | Effort estimate in minutes | | `--ticket ` | Link action to a product ticket (CUID) after creation | | `--epic ` | Epic CUID to attach the action to | ### `actions upsert` One Action per external source: find by (--workspace, --source-type, --source-id), refresh its title and links, else create it. The Daily worklog uses --source-type claude-session --source-id . ```bash exponential actions upsert [options] ``` | Option | Description | |---|---| | `--source-type ` | e.g. claude-session | | `--source-id ` | The source's own id; the same pair always maps to the same Action | | `-t, --title ` | Action title (refreshed on every call) | | `-w, --workspace ` | Workspace (defaults to your default workspace) | | `-d, --description ` | Description | | `--project ` | Link to a project CUID in the same workspace | | `--ticket ` | Link to a ticket CUID whose product is in the same workspace | ### `actions comment` Manage comments on an action ### `actions comment list` List comments on an action ```bash exponential actions comment list [options] ``` | Option | Description | |---|---| | `--id ` | Action ID | ### `actions comment add` Add a comment to an action ```bash exponential actions comment add [options] ``` | Option | Description | |---|---| | `--id ` | Action ID | | `-m, --message ` | Comment content (markdown supported) | ### `actions comment update` Update one of your own comments ```bash exponential actions comment update [options] ``` | Option | Description | |---|---| | `--comment-id ` | Comment ID | | `-m, --message ` | New comment content | ### `actions comment delete` Delete one of your own comments ```bash exponential actions comment delete [options] ``` | Option | Description | |---|---| | `--comment-id ` | Comment ID | ## `contacts` Manage CRM contacts ### `contacts list` List contacts ```bash exponential contacts list [options] ``` | Option | Description | |---|---| | `--workspace ` | Workspace ID | | `--search ` | Search by name or email | | `--tags ` | Filter by tags (comma-separated) | | `--organization ` | Filter by organization ID | | `--limit ` | Max results to return | | `--cursor ` | Pagination cursor | ### `contacts get` Get a contact by ID ```bash exponential contacts get [options] ``` | Argument | Required | Description | |---|---|---| | `id` | yes | Contact ID | | Option | Description | |---|---| | `--interactions` | Include interaction history | ### `contacts create` Create a new contact ```bash exponential contacts create [options] ``` | Option | Description | |---|---| | `--workspace ` | Workspace ID | | `--first-name ` | First name | | `--last-name ` | Last name | | `--email ` | Email address | | `--phone ` | Phone number | | `--linkedin ` | LinkedIn URL | | `--telegram ` | Telegram handle | | `--twitter ` | Twitter/X handle | | `--github ` | GitHub username | | `--bluesky ` | Bluesky handle | | `--about ` | About / bio | | `--profile-type ` | Profile type | | `--skills ` | Skills (comma-separated) | | `--tags ` | Tags (comma-separated) | | `--organization ` | Organization ID | | `--organization-name ` | Organization name (find-or-create; ignored if --organization is set) | ### `contacts update` Update an existing contact ```bash exponential contacts update [options] ``` | Option | Description | |---|---| | `--id ` | Contact ID | | `--first-name ` | First name | | `--last-name ` | Last name | | `--email ` | Email (use "null" to clear) | | `--phone ` | Phone (use "null" to clear) | | `--linkedin ` | LinkedIn URL (use "null" to clear) | | `--telegram ` | Telegram handle (use "null" to clear) | | `--twitter ` | Twitter/X handle (use "null" to clear) | | `--github ` | GitHub username (use "null" to clear) | | `--bluesky ` | Bluesky handle (use "null" to clear) | | `--about ` | About / bio | | `--profile-type ` | Profile type | | `--skills ` | Skills (comma-separated) | | `--tags ` | Tags (comma-separated) | | `--organization ` | Organization ID (use "null" to clear) | | `--organization-name ` | Organization name (find-or-create; ignored if --organization is set) | ### `contacts delete` Delete a contact ```bash exponential contacts delete [options] ``` | Argument | Required | Description | |---|---|---| | `id` | yes | Contact ID | ### `contacts add-interaction` Add an interaction to a contact ```bash exponential contacts add-interaction [options] ``` | Option | Description | |---|---| | `--contact ` | Contact ID | | `--type ` | Interaction type (EMAIL, TELEGRAM, PHONE_CALL, MEETING, NOTE, LINKEDIN, OTHER) | | `--direction ` | Direction (INBOUND, OUTBOUND) | | `--subject ` | Subject line | | `--notes ` | Notes | ### `contacts enrich` Queue a web-search enrichment job for an existing contact (runs regardless of the workspace auto-enrich setting) ```bash exponential contacts enrich [options] ``` | Argument | Required | Description | |---|---|---| | `id` | yes | Contact ID | ## `decisions` Log and manage decisions and open questions (the workspace Decision Log). An OPEN QUESTION is a decision with --status OPEN — there is no separate model, and that is exactly what a meeting's "Open questions" panel shows. Statuses: OPEN (an open question) · PROPOSED · ACCEPTED · SUPERSEDED · DEPRECATED. SUPERSEDED and DEPRECATED are reached with "decisions status", never at creation. ### `decisions list` List decisions, newest decided first. Pass --status OPEN for open questions only. An OPEN QUESTION is a decision with --status OPEN — there is no separate model, and that is exactly what a meeting's "Open questions" panel shows. ```bash exponential decisions list [options] ``` | Option | Description | |---|---| | `--workspace ` | Workspace (defaults to your default workspace) | | `--meeting ` | One meeting's decisions and open questions (includes drafts if you can edit it) | | `--status ` | Filter by status (repeatable): OPEN, PROPOSED, ACCEPTED, SUPERSEDED, DEPRECATED | | `--source ` | Filter by source (repeatable): MEETING, MANUAL, AGENT | | `--product ` | Filter by product, or "workspace" for decisions with no product | | `--include-workspace-wide` | With --product: also include decisions that have no product | | `--project ` | Filter by project CUID | | `--search ` | Free-text over statement and body | | `--number ` | One decision by its workspace sequence number (D-0003 is 3) | | `--limit ` | Cap the rows returned (1-500) | | `--adr ` | Decisions formalised as this ADR document | ### `decisions get` Show one decision in full: body, evidence, deciders, chain and links ```bash exponential decisions get [options] ``` | Argument | Required | Description | |---|---|---| | `id` | yes | | | Option | Description | |---|---| | `--workspace ` | Workspace (defaults to your default workspace) | ### `decisions create` Log a decision, or an open question with --status OPEN. An OPEN QUESTION is a decision with --status OPEN — there is no separate model, and that is exactly what a meeting's "Open questions" panel shows. Bodies are Markdown: use --body-file (or - for stdin) rather than a shell argument. Bulk: --from-file takes a JSON array of decisions; the other flags become its defaults. ```bash exponential decisions create [options] ``` | Option | Description | |---|---| | `-s, --statement ` | The decision, or the open question (max 500 chars) | | `-b, --body ` | Markdown detail: context, alternatives, consequences | | `--body-file ` | Read the body from a file ("-" = stdin) | | `--status ` | OPEN (open question), PROPOSED (default) or ACCEPTED | | `--source ` | MEETING, MANUAL or AGENT | | `--meeting ` | Meeting (transcriptionSessionId) this came out of — needs edit access to it | | `--workspace ` | Workspace (defaults to your default workspace) | | `--product ` | Link to a product | | `--project ` | Link to a project CUID | | `--goal ` | Link to a goal (integer id) | | `--key-result ` | Link to a key result CUID | | `--occurrence ` | Link to a ceremony occurrence CUID | | `--decided-at ` | When it was decided (e.g. 2026-09-10T14:00) | | `--owner ` | Owner user ID | | `--decider ">` | Someone who made the decision (repeatable); external people need no account | | `--evidence-file ` | JSON array of {turnIndex, text} transcript quotes ("-" = stdin). Needs --meeting: the server checks every quote against that transcript and silently drops the ones that do not match. | | `--from-file ` | Bulk create from a JSON array of decisions ("-" = stdin) | ### `decisions update` Update a decision's content and scope; only the fields you pass are written. Status changes go through "decisions status". ```bash exponential decisions update [options] ``` | Option | Description | |---|---| | `--id ` | Decision CUID | | `--workspace ` | Workspace (defaults to your default workspace) | | `-s, --statement ` | New statement | | `-b, --body ` | New Markdown body (or "null" to clear) | | `--body-file ` | Read the new body from a file ("-" = stdin) | | `--decided-at ` | When it was decided (or "null" to clear) | | `--owner ` | Owner user ID (or "null" to clear) | | `--product ` | Product (or "null" to detach) | | `--project ` | Project CUID (or "null" to detach) | | `--goal ` | Goal integer id (or "null" to detach) | | `--key-result ` | Key result CUID (or "null" to detach) | | `--adr ` | ADR document CUID (or "null" to detach) | ### `decisions status` Move a decision through its lifecycle — including answering an open question by moving it from OPEN to ACCEPTED. ```bash exponential decisions status [options] ``` | Option | Description | |---|---| | `--id ` | Decision CUID | | `--status ` | OPEN, PROPOSED, ACCEPTED, SUPERSEDED or DEPRECATED | | `--superseded-by ` | The decision that replaced this one (with --status SUPERSEDED) | | `--workspace ` | Workspace (defaults to your default workspace) | ### `decisions link` Record what implements a decision: a ticket or a feature. Idempotent. ```bash exponential decisions link [options] ``` | Option | Description | |---|---| | `--id ` | Decision CUID | | `--ticket ` | Ticket CUID | | `--feature ` | Feature CUID | | `--workspace ` | Workspace (defaults to your default workspace) | ### `decisions unlink` Remove one "implemented by" link. Takes the LINK id (shown by "decisions get"), not the ticket or feature id. ```bash exponential decisions unlink [options] ``` | Option | Description | |---|---| | `--link ` | DecisionLink CUID | | `--workspace ` | Workspace (defaults to your default workspace) | ### `decisions draft` Review decisions an agent proposed but nobody has confirmed yet (visible only on their source meeting) ### `decisions draft extract` Propose draft decisions from a meeting's notes and transcript, for someone to confirm. Idempotent: existing drafts are returned rather than regenerated, and a meeting that already has confirmed decisions is left alone. ```bash exponential decisions draft extract [options] ``` | Option | Description | |---|---| | `--meeting ` | Meeting CUID (transcriptionSessionId) | ### `decisions draft confirm` Publish a draft decision into the log ```bash exponential decisions draft confirm [options] ``` | Option | Description | |---|---| | `--id ` | Decision CUID | | `--workspace ` | Workspace (defaults to your default workspace) | ### `decisions draft reject` Reject a draft. A confirmed decision is never rejected — deprecate or supersede it with "decisions status". ```bash exponential decisions draft reject [options] ``` | Option | Description | |---|---| | `--id ` | Decision CUID | | `--workspace ` | Workspace (defaults to your default workspace) | ### `decisions draft delete` Permanently delete a draft or rejected decision. Confirmed decisions are never deleted. ```bash exponential decisions draft delete [options] ``` | Option | Description | |---|---| | `--id ` | Decision CUID | | `--workspace ` | Workspace (defaults to your default workspace) | ## `deals` Manage pipeline deals ### `deals pipeline` Get pipeline overview with stages ```bash exponential deals pipeline [options] ``` | Option | Description | |---|---| | `--workspace ` | Workspace ID | ### `deals stages` List pipeline stages ```bash exponential deals stages [options] ``` | Option | Description | |---|---| | `--workspace ` | Workspace ID | ### `deals list` List all deals ```bash exponential deals list [options] ``` | Option | Description | |---|---| | `--workspace ` | Workspace ID | ### `deals get` Get a deal by ID ```bash exponential deals get [options] ``` | Argument | Required | Description | |---|---|---| | `id` | yes | Deal ID | ### `deals create` Create a new deal ```bash exponential deals create [options] ``` | Option | Description | |---|---| | `--workspace ` | Workspace ID | | `--stage ` | Pipeline stage ID | | `--title ` | Deal title | | `--description ` | Deal description | | `--value ` | Deal value | | `--currency ` | Currency code (default: USD) | | `--probability ` | Win probability (0-100) | | `--close-date ` | Expected close date (YYYY-MM-DD) | | `--contact ` | Contact ID | | `--organization ` | Organization ID | | `--assigned-to ` | Assigned user ID | ### `deals update` Update an existing deal ```bash exponential deals update [options] ``` | Option | Description | |---|---| | `--id ` | Deal ID | | `--title ` | Deal title | | `--description ` | Description (use "null" to clear) | | `--value ` | Deal value (use "null" to clear) | | `--currency ` | Currency code | | `--probability ` | Win probability (use "null" to clear) | | `--close-date ` | Expected close date (YYYY-MM-DD or "null" to clear) | | `--contact ` | Contact ID (use "null" to clear) | | `--organization ` | Organization ID (use "null" to clear) | | `--assigned-to ` | Assigned user ID (use "null" to clear) | ### `deals move` Move a deal to a different stage ```bash exponential deals move [options] ``` | Option | Description | |---|---| | `--id ` | Deal ID | | `--stage ` | Target stage ID | | `--order ` | Position within stage (default: `0`) | ### `deals delete` Delete a deal ```bash exponential deals delete [options] ``` | Argument | Required | Description | |---|---|---| | `id` | yes | Deal ID | ## `epics` Manage epics. Epics are workspace-scoped and group actions and tickets across products. ### `epics list` List epics in a workspace ```bash exponential epics list [options] ``` | Option | Description | |---|---| | `--workspace ` | Workspace slug or CUID | | `--status ` | Filter by status: OPEN, IN_PROGRESS, DONE, CANCELLED | ### `epics get` Get an epic by CUID ```bash exponential epics get [options] ``` | Argument | Required | Description | |---|---|---| | `id` | yes | | ### `epics create` Create a new epic in a workspace ```bash exponential epics create [options] ``` | Option | Description | |---|---| | `-n, --name ` | Epic name | | `-d, --description ` | Description | | `--priority ` | Priority: HIGH, MEDIUM, LOW, NONE | | `--start ` | Start date (YYYY-MM-DD) | | `--target ` | Target date (YYYY-MM-DD) | | `--workspace ` | Workspace slug or CUID | ### `epics update` Update an existing epic ```bash exponential epics update [options] ``` | Option | Description | |---|---| | `--id ` | Epic CUID | | `-n, --name ` | New name | | `-d, --description ` | New description (or "null" to clear) | | `--status ` | Status: OPEN, IN_PROGRESS, DONE, CANCELLED | | `--priority ` | Priority: HIGH, MEDIUM, LOW, NONE | | `--start ` | Start date (YYYY-MM-DD or "null") | | `--target ` | Target date (YYYY-MM-DD or "null") | ## `features` Manage features. A feature lives under a product and groups user stories, scopes, and tickets. ### `features list` List features in a product ```bash exponential features list [options] ``` | Option | Description | |---|---| | `--product ` | Product slug or CUID | | `--workspace ` | Workspace (required when --product is a slug) | | `--status ` | Filter by status: IDEA, DEFINED, IN_PROGRESS, SHIPPED, DEPRECATED, ARCHIVED | ### `features get` Get a feature by CUID ```bash exponential features get [options] ``` | Argument | Required | Description | |---|---|---| | `id` | yes | | ### `features create` Create a new feature in a product ```bash exponential features create [options] ``` | Option | Description | |---|---| | `--product ` | Product slug or CUID | | `-n, --name ` | Feature name | | `-d, --description ` | Description (markdown supported) | | `--vision ` | Vision / target outcome | | `--status ` | Status: IDEA, DEFINED, IN_PROGRESS, SHIPPED, DEPRECATED, ARCHIVED | | `--priority ` | Priority 0-4 (lower = higher) | | `--effort ` | Effort estimate | | `--area ` | Area CUID (per-product bucket) to file the feature under | | `--workspace ` | Workspace (required when --product is a slug) | ### `features update` Update an existing feature ```bash exponential features update [options] ``` | Option | Description | |---|---| | `--id ` | Feature CUID | | `-n, --name ` | New name | | `-d, --description ` | New description | | `--vision ` | New vision text | | `--status ` | Status: IDEA, DEFINED, IN_PROGRESS, SHIPPED, DEPRECATED, ARCHIVED | | `--priority ` | Priority 0-4 | | `--effort ` | Effort estimate | | `--area ` | Area CUID ("none" to clear) | | `--goal ` | Objective (goal) id this feature serves ("none" to clear). For progress rollup, link the finer Feature→key-result edge with `goals kr link --feature`. | ### `features delete` Delete a feature. Refuses if it still has tickets — deleting a feature does not delete its tickets, it unlinks them (Ticket.featureId is SetNull), silently orphaning them in the product backlog. ```bash exponential features delete [options] ``` | Argument | Required | Description | |---|---|---| | `id` | yes | | | Option | Description | |---|---| | `--with-tickets` | Delete the feature's tickets first, then the feature (destructive) | | `--orphan-tickets` | Delete the feature anyway, leaving its tickets in the backlog unlinked | ### `features link-page` Link a Knowledge page (PRD, spec, research) to a feature ```bash exponential features link-page [options] ``` | Option | Description | |---|---| | `--feature ` | Feature CUID | | `--page ` | Page CUID | | `--scope ` | Feature scope CUID to pin the page to | ### `features unlink-page` Unlink a Knowledge page from a feature ```bash exponential features unlink-page [options] ``` | Option | Description | |---|---| | `--feature ` | Feature CUID | | `--page ` | Page CUID | ### `features stories` Manage a feature's native, structured user stories (As a / I want / So that). ### `features stories add` Add user stories to a feature. Flag mode: pass --as-a/--i-want/--so-that (plus optional --acceptance/--scope) to add one story. Batch mode: pipe a JSON array of { asA?, iWant?, soThat?, acceptanceCriteria?, scopeId? } on stdin to add many at once (per-item success/failure is reported). ```bash exponential features stories add [options] ``` | Option | Description | |---|---| | `--feature ` | Feature CUID | | `--as-a ` | "As a ..." actor | | `--i-want ` | "I want ..." capability | | `--so-that ` | "So that ..." outcome | | `--acceptance ` | Acceptance criteria | | `--scope ` | Feature scope CUID to group the story under | ### `features stories list` List a feature's user stories in display order ```bash exponential features stories list [options] ``` | Option | Description | |---|---| | `--feature ` | Feature CUID | ### `features scopes` Manage a feature's scopes: shippable increments ("V1", "V2"), each with its own lifecycle. ### `features scopes list` List a feature's scopes ```bash exponential features scopes list [options] ``` | Option | Description | |---|---| | `--feature ` | Feature CUID | ### `features scopes add` Add a scope to a feature ```bash exponential features scopes add [options] ``` | Option | Description | |---|---| | `--feature ` | Feature CUID | | `--version ` | Short label for the increment, e.g. "V1" | | `-d, --description ` | What this scope delivers (markdown supported) | | `--status ` | Status: PLANNED, IN_PROGRESS, SHIPPED, DEPRECATED (default PLANNED) | ### `features scopes update` Update a scope (setting SHIPPED stamps shippedAt and rolls the feature status up) ```bash exponential features scopes update [options] ``` | Option | Description | |---|---| | `--id ` | Scope CUID | | `--version ` | New version label | | `-d, --description ` | New description | | `--status ` | Status: PLANNED, IN_PROGRESS, SHIPPED, DEPRECATED | ### `features scopes rm` Delete a scope ```bash exponential features scopes rm [options] ``` | Option | Description | |---|---| | `--id ` | Scope CUID | ### `features requirements` Manage a feature's requirements: atomic, testable EARS-style "shall" statements, checkable met/unmet. ### `features requirements add` Add requirements to a feature. Flag mode: pass -s/--statement (plus optional --kind/--scope) to add one requirement. Batch mode: pipe a JSON array of { statement, kind?, scopeId? } on stdin to add many at once (per-item success/failure is reported). ```bash exponential features requirements add [options] ``` | Option | Description | |---|---| | `--feature ` | Feature CUID | | `-s, --statement ` | One EARS-style "shall" statement | | `--kind ` | Kind: FUNCTIONAL, NON_FUNCTIONAL, CONSTRAINT | | `--scope ` | Feature scope CUID to pin the requirement to | ### `features requirements list` List a feature's requirements ```bash exponential features requirements list [options] ``` | Option | Description | |---|---| | `--feature ` | Feature CUID | | `--scope ` | Only requirements pinned to this scope | ### `features requirements check` Mark a requirement met (or unmet with --unmet) ```bash exponential features requirements check [options] ``` | Option | Description | |---|---| | `--id ` | Requirement CUID | | `--unmet` | Mark unmet instead of met | ### `features requirements rm` Delete a requirement ```bash exponential features requirements rm [options] ``` | Option | Description | |---|---| | `--id ` | Requirement CUID | ### `features areas` Manage a product's areas: the buckets features are filed under (a feature has exactly one or none). ### `features areas list` List a product's areas ```bash exponential features areas list [options] ``` | Option | Description | |---|---| | `--product ` | Product slug or CUID | | `--workspace ` | Workspace (required when --product is a slug) | ### `features areas create` Create an area in a product ```bash exponential features areas create [options] ``` | Option | Description | |---|---| | `--product ` | Product slug or CUID | | `-n, --name ` | Area name (unique per product) | | `-d, --description ` | What belongs in this area | | `--workspace ` | Workspace (required when --product is a slug) | ### `features comment` Read and post comments on a feature. Mention teammates with --mention. ### `features comment list` List comments on a feature ```bash exponential features comment list [options] ``` | Option | Description | |---|---| | `--feature ` | Feature ID | ### `features comment add` Add a comment to a feature ```bash exponential features comment add [options] ``` | Option | Description | |---|---| | `--feature ` | Feature ID | | `-m, --message ` | Comment body (markdown supported) | | `--mention ` | Mention a workspace member by name, email, or id (repeatable). Writing @name in the message substitutes in place; otherwise the mention is prepended. | | `--workspace ` | Workspace used to resolve --mention (defaults to your default workspace) | | `--scope ` | Attach to a scope's activity feed instead of the feature | ### `features comment reply` Reply to a comment on a feature ```bash exponential features comment reply [options] ``` | Option | Description | |---|---| | `--comment-id ` | Comment ID to reply to | | `-m, --message ` | Reply body (markdown supported) | | `--mention ` | Mention a workspace member by name, email, or id (repeatable). Writing @name in the message substitutes in place; otherwise the mention is prepended. | | `--workspace ` | Workspace used to resolve --mention (defaults to your default workspace) | ### `features comment update` Update one of your own comments ```bash exponential features comment update [options] ``` | Option | Description | |---|---| | `--comment-id ` | Comment ID | | `-m, --message ` | New comment body | | `--mention ` | Mention a workspace member by name, email, or id (repeatable). Writing @name in the message substitutes in place; otherwise the mention is prepended. | | `--workspace ` | Workspace used to resolve --mention (defaults to your default workspace) | ### `features comment rm` Delete one of your own comments ```bash exponential features comment rm [options] ``` | Option | Description | |---|---| | `--comment-id ` | Comment ID | ### `features comment resolve` Resolve an anchored comment thread ```bash exponential features comment resolve [options] ``` | Option | Description | |---|---| | `--feature ` | Feature ID | | `--thread ` | Thread ID (anchored comments only) | ### `features comment unresolve` Reopen a resolved comment thread ```bash exponential features comment unresolve [options] ``` | Option | Description | |---|---| | `--feature ` | Feature ID | | `--thread ` | Thread ID (anchored comments only) | ## `labels` Manage labels (orthogonal tags applied to actions, tickets, features, and epics). ### `labels list` List labels visible in a workspace ```bash exponential labels list [options] ``` | Option | Description | |---|---| | `--workspace ` | Workspace slug or CUID | | `--category ` | Filter by category. Use "label" for general labels, "null" for category-less labels, or omit to list all. | ### `labels create` Create a workspace-scoped label ```bash exponential labels create [options] ``` | Option | Description | |---|---| | `-n, --name ` | Label name | | `--color ` | Color token (e.g. avatar-green, brand-primary) | | `-d, --description ` | Description | | `--category ` | Category. Omit (or pass "null") to create a general label. | | `--workspace ` | Workspace slug or CUID | ### `labels seed-triage` Idempotently seed the five canonical triage labels into a workspace. ```bash exponential labels seed-triage [options] ``` | Option | Description | |---|---| | `--workspace ` | Workspace slug or CUID | ## `meetings` Manage meetings and their notes (recorded, imported, or manually created) ### `meetings list` List meetings you can see (owned, attended, or shared via project/workspace). JSON rows carry hasNotes/hasSummary/hasTranscript flags instead of the bodies — use "get" for content. ```bash exponential meetings list [options] ``` | Option | Description | |---|---| | `--workspace ` | Restrict to one workspace | | `--mine` | Only meetings you own or attended | | `--archived` | Include archived meetings | ### `meetings get` Get a meeting: details, summary, and notes ```bash exponential meetings get [options] ``` | Argument | Required | Description | |---|---|---| | `id` | yes | | | Option | Description | |---|---| | `--transcript` | Also print the raw transcript (pretty mode; JSON always includes it) | ### `meetings create` Create a meeting manually. Transcript: --transcript text, --transcript-file , or --transcript-file - for stdin. ```bash exponential meetings create [options] ``` | Option | Description | |---|---| | `-t, --title ` | Meeting title | | `--transcript ` | Transcript text (required by the API) | | `--transcript-file ` | Read the transcript from a file ("-" = stdin) | | `--notes ` | Meeting notes | | `--notes-file ` | Read the notes from a file ("-" = stdin) | | `--description ` | Short description | | `--date ` | When the meeting occurred (e.g. 2026-08-25T14:00; a bare date is local midnight) | | `--project ` | Link to a project (the meeting inherits its workspace) | | `--workspace ` | Workspace (omit for a personal meeting) | ### `meetings update` Update a meeting; only the fields you pass are written. Title and other fields are two API calls — on a mid-flight failure the title may already be saved. ```bash exponential meetings update [options] ``` | Option | Description | |---|---| | `--id ` | Meeting CUID | | `-t, --title ` | New title | | `--notes ` | Replace the meeting notes | | `--notes-file ` | Read the new notes from a file ("-" = stdin) | | `--summary ` | Replace the summary | | `--description ` | Replace the description | | `--date ` | When the meeting occurred | ### `meetings delete` Permanently delete meetings you own. Pass one or more ids, and/or --ids-file with whitespace-separated ids ("-" = stdin). Deleting more than one id requires --force. Exit 0 only when everything requested was deleted. ```bash exponential meetings delete [options] [ids...] ``` | Argument | Required | Description | |---|---|---| | `ids` | no | | | Option | Description | |---|---| | `--ids-file ` | Read whitespace-separated meeting ids from a file ("-" = stdin) | | `--force` | Confirm deleting more than one meeting in a single call | ### `meetings notes` Read and write a meeting's notes ### `meetings notes get` Print the meeting notes as raw Markdown (safe to redirect to a file); pass --json for a {id, notes} envelope ```bash exponential meetings notes get [options] ``` | Argument | Required | Description | |---|---|---| | `id` | yes | | ### `meetings notes set` Replace the meeting notes. Body: inline, --file , or --file - for stdin. ```bash exponential meetings notes set [options] [notes] ``` | Argument | Required | Description | |---|---|---| | `id` | yes | | | `notes` | no | | | Option | Description | |---|---| | `--file ` | Read the notes from a file ("-" = stdin) | ### `meetings notes append` Append a block to the meeting notes (separated by a blank line). Read-modify-write: concurrent appends can lose one side. ```bash exponential meetings notes append [options] [notes] ``` | Argument | Required | Description | |---|---|---| | `id` | yes | | | `notes` | no | | | Option | Description | |---|---| | `--file ` | Read the block from a file ("-" = stdin) | ## `organizations` Alias: `orgs` Manage CRM organizations ### `organizations list` List organizations ```bash exponential organizations list [options] ``` | Option | Description | |---|---| | `--workspace ` | Workspace ID | | `--search ` | Search by name or description | | `--industry ` | Filter by industry | | `--limit ` | Max results to return | | `--cursor ` | Pagination cursor | ### `organizations get` Get an organization by ID ```bash exponential organizations get [options] ``` | Argument | Required | Description | |---|---|---| | `id` | yes | Organization ID | ### `organizations create` Create a new organization ```bash exponential organizations create [options] ``` | Option | Description | |---|---| | `--workspace ` | Workspace ID | | `--name ` | Organization name | | `--website-url ` | Website URL | | `--logo-url ` | Logo URL | | `--description ` | Description | | `--industry ` | Industry | | `--size ` | Company size (1-10, 11-50, 51-200, 201-500, 501-1000, 1000+) | ## `pages` Manage Knowledge pages (PRDs, research, technical specs). Link one to a feature with "features link-page". ### `pages list` List pages in a workspace ```bash exponential pages list [options] ``` | Option | Description | |---|---| | `--workspace ` | Workspace (defaults to the configured default) | | `--search ` | Filter by title/content | ### `pages get` Get a page by CUID (body is Markdown) ```bash exponential pages get [options] ``` | Argument | Required | Description | |---|---|---| | `id` | yes | | ### `pages create` Create a page. Body: -b text, --body-file , or --body-file - for stdin. ```bash exponential pages create [options] ``` | Option | Description | |---|---| | `--workspace ` | Workspace (defaults to the configured default) | | `-t, --title ` | Page title | | `-b, --body ` | Markdown body | | `--body-file ` | Read the Markdown body from a file ("-" = stdin) | ### `pages update` Update a page. Sending a body is a Markdown-source write: the Markdown becomes canonical. ```bash exponential pages update [options] ``` | Option | Description | |---|---| | `--id ` | Page CUID | | `-t, --title ` | New title | | `-b, --body ` | New Markdown body (replaces the whole body) | | `--body-file ` | Read the new Markdown body from a file ("-" = stdin) | ### `pages comment` Read and post comments on a page. Mention teammates with --mention. ### `pages comment list` List comments on a page ```bash exponential pages comment list [options] ``` | Option | Description | |---|---| | `--page ` | Page ID | ### `pages comment add` Add a comment to a page ```bash exponential pages comment add [options] ``` | Option | Description | |---|---| | `--page ` | Page ID | | `-m, --message ` | Comment body (markdown supported) | | `--mention ` | Mention a workspace member by name, email, or id (repeatable). Writing @name in the message substitutes in place; otherwise the mention is prepended. | | `--workspace ` | Workspace used to resolve --mention (defaults to your default workspace) | ### `pages comment update` Update one of your own comments ```bash exponential pages comment update [options] ``` | Option | Description | |---|---| | `--comment-id ` | Comment ID | | `-m, --message ` | New comment body | | `--mention ` | Mention a workspace member by name, email, or id (repeatable). Writing @name in the message substitutes in place; otherwise the mention is prepended. | | `--workspace ` | Workspace used to resolve --mention (defaults to your default workspace) | ### `pages comment rm` Delete one of your own comments ```bash exponential pages comment rm [options] ``` | Option | Description | |---|---| | `--comment-id ` | Comment ID | ## `products` Manage products. A workspace contains products; a product holds features and tickets. ### `products list` List products in a workspace ```bash exponential products list [options] ``` | Option | Description | |---|---| | `--workspace ` | Workspace slug or CUID (defaults to configured workspace) | ### `products get` Get a product by slug or CUID ```bash exponential products get [options] ``` | Argument | Required | Description | |---|---|---| | `slugOrId` | yes | | | Option | Description | |---|---| | `--workspace ` | Workspace (required when using a slug) | ### `products create` Create a new product ```bash exponential products create [options] ``` | Option | Description | |---|---| | `-n, --name ` | Product name | | `--slug ` | Kebab-case slug (matches /^[a-z0-9-]+$/) | | `-d, --description ` | Description | | `--icon ` | Icon shortcode | | `--color ` | Color | | `--workspace ` | Workspace slug or CUID | ## `projects` Manage projects ### `projects list` List all projects ```bash exponential projects list [options] ``` | Option | Description | |---|---| | `--workspace ` | Workspace slug or CUID | | `--include-actions` | Include actions in output | ### `projects get` Get one project with its objectives, key results, DRI and actions — none of which `projects list` carries. Accepts a CUID, a slug, or the slug-cuid form from app URLs. ```bash exponential projects get [options] ``` | Argument | Required | Description | |---|---|---| | `id` | yes | | ### `projects update` Update a project. Only the fields you pass are written; the rest are read back from the project and re-sent unchanged. ```bash exponential projects update [options] ``` | Option | Description | |---|---| | `--id ` | Project CUID | | `-n, --name ` | New name | | `-d, --description ` | New description | | `--status ` | Status: ACTIVE, ON_HOLD, COMPLETED, CANCELLED | | `--priority ` | Priority: HIGH, MEDIUM, LOW, NONE | | `--product ` | Product to file the project under ("none" to unlink) | | `--dri ` | Directly responsible individual ("none" to clear) | ### `projects delete` Delete a project. Refuses while it still has actions or is linked to an objective or key result, unless --force. ```bash exponential projects delete [options] ``` | Option | Description | |---|---| | `--id ` | Project CUID | | `--force` | Delete anyway, taking the actions and links with it | ## `search` Global search across projects, actions, goals, workspaces and more — same coverage as the app's Cmd+K palette ```bash exponential search [options] ``` | Argument | Required | Description | |---|---|---| | `query` | yes | Text to search for | | Option | Description | |---|---| | `-w, --workspace ` | Restrict results to one workspace (slug or ID) | | `-l, --limit ` | Max results per entity type (1-25, default 10) | ## `tickets` Manage product backlog tickets. Tickets live under a product, link to features/epics, depend on each other, and can be implemented via actions. ### `tickets list` List tickets in a product, or workspace-wide when --pr or --branch is supplied ```bash exponential tickets list [options] ``` | Option | Description | |---|---| | `--product ` | Product slug or CUID (required unless --pr or --branch is supplied) | | `--workspace ` | Workspace (required when --product is a slug) | | `--status ` | Filter by status: BACKLOG, NEEDS_REFINEMENT, READY_TO_PLAN, COMMITTED, IN_PROGRESS, BLOCKED, QA, DONE, DEPLOYED, ARCHIVED | | `--type ` | Filter by type: BUG, FEATURE, CHORE, IMPROVEMENT, SPIKE, RESEARCH | | `--feature ` | Filter by feature CUID | | `--epic ` | Filter by epic CUID | | `--assignee ` | Filter by assignee user ID | | `--pr ` | Workspace-wide lookup by Ticket.prUrl (exact match). Makes --product optional. | | `--branch ` | Workspace-wide lookup by Ticket.branchName (exact match). Makes --product optional. | | `--label ` | Filter to tickets carrying this label (repeatable; AND semantics) | ### `tickets get` Show a ticket with dependencies, actions, and comments ```bash exponential tickets get [options] ``` | Argument | Required | Description | |---|---|---| | `id` | yes | | ### `tickets show` Alias for `tickets get` ```bash exponential tickets show [options] ``` | Argument | Required | Description | |---|---|---| | `id` | yes | | ### `tickets create` Create a new ticket in a product ```bash exponential tickets create [options] ``` | Option | Description | |---|---| | `--product ` | Product slug or CUID | | `-t, --title ` | Ticket title | | `-b, --body ` | Body (markdown supported) | | `--type ` | Ticket type: BUG, FEATURE, CHORE, IMPROVEMENT, SPIKE, RESEARCH | | `--status ` | Initial status: BACKLOG, NEEDS_REFINEMENT, READY_TO_PLAN, COMMITTED, IN_PROGRESS, BLOCKED, QA, DONE, DEPLOYED, ARCHIVED | | `--priority ` | Priority 0-4 (lower = higher) | | `--points ` | Story points | | `--feature ` | Feature CUID to attach to | | `--scope ` | Feature scope CUID to attach to (requires --feature) | | `--epic ` | Epic CUID to attach to | | `--cycle ` | Cycle CUID to assign to | | `--assignee ` | Assignee user ID | | `--branch ` | Branch name | | `--pr ` | Pull request URL | | `--workspace ` | Workspace (required when --product is a slug) | | `--label ` | Label to attach (repeatable) | ### `tickets update` Update an existing ticket ```bash exponential tickets update [options] ``` | Option | Description | |---|---| | `--id ` | Ticket CUID | | `-t, --title ` | New title | | `-b, --body ` | New body | | `--type ` | Type: BUG, FEATURE, CHORE, IMPROVEMENT, SPIKE, RESEARCH | | `--status ` | Status: BACKLOG, NEEDS_REFINEMENT, READY_TO_PLAN, COMMITTED, IN_PROGRESS, BLOCKED, QA, DONE, DEPLOYED, ARCHIVED | | `--priority ` | Priority 0-4 (or "null" to clear) | | `--points ` | Story points (or "null" to clear) | | `--feature ` | Feature CUID (or "null" to detach) | | `--epic ` | Epic CUID (or "null" to detach) | | `--cycle ` | Cycle CUID (or "null" to detach) | | `--assignee ` | Assignee user ID (or "null" to unassign) | | `--branch ` | Branch name (or "null") | | `--pr ` | PR URL (or "null") | | `--add-label ` | Label to attach to this ticket (repeatable) | | `--remove-label ` | Label to detach from this ticket (repeatable) | ### `tickets delete` Delete a ticket ```bash exponential tickets delete [options] ``` | Argument | Required | Description | |---|---|---| | `id` | yes | | ### `tickets block` Mark as blocked by another ticket ```bash exponential tickets block [options] ``` | Argument | Required | Description | |---|---|---| | `ticket` | yes | | | Option | Description | |---|---| | `--by ` | Ticket CUID that must complete first | ### `tickets unblock` Remove a blocking dependency from ```bash exponential tickets unblock [options] ``` | Argument | Required | Description | |---|---|---| | `ticket` | yes | | | Option | Description | |---|---| | `--by ` | The ticket CUID that was blocking | ### `tickets link-action` Attach an existing action to a ticket ```bash exponential tickets link-action [options] ``` | Option | Description | |---|---| | `--id ` | Ticket CUID | | `--action ` | Action CUID | ### `tickets unlink-action` Detach an action from whatever ticket it is on ```bash exponential tickets unlink-action [options] ``` | Option | Description | |---|---| | `--action ` | Action CUID | ### `tickets comment` Manage comments on a ticket ### `tickets comment list` List comments on a ticket ```bash exponential tickets comment list [options] ``` | Option | Description | |---|---| | `--id ` | Ticket CUID | ### `tickets comment add` Add a comment to a ticket ```bash exponential tickets comment add [options] ``` | Option | Description | |---|---| | `--id ` | Ticket CUID | | `-m, --message ` | Comment content (markdown supported) | | `--mention ` | Mention a workspace member by name, email, or id (repeatable). Writing @name in the message substitutes in place; otherwise the mention is prepended. | | `--workspace ` | Workspace used to resolve --mention (defaults to your default workspace) | ### `tickets comment update` Update one of your own ticket comments ```bash exponential tickets comment update [options] ``` | Option | Description | |---|---| | `--comment-id ` | Comment ID | | `-m, --message ` | New comment content | | `--mention ` | Mention a workspace member by name, email, or id (repeatable). Writing @name in the message substitutes in place; otherwise the mention is prepended. | | `--workspace ` | Workspace used to resolve --mention (defaults to your default workspace) | ### `tickets comment delete` Delete one of your own ticket comments ```bash exponential tickets comment delete [options] ``` | Option | Description | |---|---| | `--comment-id ` | Comment ID | ## `time` Time entries — log the day's work and list it. Run with an external-agent key, the entry belongs to the agent's OWNER and is always PROPOSED; a personal token logs your own time, CONFIRMED by default. ### `time log` Log one completed entry with explicit bounds; the running Timer is never touched. With --ref the write is idempotent per owner: a re-run updates a PROPOSED entry and leaves a CONFIRMED one alone. Bulk: --from-file takes a JSON array of entries; the other flags become its defaults. Run with an external-agent key, the entry belongs to the agent's OWNER and is always PROPOSED; a personal token logs your own time, CONFIRMED by default. ```bash exponential time log [options] ``` | Option | Description | |---|---| | `-a, --action ` | Action CUID the time was spent on | | `--from ` | Start, e.g. 2026-09-11T09:22 | | `--to ` | End, e.g. 2026-09-11T10:30 | | `--source ` | manual, claude-desktop, agent-run (default: manual) | | `--status ` | PROPOSED or CONFIRMED (ignored under an agent key: always PROPOSED) | | `--ref ` | Idempotency key, e.g. claude-session:# | | `--note ` | One line shown in the day view and list row | | `--from-file ` | Bulk log from a JSON array of entries ("-" = stdin) | ### `time list` One day's entries for the signed-in user, oldest first, each with its PROPOSED/CONFIRMED status ```bash exponential time list [options] ``` | Option | Description | |---|---| | `-d, --date ` | The day (local time) | | `-w, --workspace ` | Only entries in this workspace (default: all) | | `--proposed` | Only PROPOSED entries | ### `time confirm` Confirm a day: every PROPOSED entry of yours that starts that day becomes CONFIRMED and the Actions' spent time moves. Human only — run it with your personal credentials; an agent key is refused. ```bash exponential time confirm [options] ``` | Option | Description | |---|---| | `-d, --date ` | The day (local time) | | `-w, --workspace ` | Only entries in this workspace (default: all) | ### `time report` One day's report — the numbers the /time Day tab shows: attention hours (each covered minute once), session hours (the plain sum), agent-run time on its own, hours by Product and by Action with overlapping minutes split evenly, and the unassigned and proposed counts. JSON when piped or with --json. ```bash exponential time report [options] ``` | Option | Description | |---|---| | `-d, --date ` | The day (local time) | | `-w, --workspace ` | Only entries in this workspace (default: all) | ### `time segment` Cut one conversation's messages into Worklog segments and print the batch `time log --from-file -` consumes. Input: a JSON array of {at, role} (role user|assistant), or {"messages": [...]}. A gap over 30 minutes between the person's messages ends a segment; bounds round outward to 5 minutes; assistant-only runs longer than the gap become agent-run entries. ```bash exponential time segment [options] ``` | Option | Description | |---|---| | `--from-file ` | Messages JSON ("-" = stdin) | | `-a, --action ` | Action CUID every entry is logged on | | `--ref-prefix ` | sourceRef prefix, e.g. claude-session:; segments get #0, #1, … | | `--gap ` | Silence between the person's messages that ends a segment (default: `"30"`) | | `--note ` | Note copied onto every entry | ## `workspaces` Manage workspaces ### `workspaces list` List all workspaces ```bash exponential workspaces list [options] ``` ### `workspaces set-default` Set the default workspace ```bash exponential workspaces set-default [options] ``` | Argument | Required | Description | |---|---|---| | `slug` | yes | | ### `workspaces members` List workspace members. Each row carries the exact @[Name] (id) markup to paste into a comment to mention that person. ```bash exponential workspaces members [options] ``` | Option | Description | |---|---| | `--workspace ` | Workspace (defaults to your default workspace) | | `--search ` | Filter by name or email | ## `goals` Manage goals (objectives) and their key results. Objectives have integer ids; key results are CUIDs. ### `goals list` List objectives, each with the projects linked to it — the join that ties an action (which carries a projectId) back to a goal. ```bash exponential goals list [options] ``` | Option | Description | |---|---| | `-w, --workspace ` | Workspace slug or ID (defaults to your default workspace) | | `--all-workspaces` | List across every workspace you belong to | | `--period ` | Filter by period, e.g. Q3-2026 | | `--status ` | Filter by status: planned, active, completed, archived, on-hold | | `--tree` | Render the parent/child cascade instead of a flat list | ### `goals get` Get an objective by its integer ID ```bash exponential goals get [options] ``` | Argument | Required | Description | |---|---|---| | `id` | yes | | ### `goals create` Create an objective ```bash exponential goals create [options] ``` | Option | Description | |---|---| | `-t, --title ` | Objective title | | `-w, --workspace ` | Workspace slug or ID (defaults to your default workspace) | | `--period ` | Period, e.g. Q3-2026 or Annual-2026 | | `--status ` | Status: planned, active, completed, archived | | `-d, --description ` | Description (markdown supported) | | `--why ` | Why this goal matters | | `--dri ` | Directly responsible individual (user ID) | | `--parent ` | Parent objective ID to nest under (max depth 5) | | `--project ` | Link a project on creation | ### `goals update` Update an objective. Only the flags you pass are written — everything else is left exactly as it is. For a status change use `set-status`; to re-parent use `reparent`. ```bash exponential goals update [options] ``` | Option | Description | |---|---| | `--id ` | Objective ID (a number) | | `-t, --title ` | New title | | `-d, --description ` | New description ("none" clears it) | | `--why ` | Why this goal matters ("none" clears it) | | `--period ` | New period ("none" clears it) | | `--dri ` | Directly responsible individual (user ID) | | `--status ` | Status: planned, active, completed, archived | | `--project ` | Replace the project links with this project ("none" clears them) | | `-w, --workspace ` | Re-home the objective; "none" makes it personal | ### `goals set-status` Set an objective's status and nothing else. Routes through the status-only procedure, so no other field can be touched. ```bash exponential goals set-status [options] ``` | Option | Description | |---|---| | `--id ` | Objective ID (a number) | | `--status ` | Status: planned, active, completed, archived, on-hold | ### `goals close` Close out an objective — one command per goal when a quarter ends ```bash exponential goals close [options] ``` | Option | Description | |---|---| | `--id ` | Objective ID (a number) | | `--status ` | completed (default) or archived (default: `"completed"`) | ### `goals reparent` Move an objective under another (or detach it with --parent none). Writes the parent alone. ```bash exponential goals reparent [options] ``` | Option | Description | |---|---| | `--id ` | Objective ID (a number) | | `--parent ` | New parent objective ID, or "none" to detach | ### `goals delete` Delete an objective. Refuses while it still has key results — deleting an objective deletes them too (KeyResult.goalId cascades), taking their check-in history with them. ```bash exponential goals delete [options] ``` | Option | Description | |---|---| | `--id ` | Objective ID (a number) | | `--with-key-results` | Delete the objective and cascade-delete its key results (destructive) | ### `goals periods` List the conventional OKR period strings ```bash exponential goals periods [options] ``` ### `goals stats` Objective and key-result counts, average progress and confidence ```bash exponential goals stats [options] ``` | Option | Description | |---|---| | `-w, --workspace ` | Workspace slug or ID (defaults to your default workspace) | | `--period ` | Period, e.g. Q3-2026 | ### `goals kr` Key results on an objective. Ids are CUIDs; --goal takes the objective's integer id. ### `goals kr list` List key results ```bash exponential goals kr list [options] ``` | Option | Description | |---|---| | `--goal ` | Objective ID (a number) | | `-w, --workspace ` | Workspace (workspace-wide: every member's KRs) | | `--period ` | Period, e.g. Q3-2026 | | `--status ` | Filter by status: not-started, on-track, at-risk, off-track, achieved | | `--mine` | Narrow a workspace list to key results you own | ### `goals kr get` Get a key result by CUID ```bash exponential goals kr get [options] ``` | Argument | Required | Description | |---|---|---| | `id` | yes | | ### `goals kr create` Create a key result on an objective ```bash exponential goals kr create [options] ``` | Option | Description | |---|---| | `--goal ` | Objective ID (a number) | | `-t, --title ` | Key result title | | `--target ` | Target value | | `--start ` | Starting value (default 0) | | `--current ` | Current value (defaults to the start value) | | `--unit ` | Unit: percent, count, currency, hours, custom | | `--period ` | Period, e.g. Q3-2026 (defaults to the objective's) | | `-d, --description ` | Description | | `--dri ` | Directly responsible individual (user ID) | ### `goals kr update` Update a key result (only the flags you pass are written) ```bash exponential goals kr update [options] ``` | Option | Description | |---|---| | `--id ` | Key result CUID | | `-t, --title ` | New title | | `-d, --description ` | New description | | `--current ` | Current value (prefer `kr checkin` — it records history) | | `--target ` | Target value | | `--start ` | Starting value | | `--unit ` | Unit: percent, count, currency, hours, custom | | `--status ` | Status: not-started, on-track, at-risk, off-track, achieved | | `--confidence ` | Confidence 0-100 | | `--dri ` | Directly responsible individual (user ID) | | `--goal ` | Move the key result to a different objective | ### `goals kr checkin` Record a progress check-in. Moves the value AND re-derives the status from where it lands between start and target. ```bash exponential goals kr checkin [options] ``` | Option | Description | |---|---| | `--id ` | Key result CUID | | `--value ` | New current value | | `--note ` | Check-in note | ### `goals kr delete` Delete a key result ```bash exponential goals kr delete [options] ``` | Option | Description | |---|---| | `--id ` | Key result CUID | ### `goals kr link` Link executing work (a project or a feature) to a key result ```bash exponential goals kr link [options] ``` | Option | Description | |---|---| | `--id ` | Key result CUID | | `--project ` | Project CUID | | `--feature ` | Feature CUID | ### `goals kr unlink` Unlink a project or feature from a key result ```bash exponential goals kr unlink [options] ``` | Option | Description | |---|---| | `--id ` | Key result CUID | | `--project ` | Project CUID | | `--feature ` | Feature CUID | ### `goals comment` Read and post comments on a goal. Mention teammates with --mention. ### `goals comment list` List comments on a goal ```bash exponential goals comment list [options] ``` | Option | Description | |---|---| | `--goal ` | Goal ID (a number) | ### `goals comment add` Add a comment to a goal ```bash exponential goals comment add [options] ``` | Option | Description | |---|---| | `--goal ` | Goal ID (a number) | | `-m, --message ` | Comment content (markdown supported) | | `--mention ` | Mention a workspace member by name, email, or id (repeatable). Writing @name in the message substitutes in place; otherwise the mention is prepended. | | `--workspace ` | Workspace used to resolve --mention (defaults to your default workspace) | | `--parent-update ` | Thread under a specific goal update | ### `goals comment update` Update one of your own comments ```bash exponential goals comment update [options] ``` | Option | Description | |---|---| | `--comment-id ` | Comment ID | | `-m, --message ` | New comment content | | `--mention ` | Mention a workspace member by name, email, or id (repeatable). Writing @name in the message substitutes in place; otherwise the mention is prepended. | | `--workspace ` | Workspace used to resolve --mention (defaults to your default workspace) | ### `goals comment rm` Delete one of your own comments ```bash exponential goals comment rm [options] ``` | Option | Description | |---|---| | `--comment-id ` | Comment ID | ## `okrs` OKRs — objectives with their key results nested. Manage the parts with `goals` and `goals kr`. ### `okrs list` List objectives with their key results. Defaults to the current quarter — pass --period all for every period. ```bash exponential okrs list [options] ``` | Option | Description | |---|---| | `-w, --workspace ` | Workspace slug or ID (defaults to your default workspace) | | `--all-workspaces` | List across every workspace you belong to | | `--period ` | Period, e.g. Q3-2026, or "all" for every period (default: Q3-2026) | | `--paired-period` | Also include the period's parent annual period | | `--status ` | Keep only key results with this status: not-started, on-track, at-risk, off-track, achieved | | `--mine` | Only objectives and key results you are the DRI for | ### `okrs stats` Objective and key-result counts, average progress and confidence ```bash exponential okrs stats [options] ``` | Option | Description | |---|---| | `-w, --workspace ` | Workspace slug or ID (defaults to your default workspace) | | `--period ` | Period, e.g. Q3-2026 | ### `okrs periods` List the conventional OKR period strings ```bash exponential okrs periods [options] ``` ### `okrs kr` Key results on an objective. Ids are CUIDs; --goal takes the objective's integer id. ### `okrs kr list` List key results ```bash exponential okrs kr list [options] ``` | Option | Description | |---|---| | `--goal ` | Objective ID (a number) | | `-w, --workspace ` | Workspace (workspace-wide: every member's KRs) | | `--period ` | Period, e.g. Q3-2026 | | `--status ` | Filter by status: not-started, on-track, at-risk, off-track, achieved | | `--mine` | Narrow a workspace list to key results you own | ### `okrs kr get` Get a key result by CUID ```bash exponential okrs kr get [options] ``` | Argument | Required | Description | |---|---|---| | `id` | yes | | ### `okrs kr create` Create a key result on an objective ```bash exponential okrs kr create [options] ``` | Option | Description | |---|---| | `--goal ` | Objective ID (a number) | | `-t, --title ` | Key result title | | `--target ` | Target value | | `--start ` | Starting value (default 0) | | `--current ` | Current value (defaults to the start value) | | `--unit ` | Unit: percent, count, currency, hours, custom | | `--period ` | Period, e.g. Q3-2026 (defaults to the objective's) | | `-d, --description ` | Description | | `--dri ` | Directly responsible individual (user ID) | ### `okrs kr update` Update a key result (only the flags you pass are written) ```bash exponential okrs kr update [options] ``` | Option | Description | |---|---| | `--id ` | Key result CUID | | `-t, --title ` | New title | | `-d, --description ` | New description | | `--current ` | Current value (prefer `kr checkin` — it records history) | | `--target ` | Target value | | `--start ` | Starting value | | `--unit ` | Unit: percent, count, currency, hours, custom | | `--status ` | Status: not-started, on-track, at-risk, off-track, achieved | | `--confidence ` | Confidence 0-100 | | `--dri ` | Directly responsible individual (user ID) | | `--goal ` | Move the key result to a different objective | ### `okrs kr checkin` Record a progress check-in. Moves the value AND re-derives the status from where it lands between start and target. ```bash exponential okrs kr checkin [options] ``` | Option | Description | |---|---| | `--id ` | Key result CUID | | `--value ` | New current value | | `--note ` | Check-in note | ### `okrs kr delete` Delete a key result ```bash exponential okrs kr delete [options] ``` | Option | Description | |---|---| | `--id ` | Key result CUID | ### `okrs kr link` Link executing work (a project or a feature) to a key result ```bash exponential okrs kr link [options] ``` | Option | Description | |---|---| | `--id ` | Key result CUID | | `--project ` | Project CUID | | `--feature ` | Feature CUID | ### `okrs kr unlink` Unlink a project or feature from a key result ```bash exponential okrs kr unlink [options] ``` | Option | Description | |---|---| | `--id ` | Key result CUID | | `--project ` | Project CUID | | `--feature ` | Feature CUID |
Last updated Edit this page on GitHub