CLI engine commands

Use local design engines, native XLS and CUDA, and DDS authoring with explicit limits and input contracts.

Overview

This page covers local design engine commands, their principal arguments, and their execution boundaries. Use the installed command’s leaf --help for its complete option and value-enum list. Read the result’s own limits before using it as engineering evidence.

Read CLI command surface first. It defines the routing, the exit codes, the receipt envelopes, and the sibling-resolution rule that every command below depends on. The job namespace, analyze run, and evolve run are on CLI job and cloud commands.

Conventions used in the tables:

  • <ANGLE> is a positional argument; [ANGLE]... is a repeatable optional one.

  • Options in the Required column must be present, or the command exits 2 before anything is launched.

  • Every subcommand also accepts --json and -h/--help. Those are not repeated per row.

  • --project is --project <PROJECT>, an optional working directory for relative input and output paths, unless a row says otherwise. It must resolve to a real directory; an unresolvable value exits 2.

capabilities

alti capabilities inspects the authenticated installed layout and reports its operation surface. Complete Install on Linux first; the 0.1.9 embedded bootstrap supplies the previously missing receipt and payload layout. A capability response is not evidence of an executed kernel or design.

rtl

Twenty-eight subcommands. rtl compile and rtl synthesize are the two --runner-carrying compatibility paths; every other rtl subcommand runs locally and unconditionally.

Unlike physical run and px analyze, those two do launch their engine with no passthrough arguments, because each supplies a fixed engine operation. The engine then reports its own missing-argument error and its exit status passes through unchanged. Give them the arguments they need after --.

Command

Required

Other options

Purpose

rtl compile

—

--runner <local|cloud|private> (default local), --project, -- <ENGINE_ARG>...

Compatibility path delegating to the packaged compile engine

rtl synthesize

—

--runner (default local), --project, -- <ENGINE_ARG>...

Compatibility spelling for the original raw local synth delegation

rtl schematic <FILE>...

at least one <FILE>

--project, --top <TOP>, --format <json|text> (default json), -I <DIR>, -D <NAME[=VALUE]>

Emit the compiler-proven schematic contract for saved RTL sources

rtl analysis <PATH>...

at least one <PATH>

--project

Run the packaged analysis operation over the named sources

rtl synth [FILE]...

--top <TOP>

--project, --pretty, --netlist-only, --source <LOGICAL_PATH> <DISK_PATH>

Run the packaged synthesis operation

rtl map

--netlist <NETLIST>, --liberty <LIBERTY>

--project, --pretty

Run the packaged technology-mapping operation

rtl target-analysis capabilities

—

—

Report the fixed target-analysis contract and executor availability

rtl target-analysis readiness

—

—

Report pathless, read-only target-analysis execution readiness

rtl target-analysis admit

eleven options, below

--cell-decomposition

Validate one typed admission from source-bundle JSON on stdin

rtl target-analysis preflight

eleven options, below

--cell-decomposition

Run structural preflight from source-bundle JSON on stdin

rtl simulate admit|preflight|run <REQUEST_JSON>

<REQUEST_JSON>

--project

Admit, preflight, or execute one bounded saved RTL simulation request

rtl simulate-v2 capabilities

—

—

Report the fixed four-state multi-clock simulation contract

rtl simulate-v2 admit|preflight|run <REQUEST_JSON>

<REQUEST_JSON>

--project

Admit, preflight, or execute one bounded four-state multi-clock request

rtl artifact store <RESULT_JSON_OR_DASH>

<RESULT_JSON_OR_DASH>

--project, --schematic

Persist one result receipt in the project artifact store

rtl artifact list

—

--project, --schematic

List stored entries

rtl artifact show <ENTRY_ID>

<ENTRY_ID>

--project, --schematic

Read one stored entry

rtl fanout-free-committed-identities list

—

--project

List the bounded verified identities in the fixed owner-private registry

rtl fanout-free-committed-identities read

--entry-id <SHA256>

--project

Reread one identity selected from the current verified list

rtl global-sharing-committed-identities list|read

read: --entry-id <SHA256>

--project

As above, for global-sharing identities

rtl mapped-timing-committed-identities list|read

read: --entry-id <SHA256>

--project

As above, for mapped-timing identities

rtl mapped-register-timing-committed-identities list|read

