Utility Commands
These commands provide supporting functionality: waiting for on-chain transactions and accessing explanatory content about how CodeQuill works.
codequill wait
Wait for a blockchain transaction to reach a specified number of confirmations. This is useful when you have submitted a transaction with --no-wait and want to separately track its confirmation, or when you need to gate a subsequent step on transaction finality.
Syntax
codequill wait <tx_hash> [options]
Arguments
| Argument | Required | Description |
|---|---|---|
tx_hash |
yes | The transaction hash to wait for (e.g. 0xabc123...) |
Options
| Option | Type | Default | Description |
|---|---|---|---|
--confirmations <n> |
integer | 1 |
Number of on-chain confirmations to wait for before returning |
--timeout <ms> |
integer | 300000 |
Maximum time in milliseconds to wait before timing out |
Example
codequill wait 0xabc123def456789...
Waiting for transaction 0xabc123def456789...
Confirmations: 0/1
Confirmations: 1/1
Transaction confirmed.
Wait for multiple confirmations with a custom timeout
codequill wait 0xabc123def456789... --confirmations 5 --timeout 600000
Notes
-
The default poll interval is 3000ms (3 seconds). The minimum poll interval is 500ms. The backend may return a
next_poll_mshint with each response, in which case the CLI honors it. -
If the transaction is not confirmed within the
--timeoutperiod, the command exits with a non-zero exit code. -
This command is particularly useful in CI/CD pipelines where you submit a transaction with
--no-waitin one step and confirm it in a later step:# Step 1: Submit without waiting TX_HASH=$(codequill publish --no-confirm --no-wait --json | jq -r '.tx_hash') # Step 2: Wait for confirmation separately codequill wait "$TX_HASH" --confirmations 3 -
The command polls the CodeQuill backend at
GET /v1/cli/tx/<tx_hash>to read confirmation status. It does not require authentication, so it can be used in pipelines without exposing a token to the confirmation step.
codequill releases
List the releases registered against the current repository. Useful when you need to find a release UUID to pass to codequill attest, or to confirm a release's governance state before automating an attestation.
Syntax
codequill releases [options]
Options
| Option | Type | Default | Description |
|---|---|---|---|
--repo <owner/name> |
string | git remote | Override the repository name. Defaults to parsing the origin git remote. |
--accepted |
flag | off | Only show releases whose governance is ACCEPTED (the ones attest can target). |
--json |
flag | off | Emit raw ReleaseResult[] as JSON for piping (e.g. into jq). |
Default output
A table with the columns NAME, STATUS, GOVERNANCE, PUBLISHED, ID (truncated). Status colours: PUBLISHED green, DRAFT dim, REVOKED red, SUPERSEDED yellow. Governance colours: ACCEPTED green, PENDING yellow, REFUSED red.
Examples
List every release for the current repository:
codequill releases
Show only the releases that can be attested against:
codequill releases --accepted
Pipe through jq to extract a single release UUID by name:
RELEASE_ID=$(codequill releases --accepted --json | jq -r '.[] | select(.name=="v0.11.0") | .release_id')
Notes
- The command derives the repo name from
git remote get-url originunless--repois set. The repository must be claimed (codequill claim) before any release will exist. - Returns
{ releases: ReleaseResult[] }. EachReleaseResultcontainsrelease_id,name,status,gouvernance,published_at,manifest_cid,tx_hash, and other on-chain fields. - For most workflows you do not need to resolve UUIDs manually —
codequill attest <build> <name>accepts a release name and resolves it via this same endpoint internally. Use the explicit command when scripting around governance state or when you want to surface a list to a human.
codequill why
Explain why CodeQuill works the way it does. This command prints explanatory content about core concepts and design decisions directly in your terminal. It is intended for onboarding, learning, and quick reference.
Syntax
codequill why [topic] [options]
Arguments
| Argument | Required | Description |
|---|---|---|
topic |
no | A specific topic to explain. Must be one of: claim, snapshot, publish, prove, attest, preserve. If omitted, prints the full overview covering all topics. |
Options
| Option | Type | Default | Description |
|---|---|---|---|
--short |
boolean | false |
Print a brief, condensed explanation instead of the full text |
--ci |
boolean | false |
Output in a CI-friendly format (no colors, no interactive formatting) |
Example
codequill why
CodeQuill produces verifiable evidence records for source code.
A claim establishes who speaks for a repository...
A snapshot captures the exact state of source at a point in time...
Publishing anchors that snapshot on-chain...
...
Explain a specific topic
codequill why snapshot
A snapshot is a deterministic cryptographic fingerprint of your repository's
tracked files at a specific commit.
CodeQuill reads every tracked file, hashes each one with a per-snapshot salt,
and builds a Merkle tree. The root of that tree is the snapshot's identity.
No source code leaves your machine during this process...
Short explanation for quick reference
codequill why attest --short
An attestation links a build artifact to a release, creating a verifiable
chain from source to binary.
CI-friendly output
codequill why snapshot --ci
Notes
- If no topic is provided, the full overview is printed, covering all core concepts in sequence.
- The available topics correspond to the major operations in the CodeQuill workflow:
claim,snapshot,publish,prove,attest, andpreserve. - If both
--shortand--ciare set,--shorttakes precedence for content formatting. The--ciflag primarily affects output styling (disabling colors and interactive formatting), while--shortaffects content length. - This command runs entirely offline. It does not contact any server.