Metadata-Version: 2.4
Name: sima-cli
Version: 2.1.20
Summary: CLI tool for SiMa Developer Portal to download models, firmware, and apps.
Home-page: https://community.sima.ai/
Author: SiMa.ai
Author-email: "Sima.ai" <support@sima.ai>
License: MIT
Project-URL: Homepage, https://community.sima.ai/
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: OS Independent
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Build Tools
Classifier: Environment :: Console
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: click>=8.0
Requires-Dist: requests<3.0,>=2.32.4
Requires-Dist: tqdm>=4.64
Requires-Dist: pyyaml>=6.0
Requires-Dist: paramiko>=3.5.1
Requires-Dist: cryptography>=3.3
Requires-Dist: plotext==5.3.2
Requires-Dist: rich==14.0.0
Requires-Dist: InquirerPy==0.3.4
Requires-Dist: tftpy==0.8.6
Requires-Dist: psutil==7.0.0
Requires-Dist: huggingface-hub<3.0,>=2.2.0; python_version >= "3.10"
Requires-Dist: huggingface-hub<2.0,>=0.34.0; python_version < "3.10"
Requires-Dist: tabulate==0.9.0
Dynamic: author
Dynamic: license-file
Dynamic: requires-python

# sima-cli - SiMa Developer Portal CLI Tool

**Documentation:** [English](docs/sima-cli/index.md) | [한국어](docs/i18n/ko/sima-cli/index.md) | [日本語](docs/i18n/ja/sima-cli/index.md) | [繁體中文](docs/i18n/zh-Hant/sima-cli/index.md) | [Українська](docs/i18n/uk/sima-cli/index.md)