read: --entry-id <SHA256>

--project

As above, for mapped-register-timing identities

--schematic on the three rtl artifact subcommands selects the fixed schematic receipt store instead of the RTL operation-result store.

--entry-id on the committed-identity leaves must be exactly 64 lowercase hexadecimal characters. Anything else exits 2 with entry id must be exactly 64 lowercase hexadecimal characters.

rtl schematic bounds

rtl schematic validates its paths before launching anything. Each source file, include directory, and define is rejected at admission if it breaks one of these:

Limit

Value

Source files

at most 256

Include directories (-I)

at most 128

Defines (-D)

at most 256

Path length

1 to 4096 bytes

Path components

1 to 128

One path component

at most 255 bytes

Paths must be relative to the selected project, must not start with -, must not contain control bytes, and must not contain ... --top and a define name must be a SystemVerilog identifier of 1 to 128 bytes; a define may carry a value after = up to 4096 bytes in total.

rtl target-analysis options

admit and preflight read canonical source-bundle JSON from stdin and both require the same eleven options: --module <NAME>, --top <NAME>, --targets <CSV>, --primary-target <ID>, --tools <CSV>, --report-detail <LEVEL>, --profile <ID>, --cpu-slots <N>, --memory-bytes <N>, --max-wall-time-ms <N>, and --deadline-unix-ms <N>. --cell-decomposition is an optional boolean flag.

Option

Accepted values

--primary-target

generic-asic, sky130-asic, xc7-fpga

--targets

comma-separated subset of generic-asic, sky130-asic, xc7-fpga, no duplicates

--tools

comma-separated subset of waveform, schematic, roofline, perf, timing, ppa, evidence, no duplicates

--report-detail

brief, standard, detailed

--cpu-slots is a 32-bit unsigned integer; --memory-bytes, --max-wall-time-ms, and --deadline-unix-ms are 64-bit unsigned integers.

A duplicate or unlisted value in either CSV is refused at parse time, for example targets must be a comma-separated subset of: generic-asic, sky130-asic, xc7-fpga.

The simulation request envelope

<REQUEST_JSON> is a project-relative path to a file the CLI reads and checks before it launches anything. The path must be normalized and relative, must not cross a symbolic link at any component, and must resolve inside the project root. The file must be a regular file no larger than 260 MiB.

Its JSON must be an object with exactly four keys:

JSON
{
  "schema": "altifigence.rtl.operation-request.v1",
  "version": 1,
  "operationId": "altifigence.rtl.simulate.v1",
  "request": {}
}

operationId must be altifigence.rtl.simulate.v1 for rtl simulate and altifigence.rtl.simulate.v2 for rtl simulate-v2. A mismatch is refused before launch with RTL simulation request must be the exact <id> envelope.

The committed-identity subcommands cannot run

The eight rtl *-committed-identities list and read leaves dispatch to an engine named alti-rtl-runner. That binary is not one of the 24 engine binaries the release builds and ships, so it can be resolved neither as a sibling of alti nor on PATH from a correct installation. Invoking one produces a local-engine receipt with status: "unavailable" and exitCode: 127:

Text
$ alti --json rtl fanout-free-committed-identities list
{
  "schema": "altifigence.local-engine-execution.v1",
  "status": "unavailable",
  "domain": "rtl",
  "operation": "fanout-free-committed-identities-list",
  "runner": "local",
  "binary": "alti-rtl-runner",
  ...
}

Do not build automation on these eight commands.

sv

Twenty-three subcommands, all local and unconditional. None accepts --runner.

Command

Required

Other options

Purpose

sv frontend index [PATH]...

—

--project

Build the frontend index over the named paths

sv frontend symbols [PATH]...

—

--project

Report the symbol surface for the named paths

sv frontend symbols-v2 [PATH]...

—

--project

The second-generation symbol response shape

sv frontend definition <PATH> <LINE> <COLUMN> [ANALYSIS_PATH]...

positions

--project

Resolve the definition at one position

sv frontend hover <PATH> <LINE> <COLUMN> [ANALYSIS_PATH]...

positions

--project

Resolve the hover response at one position

sv frontend complete <PREFIX> [PATH]...

<PREFIX>

--project

Resolve completions for one prefix

