CircuitHub

CLI Command Reference

Complete reference for all circuithub CLI commands.

Commands that accept <project> support both numeric project IDs and project names. A project name must be given with --workspace, the workspace that owns it. Commands that accept <order-id>, <quote-id>, or <invoice-id> require numeric IDs.

auth login

Open a browser to authenticate with CircuitHub. Captures a JWT and stores it locally.

circuithub auth login

The CLI starts a local HTTP server, opens your browser to the login page, and captures the token via a localhost callback. The token is valid for 24 hours and stored in ~/.config/circuithub/credentials.json.

auth logout

Remove stored credentials.

circuithub auth logout

auth status

Show current authentication status.

circuithub auth status

Output includes: username, user ID, API URL, token expiration, and whether the token is still valid.

workspace list

List workspaces you belong to.

circuithub workspace list [--json]
FlagDescription
--jsonOutput full API response as JSON
ColumnDescription
SlugURL-safe workspace identifier
NameDisplay name

project list

List projects you have access to.

circuithub project list --workspace <slug> [--json]
FlagShortDescription
--workspace-wRequired. Workspace slug
--jsonOutput full API response as JSON
ColumnDescription
IDProject ID
REVLatest revision number
NAMEProject name

project bom list

Show the Bill of Materials for a project.

circuithub project bom list <project> --workspace <slug> [--json]
ArgumentDescription
<project>Project ID (numeric) or project name
FlagShortDescription
--workspace-wRequired. Workspace slug
--jsonOutput full BOM detail as JSON

Default output is a formatted table with columns: Part, Footprint, Qty, Match. Includes a summary line with total/resolved/unresolved/errored counts.

project bom set-part

Set the part for a BOM line. Positional argument order is: BOM line ID, then part ID. Use project bom list to find the BOM line ID and part search to find the part ID.

circuithub project bom set-part <bom-line-id> <part-id> [--json]

# Example
circuithub project bom set-part 1003 5001
circuithub project bom set-part 1003 5001 --json
ArgumentDescription
<bom-line-id>Required. BOM line ID from project bom list
<part-id>Required. Part ID from part search
FlagDescription
--jsonOutput full API response as JSON
ColumnDescription
BOMBOM line ID
MATCHMatch result — MPN and manufacturer, or "not found"

project bom set-dnp

Mark a placement as Do Not Place (DNP). Positional argument order is: BOM line ID, then reference designator. A DNP placement will not be assembled or purchased.

circuithub project bom set-dnp <bom-line-id> <ref> [--json]

# Example
circuithub project bom set-dnp 1001 C3
circuithub project bom set-dnp 1001 C3 --json
ArgumentDescription
<bom-line-id>Required. BOM line ID from project bom list
<ref>Required. Reference designator to mark
FlagDescription
--jsonOutput full API response as JSON

project bom clear-dnp

Clear Do Not Place (DNP) for a placement. Positional argument order is: BOM line ID, then reference designator.

circuithub project bom clear-dnp <bom-line-id> <ref> [--json]

# Example
circuithub project bom clear-dnp 1001 C3
circuithub project bom clear-dnp 1001 C3 --json
ArgumentDescription
<bom-line-id>Required. BOM line ID from project bom list
<ref>Required. Reference designator to restore to fit
FlagDescription
--jsonOutput full API response as JSON

project show

Show details for a single project.

circuithub project show 12345
circuithub project show "Power Supply Board" --workspace acme-electronics
circuithub project show 12345 --json
ArgumentDescription
<project>Project ID (numeric) or project name
FlagDescription
--workspaceWorkspace slug that owns the project. Required when <project> is a name
--jsonOutput full API response as JSON

Output shows project fields in key-value format including project name, ID, description, timestamps, latest revision number, and import status.

project create

Create a new project by uploading EDA files. The path can be a file or a directory — when a directory is given, the CLI auto-collects all supported files including BOM CSVs.

circuithub project create power-supply-board ./my-board.kicad_pcb --workspace acme-electronics --export-classification EAR99
circuithub project create power-supply-board ./my-board/ --workspace acme-electronics --export-classification NotExportControlled --wait
circuithub project create power-supply-board ./my-board.kicad_pcb --workspace acme-electronics --export-classification ECCN --eccn 3A001 --json
ArgumentDescription
<name>Project name
<path>Path to an EDA file or directory of EDA and BOM files
FlagDescription
--workspaceRequired. Workspace slug
--export-classificationRequired. NotExportControlled, EAR99 or ECCN; choose the declaration that applies to your design
--eccnECCN code, such as 3A001. Required with --export-classification ECCN and refused otherwise
--waitBlock until import completes
--jsonOutput full API response as JSON

project revision create

Upload EDA and BOM files as a new revision on an existing project.