[![Python 3.8](https://img.shields.io/github/actions/workflow/status/sima-neat/sima-cli/vulcan-ci.yml?branch=main&job=Compatibility%20Python%203.8&label=python%203.8)](https://github.com/sima-neat/sima-cli/actions/workflows/vulcan-ci.yml)
[![Python 3.9](https://img.shields.io/github/actions/workflow/status/sima-neat/sima-cli/vulcan-ci.yml?branch=main&job=Compatibility%20Python%203.9&label=python%203.9)](https://github.com/sima-neat/sima-cli/actions/workflows/vulcan-ci.yml)
[![Python 3.10](https://img.shields.io/github/actions/workflow/status/sima-neat/sima-cli/vulcan-ci.yml?branch=main&job=Compatibility%20Python%203.10&label=python%203.10)](https://github.com/sima-neat/sima-cli/actions/workflows/vulcan-ci.yml)
[![Python 3.11](https://img.shields.io/github/actions/workflow/status/sima-neat/sima-cli/vulcan-ci.yml?branch=main&job=Compatibility%20Python%203.11&label=python%203.11)](https://github.com/sima-neat/sima-cli/actions/workflows/vulcan-ci.yml)
[![Python 3.12](https://img.shields.io/github/actions/workflow/status/sima-neat/sima-cli/vulcan-ci.yml?branch=main&job=Compatibility%20Python%203.12&label=python%203.12)](https://github.com/sima-neat/sima-cli/actions/workflows/vulcan-ci.yml)
[![Python 3.13](https://img.shields.io/github/actions/workflow/status/sima-neat/sima-cli/vulcan-ci.yml?branch=main&job=Compatibility%20Python%203.13&label=python%203.13)](https://github.com/sima-neat/sima-cli/actions/workflows/vulcan-ci.yml)
[![Python 3.14](https://img.shields.io/github/actions/workflow/status/sima-neat/sima-cli/vulcan-ci.yml?branch=main&job=Compatibility%20Python%203.14&label=python%203.14)](https://github.com/sima-neat/sima-cli/actions/workflows/vulcan-ci.yml)
[![E2E macOS](https://img.shields.io/github/actions/workflow/status/sima-neat/sima-cli/vulcan-ci.yml?branch=main&job=E2E%20Install%20(macOS)&label=e2e%20macOS&logo=apple&logoColor=white)](https://github.com/sima-neat/sima-cli/actions/workflows/vulcan-ci.yml)
[![E2E Windows](https://img.shields.io/github/actions/workflow/status/sima-neat/sima-cli/vulcan-ci.yml?branch=main&job=E2E%20Install%20(Windows)&label=e2e%20Windows&logo=windows&logoColor=white)](https://github.com/sima-neat/sima-cli/actions/workflows/vulcan-ci.yml)
[![E2E Ubuntu x86](https://img.shields.io/github/actions/workflow/status/sima-neat/sima-cli/vulcan-ci.yml?branch=main&job=E2E%20Install%20(Ubuntu%20x86)&label=e2e%20Ubuntu%20x86&logo=ubuntu&logoColor=white)](https://github.com/sima-neat/sima-cli/actions/workflows/vulcan-ci.yml)
[![E2E Ubuntu ARM64](https://img.shields.io/github/actions/workflow/status/sima-neat/sima-cli/vulcan-ci.yml?branch=main&job=E2E%20Install%20(Ubuntu%20ARM64)&label=e2e%20Ubuntu%20ARM64&logo=ubuntu&logoColor=white)](https://github.com/sima-neat/sima-cli/actions/workflows/vulcan-ci.yml)

`sima-cli` is the command-line interface for SiMa developer workflows. Use it to authenticate, set up SDK containers, update DevKits, install packages, download artifacts, and access Model Zoo and App Zoo content.

## Documentation

The full command reference is generated as Markdown under [docs/sima-cli](docs/sima-cli/index.md).

Use the generated docs for detailed options, arguments, subcommands, and full help text:

- [Complete command reference](docs/sima-cli/index.md)
- [Top-level command help](docs/sima-cli/commands/sima-cli.md)

## Installation

For most users, install the latest official release from the public installer URL for your operating system.

### Linux, macOS, and DevKit

Run the installer from a terminal:

```bash
curl -fsSL https://artifacts.neat.sima.ai/sima-cli/linux-mac.sh | bash
```

After installation, open a new terminal or reload your shell profile, then verify the install:

```bash
sima-cli --version
```

### Windows PowerShell

Download and run the Windows installer from PowerShell:

```powershell
Invoke-WebRequest https://artifacts.neat.sima.ai/sima-cli/windows.bat -OutFile windows.bat
.\windows.bat
```

After installation, open a new Command Prompt or PowerShell window, then verify the install:

```powershell
sima-cli --version
```

### Advanced: choose a branch or release

Use `install.py` only when you need to choose a specific tested branch build or release instead of installing the latest official PyPI release.

On Linux, macOS, or DevKit:

```bash
curl -fsSL https://artifacts.neat.sima.ai/sima-cli/install.py -o sima-cli-install.py
python3 sima-cli-install.py
```

Install a specific branch or release:

```bash
python3 sima-cli-install.py feature/my-branch latest
python3 sima-cli-install.py v2.1.6 latest
```

On Windows PowerShell:

```powershell
Invoke-WebRequest https://artifacts.neat.sima.ai/sima-cli/install.py -OutFile sima-cli-install.py
python .\sima-cli-install.py
```

To install a specific branch or release:

```powershell
python .\sima-cli-install.py feature/my-branch latest
python .\sima-cli-install.py v2.1.6 latest
```

Release tags such as `v2.1.6` install from public PyPI. Branch names install tested artifacts from `artifacts.neat.sima.ai/sima-cli`.

Public PyPI releases can also be installed directly:

```bash
pip install sima-cli
```

## Quick Start

```bash
sima-cli --help
sima-cli --version
sima-cli login
```

Use `--internal` or `SIMA_CLI_INTERNAL=1` when internal Artifactory resources are required:

```bash
sima-cli --internal login
SIMA_CLI_INTERNAL=1 sima-cli install -v 2.1.2 tools/model-compiler/amd64
```

Full-system SWU updates prefer RAM-backed `/tmp` when available memory can
hold both the bundle and its extraction, plus a reserve of at least 512 MiB
or 10% of total RAM (whichever is larger). Otherwise they stage in `/data`,
with NVMe as a further fallback if `/data` lacks space. RAM staging is temporary;
interrupted updates retained there do not survive a reboot.

Public-mirror downloads, `models download`, and `neat artifacts` split files
of at least 64 MiB into four byte ranges when supported by the server. Models
and Neat artifacts share a limit of four active download connections across
files and ranges, including single-connection fallbacks. Ranges must match the
expected size and an object validator or the expected SHA-256 before the file is published. Models retain signed-URL refresh and
cancellation handling. Existing public-mirror partial downloads continue
sequentially; servers without range support use a single connection.

## Common Workflows

Set up SDK containers:

```bash
sima-cli sdk setup
sima-cli sdk neat
```

When pairing with `sdk setup --devkit`, a new DevKit host key is automatically
recorded in the SDK user's `~/.ssh/known_hosts`, including during unattended
setup or after SDK container recreation. Subsequent pairing preserves saved
keys and rejects a changed key at the same address and SSH port. After a device
reimage or key rotation, verify the replacement fingerprint before explicitly
updating that entry. For environments requiring verified trust before the first
connection, provision verified host keys in the SDK user's `known_hosts`.

Install Model Compiler from package metadata:

```bash
# amd64 host
sima-cli install -v 2.1.2 tools/model-compiler/amd64
# arm64 host
sima-cli install -v 2.1.2 tools/model-compiler/arm64
```

Download or install Neat artifacts:

```bash
sima-cli neat download core main
sima-cli install --neat core main
```

Update a DevKit:

```bash
sima-cli update -v 2.1.1 -y
```

Explore Model Zoo and App Zoo content:

```bash
sima-cli modelzoo list
sima-cli appzoo list
```

## Top-Level Commands

| Command | Description | Docs |
| --- | --- | --- |
| `sima-cli appzoo` | Access sample apps from the App Zoo. | [docs](docs/sima-cli/commands/sima-cli-appzoo.md) |
| `sima-cli bootimg` | Prepare a bootable image for the SiMa DevKit. | [docs](docs/sima-cli/commands/sima-cli-bootimg.md) |
| `sima-cli device` | Discover nearby SiMa.ai devices on the local network. | [docs](docs/sima-cli/commands/sima-cli-device.md) |
| `sima-cli download` | Download a file or folder from a URL. | [docs](docs/sima-cli/commands/sima-cli-download.md) |
| `sima-cli install` | Install SiMa packages from metadata. | [docs](docs/sima-cli/commands/sima-cli-install.md) |
| `sima-cli login` | Authenticate with the SiMa Developer Portal. | [docs](docs/sima-cli/commands/sima-cli-login.md) |
| `sima-cli logout` | Remove cached credentials and config files. | [docs](docs/sima-cli/commands/sima-cli-logout.md) |
| `sima-cli mla` | Machine Learning Accelerator utilities. | [docs](docs/sima-cli/commands/sima-cli-mla.md) |
| `sima-cli modelzoo` | Access models from the Model Zoo. | [docs](docs/sima-cli/commands/sima-cli-modelzoo.md) |
| `sima-cli neat` | Discover, download, and install Neat build artifacts. | [docs](docs/sima-cli/commands/sima-cli-neat.md) |
| `sima-cli network` | Configure DevKit network settings. | [docs](docs/sima-cli/commands/sima-cli-network.md) |
| `sima-cli nvme` | Perform NVMe operations on the Modalix DevKit. | [docs](docs/sima-cli/commands/sima-cli-nvme.md) |
| `sima-cli packages` | Manage the local sima-cli package registry. | [docs](docs/sima-cli/commands/sima-cli-packages.md) |
| `sima-cli playbooks` | Install and manage coding-agent playbooks. | [docs](docs/sima-cli/commands/sima-cli-playbooks.md) |
| `sima-cli sdcard` | Prepare SD card storage. | [docs](docs/sima-cli/commands/sima-cli-sdcard.md) |
| `sima-cli sdk` | Manage and launch SDK container environments. | [docs](docs/sima-cli/commands/sima-cli-sdk.md) |
| `sima-cli selfupdate` | Update sima-cli manually. | [docs](docs/sima-cli/commands/sima-cli-selfupdate.md) |
| `sima-cli serial` | Connect to the UART serial console of a DevKit. | [docs](docs/sima-cli/commands/sima-cli-serial.md) |
| `sima-cli update` | Update a SiMa DevKit or remote device. | [docs](docs/sima-cli/commands/sima-cli-update.md) |

## Development

Install development dependencies and run tests:

```bash
pip install -e ".[dev]"
python -m pytest tests/unit
```

Regenerate CLI documentation:

```bash
python scripts/generate_cli_markdown_docs.py
```

`build.sh` also regenerates the command docs before building the package.

## Requirements

- Python 3.8 or newer
- Docker for SDK container workflows
- DevKit connectivity for device update, serial, network, and boot-image workflows

For command-specific prerequisites, see the generated [command reference](docs/sima-cli/index.md).

## Support

For issues and feature requests, use the sima-cli GitHub repository or contact the SiMa.ai development team.

### Remote browser certificate help

SDK setup stages a verified public mkcert CA certificate alongside the SDK HTTPS
certificate. SDK images with browser certificate help can offer that file for
download on the sign-in page, with instructions for the browser computer.
Only the public certificate is staged; the mkcert private key stays on the host.
If the issuing CA cannot be verified, including a plain self-signed fallback,
no CA download is published. Re-running setup refreshes the staged file even
when the existing HTTPS certificate does not need to be reissued.