sv frontend references <PATH> <LINE> <COLUMN> [ANALYSIS_PATH]...

positions

--project

Resolve references to the symbol at one position

sv frontend rename-plan <PATH> <LINE> <COLUMN> <REPLACEMENT> [ANALYSIS_PATH]...

positions, <REPLACEMENT>

--project

Produce a rename plan without editing files

sv frontend rename-apply <PATH> <LINE> <COLUMN> <REPLACEMENT> <REVIEWED_PLAN_SHA256>

all five

--project <ABSOLUTE_WORKSPACE> required

Apply a rename, gated on the hash of the reviewed plan

sv review immediate

—

—

Review immediate assertions without compiling or simulating them

sv review interprocess

—

—

Review inter-process synchronization without compiling or simulating it

sv library constrained-random list

—

--category <item|control|checker>, --filter <FILTER>, --limit <LIMIT> (default 64)

List entries in the constrained-random reference catalog

sv library constrained-random show <STABLE_ID>

<STABLE_ID>

—

Show one constrained-random catalog entry

sv library sva list

—

--category, --filter, --limit (default 64)

List entries in the SVA reference catalog

sv library sva show <STABLE_ID>

<STABLE_ID>

—

Show one SVA catalog entry

sv uvm capabilities

—

—

Report the compiled UVM bridge contract

sv uvm environment

—

—

Report the UVM bridge environment view

sv uvm readiness

—

—

Return the signed fixed-component readiness receipt without loading or running it

sv uvm abi

—

—

Report the UVM bridge ABI

sv uvm simulation capabilities

—

—

Report the bounded UVM simulation contract

sv uvm simulation readiness

—

—

Report pathless implementation and external execution-authority readiness

sv uvm simulation admit

thirteen options, below

—

Validate one bounded fail-closed UVM simulation request

sv uvm simulation preflight

sixteen options, below

--cancellation-requested

Preflight one bounded fail-closed UVM simulation request

Positional value rules:

  • <LINE> and <COLUMN> are 1-based non-zero integers. 0 exits 2.

  • <REPLACEMENT> must be a SystemVerilog identifier: the first character is a letter, _, or $, and the rest are alphanumeric, _, or $.

  • <REVIEWED_PLAN_SHA256> must be 64 lowercase hexadecimal characters.

  • <STABLE_ID> must be 1 to 128 characters drawn from lowercase letters, digits, and hyphens.

  • --filter must be 1 to 128 non-control bytes; --limit must be an integer from 1 to 64, and --limit 65 exits 2.

sv frontend rename-apply is the only sv subcommand that requires --project, and the value must be an absolute path to a real directory that is not a symbolic link. Without it the command exits 1 with SV rename apply requires --project <absolute-workspace>.

sv review immediate and sv review interprocess read SystemVerilog source from stdin. They are the only sv subcommands backed by their own engines, alti-sv-immediate-review and alti-sv-interprocess-review; everything else in the namespace uses alti-sv-frontend.

sv uvm simulation admit requires thirteen options: --bundle-id, --bundle-sha256, --source-count, --source-bytes, --test, --top, --clock, --period-ps, --cycles, --max-wall-time-ms, --max-cpu-cores, --max-memory-bytes, and --max-artifact-bytes. sv uvm simulation preflight requires those thirteen plus --attempt-id, --observed-at-unix-ms, and --deadline-unix-ms, and additionally accepts the boolean --cancellation-requested (default false). --source-count is a 32-bit unsigned integer, --max-cpu-cores is a 16-bit unsigned integer, and the remaining numeric options are 64-bit unsigned integers.

verification

Command

Required

Other options

Purpose

verification golden-diff emit-profile <TRACE>

<TRACE>

--project, --tolerance-pct <TOLERANCE_PCT> (default 10)

Emit a comparison profile from one trace

verification golden-diff check <REFERENCE> <TRACE>

both

--project, --format <text|json|json-v1> (default text)

Check one trace against a reference

--tolerance-pct must be a finite non-negative number; a negative or non-numeric value exits 2 with tolerance-pct must be a finite non-negative number.

--format here selects the engine’s own output format and is independent of the CLI-level --json envelope flag. Both may be used together.

trace

Command

Required

Other options

Purpose

trace inspect <TRACE>

<TRACE>

--project, --format <json|text> (default json)