circuithub project revision create 12345 ./my-board-v2.kicad_pcb --workspace acme-electronics
circuithub project revision create "Power Supply Board" ./my-board-v2/ --workspace acme-electronics
circuithub project revision create 12345 ./my-board-v2/ --workspace acme-electronics --wait
circuithub project revision create 12345 ./my-board-v2.kicad_pcb --workspace acme-electronics --json
ArgumentDescription
<project>Project ID (numeric) or project name
<path>Path to an EDA file or directory of EDA and BOM files
FlagDescription
--workspaceWorkspace slug that owns the project (required). The files are uploaded to it, and a project ID from another workspace is refused
--waitBlock until import completes
--jsonOutput full API response as JSON

project status

Check the import status of a project. Exit codes: 0 = complete, 1 = failed, 2 = importing.

circuithub project status 12345
ArgumentDescription
<project>Project ID (numeric) or project name
FlagDescription
--jsonOutput full API response as JSON

Output: Project 12345: complete

project watch

Poll import status until the project finishes importing.

circuithub project watch 12345
circuithub project watch "Power Supply Board" --workspace acme-electronics
circuithub project watch 12345 --timeout 5m
ArgumentDescription
<project>Project ID (numeric) or project name
FlagDescription
--workspaceWorkspace slug (required when using project name)
--timeoutMaximum time to wait (default: 5m). Accepts Go duration strings like 5m, 1h

project revision list

List revisions of a project.

circuithub project revision list 12345 [--json]
ArgumentDescription
<project>Project ID (numeric) or project name
FlagDescription
--workspaceWorkspace slug (required when using project name)
--jsonOutput full API response as JSON
ColumnDescription
REVRevision number
IDRevision ID
CREATEDCreation timestamp

quote request

Request manufacturing offers for one revision and quantity, or reuse a valid cached quote for that selection.

circuithub quote request --revision 99001 --quantity 10 --workspace acme-electronics
FlagDescription
--revisionRequired. Revision ID
--quantityRequired. Positive board quantity
--workspaceRequired. Owning workspace; the CLI checks it against the revision
--jsonOutput the full quote representation

The API request contains revisionId and quantity; the workspace is identified by the revision rather than sent as an API query parameter.

Output:

Quote:       50001
Revision:    99001 (3)
Quantity:    10
Currency:    USD
Orderable:   yes
Expires:     2026-11-03T11:00:00Z

OFFER   SERVICE   SHIP DATE    MANUFACTURING TOTAL   PER BOARD
880002  priority  2026-11-06   $774.45               $77.45

Manufacturing total excludes shipping and tax.

quote show

Retrieve a quote by ID without recalculating it or extending its expiry.

circuithub quote show 50001 --workspace acme-electronics

Output:

Quote:       50001
Revision:    99001 (3)
Quantity:    10
Currency:    USD
Orderable:   yes
Expires:     2026-11-03T11:00:00Z

OFFER   SERVICE   SHIP DATE    MANUFACTURING TOTAL   PER BOARD
880002  priority  2026-11-06   $774.45               $77.45

Manufacturing total excludes shipping and tax.

When the quote has design feedback, both commands print each entry's summary, reasons and docs link after the offers.

Use --json for the full response. See the Quoting guide for offer fields, decimal-string prices, discounts, blockers and expiry. There is no per-part breakdown command.

Search for parts by MPN or description.

circuithub part search <query> [--json]
ArgumentDescription
<query>MPN or description to search for
FlagDescription
--jsonOutput full API response as JSON

Default output is a formatted table with columns: MPN, Manufacturer, Description, Available. Exact matches are listed first, separated from inexact matches by a horizontal line.

order list

List orders for a workspace.

circuithub order list --workspace acme-electronics
FlagDescription
--workspaceRequired. Workspace slug
ColumnDescription
IDOrder ID
StatusOrder status
DateCreation date
QtyNumber of boards ordered
PaymentPayment status
ProjectProject name

order show

Show details for a single order.

circuithub order show 8001
ArgumentDescription
<order-id>Order ID (numeric)
FlagDescription
--jsonOutput full API response as JSON

Output shows order fields in key-value format: Order, URN, Name, Status, Quantity, Value, Payment, PO, Project, Created, Quoted, and (when present) Est ship, Shipped, Tracking.

issue list

Issues are coming soon. The commands below describe the planned interface — they are not yet available.

List issues across your orders.

circuithub issue list --workspace <slug> [--order <order-id>] [--status <status>] [--json]
FlagDescription
--workspaceRequired. Workspace slug
--orderFilter by order ID
--statusFilter by status: open, closed
--jsonOutput full API response as JSON
ColumnDescription
IDIssue ID
PROJECTProject name
ORDEROrder ID
TITLEShort summary
STATUSopen or closed
CREATED BYEmail of the user who created the issue
CREATEDCreation timestamp

issue create

Issues are coming soon. The commands below describe the planned interface — they are not yet available.

Create a new issue on an order.

circuithub issue create <order-id> --title "Issue title" [--comment "Initial comment"] [--json]
ArgumentDescription
<order-id>Order ID to file the issue against
FlagDescription
--titleRequired. Short summary of the issue
--commentOptional initial comment
--jsonOutput full API response as JSON

billing invoice list

List invoices for a workspace.