Inspect one trace file

trace timeline <TRACE> <OUTPUT>

both

--project

Write a timeline view of one trace to <OUTPUT>

trace export <FORMAT> <TRACE> <OUTPUT>

all three

--project

Export one trace

trace review materialize <TRACE_ARTIFACT_ID>

<TRACE_ARTIFACT_ID>

--project, --reference <REFERENCE_ARTIFACT_IDS> (repeatable)

Materialize one v1 review package from owner-store artifact identities

trace review list

—

--project

List at most the five most recent owner-store review packages

trace review show <PACKAGE_ID>

<PACKAGE_ID>

--project

Show one pathless review package summary

trace review readback <PACKAGE_ID>

<PACKAGE_ID>

--project

Read back one verified review package

<FORMAT> on trace export is a positional value enum, not a flag, and it comes before the input path. Its values are vcd and chrome.

--reference may be repeated to name additional reference artifacts. <TRACE_ARTIFACT_ID>, the reference ids, and <PACKAGE_ID> may begin with a hyphen without needing --.

Note that alti trace with no subcommand reaches the local parser and exits 2 asking for a subcommand. The one-word trace action in the embedded action manifest is therefore not reachable from the command line in this release; see CLI job and cloud commands.

labs

Read-only descriptors and validation. Workflow execution is not exposed by the CLI.

Command

Required

Other options

Purpose

labs inspect

—

—

Inspect the fixed compile-time workflow descriptor catalog

labs validate <DESCRIPTOR>

<DESCRIPTOR>, --project <ABSOLUTE_WORKSPACE>

—

Validate one checked JSON boundary-health descriptor without executing it

labs status

—

—

Emit the deterministic, descriptor-only Labs status

labs validate is strict about its two inputs, and every rule below is checked before the engine starts:

  • --project must be an absolute path to a real directory, not a symbolic link.

  • <DESCRIPTOR> must be workspace-relative, must contain no .. or root component, and must be at most 4096 bytes.

  • It must use the .json extension.

  • It must resolve to a real regular file of at most 1048576 bytes, and the resolved path must still be inside the project.

tcl

Command

Required

Other options

Purpose

tcl capabilities

—

—

Report the Tcl runtime capability descriptor

tcl environment

—

—

Report the Tcl runtime environment descriptor

tcl commands

—

—

Report the bounded command descriptor

tcl readiness

—

—

Return the fixed signed-runtime readiness receipt without loading Tcl

tcl evaluate

—

—

Evaluate one bounded Tcl script read from stdin

The first four answer from descriptors through the packaged alti-tcl engine and emit the standard local-engine envelope.

tcl evaluate is different in three ways. It reads the script from stdin, with a bound of 4194304 bytes; empty input is refused. It requires alti-tcl-local-runner as a strict sibling of alti with no PATH fallback, and checks it against the installed trust chain. The 0.1.9 bootstrap installs the fixed signed Tcl component needed for this path; use the installed binary. And it emits its own receipt schema, altifigence.cli.tcl-evaluation.v1, with its own exit codes — both are in CLI command surface.

eidb

Command

Required

Other options

Purpose

eidb capabilities

—

—

Report the EIDB boundary contract

eidb list

—

--project

List bundles below the project

eidb create

--source-artifact-ref <WORKSPACE_RELATIVE_ARTIFACT>

--project, --label <LABEL>

Create one owned R1 bundle from a workspace-relative artifact

eidb export

--bundle-key <BUNDLE_KEY>

--project

Produce a portable export of one bundle

eidb readback

--bundle-key <BUNDLE_KEY>

—

Read one bundle back

eidb semantic-readback

--bundle-key <BUNDLE_KEY>

—

Read one bundle back through the semantic view

eidb capabilities, eidb readback, and eidb semantic-readback take no --project; they are pathless with respect to the CLI.

physical

Forty-two subcommands. physical run is the --runner-carrying compatibility path; the rest run locally and unconditionally, and each one passes its own subcommand name straight through to alti-physical-runner as the engine operation. The CLI’s role in this namespace is argument admission and receipt framing, so the surface is regular enough to give as two groups.

Group

Members

Arguments

Project-scoped operations

pdn-stripe-plan, optimize-clock-tree, optimize-global-route, optimize-placement, placement-legalize, placement-pipeline-manifest, placement-pipeline-run, placement-seed-grid, single-clock-tree, two-pin-manhattan-route, two-pin-manhattan-route-congestion, two-pin-obstacle-route, two-pin-obstacle-route-bend-aware, multi-net-obstacle-route, multi-net-obstacle-route-bend-aware, multi-net-uniform-capacity-route, multi-net-edge-capacity-route, multi-net-congestion-cost-route, multi-net-congestion-cost-route-improve, multi-net-congestion-cost-route-improve-two-pass, multi-net-congestion-cost-route-improve-bounded

--project only

Entry-scoped follow-ups

optimize-detailed-route, verify-detailed-route, placement-pipeline-analyze, placement-pipeline-verify, multi-net-route-metrics, two-pin-manhattan-route-verify, two-pin-obstacle-route-verify, multi-net-obstacle-route-verify, multi-net-obstacle-route-bend-aware-verify, multi-net-uniform-capacity-route-verify, multi-net-edge-capacity-route-verify, multi-net-congestion-cost-route-verify, multi-net-congestion-cost-route-improve-verify, multi-net-congestion-cost-route-improve-two-pass-verify, multi-net-congestion-cost-route-improve-bounded-verify

--entry-id <ENTRY_ID> required, plus --project

Every entry-scoped follow-up reads a persisted entry produced by an earlier project-scoped operation. Omitting --entry-id exits 2 before anything is launched. That is thirty-six of the forty-two. The remaining six are:

Command

Required

Other options

Purpose

physical route-evidence-closure list

—

—

List the bounded committed identities below the current project

physical route-evidence-closure read

--identity-key-sha256 <LOWERCASE_SHA256>

—

Revalidate exactly one identity selected from the current bounded list

physical artifact store <RESULT_JSON_OR_DASH>

<RESULT_JSON_OR_DASH>

--project

Persist one result receipt in the project artifact store

physical artifact list

—

--project

List stored entries

physical artifact show <ENTRY_ID>

<ENTRY_ID>

--project

Read one stored entry

physical run

—

--runner (default local), --project, -- <ENGINE_ARG>...

Compatibility path for the original raw runner delegation

physical route-evidence-closure read is a two-step command: the CLI first lists the committed identities, requires that your --identity-key-sha256 appears in that list, then rereads exactly that one. A key that is not 64 lowercase hexadecimal characters, or that is not in the current list, is refused with exit 1 before the second step. The list step is pathless and does not take --project.

physical run will not launch without an engine operation after --:

Text
$ alti physical run
error: legacy local engine operation is required after `--`

That exits 1. The accepted legacy operations are --capabilities-json, capabilities, and execute; anything else exits 1 with legacy local engine operation ... is not in the public allowlist.

px

px analyze is the --runner-carrying compatibility path. Where a positional argument is named <INPUTS_RELATIVE_...>, it is resolved below the project’s inputs/ directory, not against your working directory.

Command

Required

Other options

Purpose

px capabilities

—

—

Report the px capability contract

px fdtd2d capabilities

—

—

Print the owner-defined FDTD2D capabilities contract

px fdtd2d readiness

—

—

Report dynamic installed execution readiness without acquiring a CPU lease

px fdtd2d preflight <INPUTS_RELATIVE_JSON>

<INPUTS_RELATIVE_JSON>

--project

Validate an FDTD2D request and report why it cannot run

px execute

—

--project

Run the packaged px execution operation

px static-timing <INPUTS_RELATIVE_JSON>

<INPUTS_RELATIVE_JSON>

--project

Run bounded non-signoff single-clock static timing from one project input file

px process-recipe <INPUTS_RELATIVE_JSON>

<INPUTS_RELATIVE_JSON>

--project

Validate and compile the declaration-order plan for one px-recipe-1 JSON file

px spef-summary <INPUTS_RELATIVE_SPEF>

<INPUTS_RELATIVE_SPEF>

--project

Report passive extracted R/C from one bounded SPEF file without analysis authority

px spef-analyze <INPUTS_RELATIVE_SPEF> <INPUTS_RELATIVE_CONFIG_JSON>

both

--project

Run bounded configured parasitic and IR-drop analysis under one caller-resolved corner

px readback <RUN_ID>

<RUN_ID>

--project