circuithub billing invoice list --workspace <slug> [--status <status>] [--from <date>] [--to <date>]
FlagDescription
--workspaceRequired. Workspace slug
--statusFilter: open, paid_in_full, approved_for_posting, fully_applied
--fromStart date (ISO 8601)
--toEnd date (ISO 8601)
ColumnDescription
IDInvoice transaction ID
NAMEInvoice number
TYPEorder_shipment, charge, credit_memo, or custom
TOTALTotal amount
STATUSPayment status
DUE DATEPayment due date

billing invoice show

Show details for a single invoice, or download it as PDF.

circuithub billing invoice show <invoice-id> --workspace <slug>
# download PDF
circuithub billing invoice show <invoice-id> --workspace <slug> --download [--output <dir>]
ArgumentDescription
<invoice-id>Invoice transaction ID (numeric)
FlagDescription
--workspaceRequired. Workspace slug
--downloadDownload as PDF instead of showing details
--outputDirectory to save the PDF (default: current directory)

billing statement

Download a PDF statement for a date range.

circuithub billing statement --workspace <slug> --from <date> --to <date> [--output <dir>]
FlagDescription
--workspaceRequired. Workspace slug
--fromRequired. Start date (ISO 8601)
--toRequired. End date (ISO 8601)
--outputDirectory to save the PDF (default: current directory)

billing payment list

List payments for a workspace.

circuithub billing payment list --workspace <slug>
FlagDescription
--workspaceRequired. Workspace slug
ColumnDescription
IDPayment transaction ID
NAMEPayment reference number
DATEPayment date
AMOUNTPayment amount
METHODcard, net_terms, or wire
INVOICESLinked invoice names
STATUSapplied or pending

billing payment-method list

List payment methods configured for a workspace.

circuithub billing payment-method list --workspace <slug>
FlagDescription
--workspaceRequired. Workspace slug
ColumnDescription
IDPayment method ID, for order preview and submission
TYPEcard, net_terms, or wire
DETAILSCard brand and last 4 digits, or terms type
DEFAULTWhether this is the default method

billing balance

Show credit balance and limit for a workspace.

circuithub billing balance --workspace <slug>
FlagDescription
--workspaceRequired. Workspace slug

Shows current balance, credit limit, and available credit. If no credit is enabled for the workspace, shows a message indicating so.

Ordering commands

Commands using --file read a JSON request body from that file. The board, shipping address, billing and order guides give the file contents and complete responses.

Get board configuration

circuithub project board show --revision 99001 --workspace acme-electronics
Board:      7001
Version:    12
Layers:     4
Thickness:  1.6 mm
Material:   FR4
Finish:     ENIG

Update board configuration

circuithub project board update --revision 99001 --workspace acme-electronics --file board-change.json
Updated board: 7001
Version:       13

Set impedance requirements

circuithub project board impedances set --revision 99001 --workspace acme-electronics --file impedances.json
Board:        7001
Version:      14
Requirements: 1

List shipping addresses

circuithub shipping-address list --workspace acme-electronics
ID    RECIPIENT   CITY    COUNTRY
6101  Alex Smith  Boston  US

Get a shipping address

circuithub shipping-address show 6101 --workspace acme-electronics
ID:        6101
Recipient: Alex Smith
Address:   100 Main Street, Boston, MA 02110, US

Add a shipping address

circuithub shipping-address create --workspace acme-electronics --file address.json
Created shipping address: 6101

Replace a shipping address

circuithub shipping-address replace 6101 --workspace acme-electronics --file address.json
Replaced shipping address: 6101
New address ID:            6102

Remove a shipping address

circuithub shipping-address remove 6101 --workspace acme-electronics
Removed shipping address: 6101

Get billing details

circuithub billing details show --workspace acme-electronics
Billed to: Acme Electronics
Email:     accounts@example.com
Address:   100 Main Street, Boston, MA 02110, US

Update billing details

circuithub billing details set --workspace acme-electronics --file billing.json
Updated billing details for acme-electronics.

Add a payment method

circuithub billing payment-method add --workspace acme-electronics --file payment-token.json
Added payment method: card_abc123

Get a payment method

circuithub billing payment-method show card_abc123 --workspace acme-electronics
ID:      card_abc123
Type:    card
Details: Visa ending in 4242
Default: yes

Set the default payment method

circuithub billing payment-method default card_abc123 --workspace acme-electronics
Default payment method: card_abc123

Remove a payment method

circuithub billing payment-method remove card_abc123 --workspace acme-electronics
Removed payment method: card_abc123

Get shipping options

circuithub order shipping-options --quote 50001 --offer 880002 --shipping-address 6101 --workspace acme-electronics
ID          SERVICE     SHIPPING
ups_ground  UPS Ground  $25.00

Preview an order

circuithub order preview --workspace acme-electronics --file order-selection.json
Manufacturing: $774.45
Shipping:      $25.00
Tax:           $49.97
Order total:   $849.42
Due now:       $849.42
Due later:     $0.00
Orderable:     yes

Place an order

circuithub order create --workspace acme-electronics --file order.json
Order:   8001
Status:  in-progress
Payment: Paid

On this page