Read back one recorded run

px artifact store <RESULT_JSON_OR_DASH>

<RESULT_JSON_OR_DASH>

--project

Persist one result receipt in the project artifact store

px artifact list

—

--project

List stored entries

px artifact show <ENTRY_ID>

<ENTRY_ID>

--project

Read one stored entry

px analyze

—

--runner (default local), --project, -- <ENGINE_ARG>...

Compatibility path for the original raw runner delegation

Three of these state their own limits in their own help text, and those limits are part of the contract: px static-timing is explicitly non-signoff, px spef-summary explicitly carries no analysis authority, and px fdtd2d preflight reports a readiness blocker rather than a result. Treat their output accordingly.

Like physical run, px analyze requires a legacy operation after -- and otherwise exits 1. Its allowlist is capabilities and execute.

PX CPU and CUDA operations

Command

Backend and input

px fdtd2d execute <INPUT>

Required --backend with cpu, cuda, or auto; file relative to workspace inputs/

px fft-convolution <INPUT>

Same backend and input rules

px heat-pinn-jtr

Required --backend with cpu, cuda, or auto; bounded built-in numerical fixture

px hotspot-sensitivity

Same explicit backend policy; bounded built-in fixture

px csr-gmres

Same explicit backend policy; bounded built-in fixture

These commands accept --project; the first two also accept --timeout-ms 1..300000. Explicit cuda requires usable CUDA execution. auto separately permits the engine’s recorded CPU fallback; inspect the reported backend. These bounded numerical operations do not establish general physical signoff or GPU acceleration of every PX operation.

isa

Four of the six subcommands read CX source exclusively from stdin. isa run is the --runner-carrying compatibility path.

Command

Required

Other options

Purpose

isa elaborate

—

—

Elaborate CX source read from stdin

isa assemble

--text <TEXT>

—

Assemble one instruction against CX source read from stdin

isa disassemble

--bits <BITS>, --bit-len <BITS>

—

Disassemble one encoded word against CX source read from stdin

isa cosimulate

—

—

Run the bounded CX co-simulation projection with source read from stdin

isa assistant verify

--check <CHECK>, --source <CX_FILE>

--project

Run one named check over a CX file

isa run

—

--runner (default local), --project, -- <ENGINE_ARG>...

Compatibility path for the original allowlisted local CX operations

--check accepts exactly elaboration, static-semantics, encoding-uniqueness, and decode-determinism. --bit-len is a 32-bit unsigned integer. --text and --bits must not be empty or whitespace-only.

Unlike physical run and px analyze, isa run carries a fixed engine operation, so it launches with no passthrough arguments and the engine reports its own requirements:

Text
$ alti isa run
cx run: run requires --program <path> or --program-text
[failed] isa.run runner=local engine=alti-cx/run executable=alti-cx resolution=path exit=1 project=.

ide

Desktop host operations. Computation stays in the engine namespaces above.

Command

Required

Purpose

ide open

--project <ABSOLUTE_DIR>

Open one canonical absolute project directory in the installed IDE

ide open launches the separately installed desktop application. The native workspace, Cloud, service, and project-creation commands below work through their own explicit backends.

--project must be a canonical absolute directory: absolute, an existing directory, not a symbolic link, and equal to its own canonical form. A path that resolves through a symlink is refused rather than silently followed.

ide open does not use an engine binary. It resolves an executable named altifigence-ide as a sibling of alti and then on PATH, spawns it with --project <canonical-dir>, and emits an altifigence.ide-launcher-receipt.v1 receipt:

Field

Meaning

schema

Always altifigence.ide-launcher-receipt.v1

status

spawned, unavailable, or failed

pid

The child process id, or null

binary

Always altifigence-ide

project

The canonical project directory, or the requested value when canonicalization failed

resolution

sibling, path, or unresolved

executable

The resolved path, or the bare name

error

A message when status is not spawned, otherwise null

The exit status is 0 for spawned and 1 otherwise. altifigence-ide ships with Digital Design Studio, not with the CLI archive, so ide open reports unavailable from a CLI-only installation.

Native project and workspace operations

ide init --parent ABSOLUTE_DIR --name NAME creates a new scaffold below a canonical, caller-owned parent. It does not overwrite an existing project. ide workspace operates on saved local files without opening the UI:

Command after ide workspace

Inputs and behavior

capabilities

Report the platform contract

health --project ABS

Recover pending transactions before exposing the workspace

files --project ABS [--limit N]

Bounded listing; default 500, maximum 20000

read --project ABS PATH

Read one permitted saved text file

write --project ABS PATH --expected-sha256 HASH --content FILE_OR_DASH

Replace existing text only when its current SHA-256 matches

edit --project ABS --request FILE_OR_DASH

Array of path, expected_sha256, and content replacements

file-plan --project ABS --request FILE_OR_DASH

Review typed file creation, replacement, deletion, or directory creation

file-apply --project ABS --request FILE_OR_DASH

Apply the complete reviewed file plan

hierarchy-plan --project ABS --request FILE_OR_DASH

Review extraction, move, merge, or constants-header authoring

hierarchy-apply --project ABS --request FILE_OR_DASH

Apply the complete reviewed hierarchy plan

settings read --project ABS

Read the persisted DDS project settings

settings patch --project ABS --request FILE_OR_DASH

Recursively merge a bounded JSON object

The native plan result is an opaque complete apply input. Save raw engine output without global --json, review it, then pass the same document to its matching apply command. For example, with your existing absolute project and typed hierarchy request:

Bash
alti ide workspace hierarchy-plan --project "$PROJECT" \
  --request "$HIERARCHY_REQUEST" > "$PLAN_FILE"
# Review the complete plan and changed source before the next command.
alti ide workspace hierarchy-apply --project "$PROJECT" --request "$PLAN_FILE"

Do not pipe a failed command’s output into apply. Choose a new plan file and check each exit status. File authoring uses durable, serialized transactions and current source hashes; it is not filesystem-wide instantaneous atomicity against unrelated writers. Conflicts require a new review. Hierarchy authoring is bounded source selection and scaffolding, not full SystemVerilog semantic refactoring or an equivalence proof.

Settings retain the DDS .alti/ide-settings.json format, unknown keys, and literal null values. The patch is recursive merge, not RFC 7396 deletion. The request/result budget is 256 KiB and depth 8; the native UI and CLI use the same .alti/.ide-settings.lock. The CLI addresses the current project format, not a second independent desktop-global settings scope.

Native transactions and Git require the Linux contract. Current recovery reads both V1 and V2 journals. After an interrupted create/delete or hierarchy apply, run the new CLI’s health before opening an older V1-only DDS backend. An older backend refuses a pending V2 journal without clearing it. Normally completed transactions clear their active journal; a transparent-recovery backend upgrade is recommended, not a prerequisite to every completed CLI edit.

Git

Under ide workspace git, all commands take --project ABS:

Commands

Additional arguments

status, refs, worktrees

None

history

Optional --limit 1..200 and --skip 0..100000

commit-detail

Commit ID

commit-file

Commit ID and relative path

diff

Relative path, optionally --staged

stage, unstage

1–128 relative paths

commit

--message TEXT

switch

Existing local branch; refuses a dirty workspace or unsupported attribute/filter behavior

These operations recover and serialize against native workspace transactions. They do not expose arbitrary Git arguments, hooks, or remote push credentials.

Saved-source search

Bash
alti ide workspace search --project "$PROJECT" --query 'module' --limit 80

Native search supports --match-case, --whole-word, a conservative fixed-width --regex, limits of 1–500 matches, and --timeout-seconds 1..120. It reads saved text through the native files/read boundary, with budgets of 500 files, 4 MiB per file, 16 MiB total, and 1 MiB output. Check truncation and content evidence. Unsaved editor buffers are not searched. Cloud search and legacy HTTP search/replace are separate service operations.

xls

Command

Request and purpose

xls capabilities

Report native subset and backend availability

xls check, eval, optimize, codegen

Required --request FILE_OR_DASH, optional --project; native operation JSON, at most 16 KiB

xls run

Same flags and size bound; an XLS EngineJobV1 envelope with explicit local placement/device policy

xls artifact store

--request FILE_OR_DASH, optional --project

xls artifact list, xls artifact show ID

Optional --project; bounded stored result/readback

xls upstream install

Required absolute new --destination and --toolchain-config; optional original pinned --archive

xls upstream capabilities

Required absolute --toolchain-config; reports actual installed tool coverage

xls upstream run

Required --toolchain-config, existing --work-root, and --request FILE_OR_DASH; request up to 2 MiB

The native path supports bounded DSLX and XLS IR functions with 1–64-bit values, constant folding/dead-code removal, and combinational RTL or RTL with 1–16 output-register stages. The request selects cpu, or explicit cuda for supported batch evaluation. An unavailable CUDA backend is an error, not an automatic CPU run. Start with the CPU example.

The separate upstream path installs a pinned public Google XLS Linux toolchain, verifies its archive and tool/stdlib inventory, and preserves licence files. It supports imports, parametrics, structs, enums, aggregate and arbitrary-width types, and procs where the selected upstream tool supports the requested operation. It does not use the bounded bits64 parser or accelerate the full Google toolchain with CUDA.

Upstream requests select check, eval, convert, optimize, or codegen. DSLX eval without explicit vectors/ticks runs actual module tests; zero executed unit tests is not success. The base archive does not contain the standalone IR/proc evaluator executables. Explicit vectors or channel ticks require an additional verified evaluator bundle admitted during install with --evaluator-bundle and --evaluator-manifest-sha256. Inspect capabilities before requesting those operations. Upstream pipeline codegen supports 1–64 stages; its unit-delay schedule is not characterized silicon timing.

compute

Command

Purpose

compute capabilities

Discover devices without running a GPU kernel

compute rtl-capabilities

Inspect the packed RTL execution contract

compute rtl-simulate --request FILE_OR_DASH

Bounded combinational RTL execution with explicit cpu or cuda

compute rtl-evolve --request FILE_OR_DASH

Bounded native generation request with explicit cpu-reference or cuda activity backend

compute rtl-verify --request FILE_OR_DASH

Verify a stored packed RTL result without loading CUDA

The request commands accept --project. Simulation/Evolve input is bounded to 4 MiB; verify input to 16 MiB. The packaged alti-rtl-cuda owns this path. compute rtl-evolve takes altifigence.rtl.evolve-request.v1, with the existing native generation request nested under request; it is not an evolve run operation envelope.

Evolve CUDA computes bounded combinational activity diagnostics. Candidate generation, correctness checks, synthesis, and objective evaluation remain on the CPU. Actual Icarus iverilog and vvp must be available through host tool configuration. cpu-reference requires cuda_timeout_ms: 0 and device_memory_bytes: 0; cuda refuses unavailable execution instead of falling back. Use a fresh request.run_dir with an existing parent.

The request bounds generations and children to 1–16, islands to 1–4, total planned evaluations to 256, and LLM children to zero. Device memory is a bounded worker buffer budget, not a limit on total driver memory. The optional local cancel_file and deadlines support cooperative cancellation; native tool calls retain their own limits. A successful CUDA result needs actual accepted candidate activity and stored hardware provenance, not merely device discovery or an initial probe. Functional CPU/CUDA agreement is not a speedup claim.

Commands Missing from the Current Download

The previously omitted eda and reports namespaces are now routed:

Command

Inputs

eda inspect

--project ABS --format FORMAT PROJECT_RELATIVE_INPUT

eda sdc-bind

--project ABS --constraints PATH --logic-netlist PATH

eda artifact store, reports artifact store

--input RECEIPT_JSON, optional --project

eda artifact list, reports artifact list

Optional --project

eda artifact show, reports artifact show

--entry-id SHA256, optional --project

reports parse

Use leaf help for the typed report format and bounded input

These are bounded inspection, parsing, or binding operations, not general EDA tool execution. ide init and the explicit native Evolve commands are also available. The unshipped alti-rtl-runner compatibility path described above remains a separate limitation; do not infer support from help alone.

Prepare an engine workflow

  1. Choose the operation and read its installed capability response and leaf help.

  2. Create a small saved input inside the selected project and identify its top/module or entry point.

  3. Provide required external tools and use an explicit backend when the request supports CPU/CUDA selection.

  4. Run once with bounded resources and keep diagnostics plus the complete native result.

  5. Inspect actual backend, inputs, output artifacts and unsupported metrics before building a larger workflow.

Use DDS analysis for the graphical workflow and Evolve for candidate comparison. CLI engine support, a desktop panel and a Cloud route are separate integrations; check the workflow you will actually use.