Skip to main content

SDK Setup and Extension Management

Choose optional SDK services, browser VS Code extensions, and the Model Compiler installation source when running sima-cli sdk setup.

Command reference: sima-cli sdk setup

Build and share a container image​

When you set up an SDK 3.0 or newer with a DevKit, sima-cli offers to create a small local container registry. The registry stores images on the host so they remain available when the SDK container is replaced.

The registry starts on port 5050. If that port is already in use, sima-cli automatically selects the next free port and prints the address it selected.

Setup also makes two addresses available inside the SDK shell:

  • SIMA_CONTAINER_REGISTRY is the address the SDK uses to push an image.
  • SIMA_DEVKIT_CONTAINER_REGISTRY is the address the DevKit uses to pull the same image.

Define your application in a Dockerfile, then build and push an ARM64 image from inside the SDK:

docker buildx build \
--platform linux/arm64 \
--tag "${SIMA_CONTAINER_REGISTRY}/hello-neat:develop" \
--push \
.

Use dk container deploy to download the image from the same registry and run it on the connected DevKit:

dk container deploy hello-neat:develop \
--detach \
--name hello-neat \
--network host

The short image name is enough. dk uses the DevKit registry address configured by sima-cli. Use dk container run hello-neat:develop ... to start an image without explicitly refreshing it first.

The registry uses HTTP on the local development network. It is exposed only on loopback for SDK use and on the DevKit-facing network path; it is not published on every host interface.

On macOS, setup distinguishes physical LAN routes from Cloudex or other routed tunnels. A physical route uses a Colima bridged address. A utun, WireGuard, or similar tunnel cannot carry an Ethernet bridge, so setup keeps Colima in shared mode and enables network.hostAddresses instead. This lets the SDK container follow the Mac's tunnel route while publishing the registry on the Mac tunnel address used by the DevKit. Because Colima normally copies the tunnel's subnet prefix, setup removes the broad subnet route from the VM's local routing table while retaining the Mac address as a /32 local route; otherwise the VM can mistake the DevKit peer for a local address. The repair is persisted across Colima restarts. If the active profile was previously bridged for a physical connection, setup uses the guarded profile-recreation workflow to switch it to shared mode while preserving its verified separate Docker data disk. Profiles that cannot be recreated safely, including Kubernetes-enabled profiles, are not changed. Reconnect the tunnel and rerun setup if its host address changes.

SDK setup does not install or configure Docker on the DevKit. The first dk container command handles any required Docker installation and configures Docker to use the local registry, restarting Docker only if the registry setting changes. This keeps Docker completely optional for users who do not use container deployment. Installing Docker requires explicit approval and Internet access to Docker's Debian repository. Passwordless sudo is not a prerequisite; sima-cli configures it for the DevKit user during setup.

Use --no-container-registry to skip this step. It does not stop or remove an existing registry. To select a different port, run setup again with --container-registry-port <port>. Existing stored images are kept when the port changes.

Edgematic Studio​

On Neat SDK images, setup installs Edgematic Studio, publishes its port, and starts it, without a prompt. This also applies to -y and --noninteractive. The summary shows Studio's URL in an Edgematic Studio panel. Studio uses host port 8088, or another free port when 8088 is taken.

Sign in to your coding agent from Studio's settings before the first chat. Studio does not restart with the container; if its URL stops loading, run activate-edgematic-studio in the SDK container shell.

Use --no-edgematic-studio to skip Studio and leave its port unpublished. Use --edgematic-studio-port to publish only the port for a later manual install. --minimal and --no-insight also skip Studio. These choices apply when the container is created, because Docker port mappings cannot change afterwards.

If the Studio install fails, setup continues and prints the command to install it later from the SDK container shell.

Browser VS Code extension selection​

Neat is installed automatically for the current SDK user, without a prompt. New SDK images bundle the extension and setup copies it locally; older images use the existing download installer. --minimal skips extension setup.

Interactive setup offers optional Codex and Claude extensions. Use Space to select extensions and Enter to confirm. Both start unchecked; selecting none skips coding agent installation. Existing unselected extensions remain installed.

For automation, install the coding agents without the checklist:

sima-cli sdk setup --noninteractive --all-extensions

--all-extensions bypasses only extension selection. Use --noninteractive to skip other questions. It also installs extensions when reusing an existing SDK container. Without it, -y and --noninteractive skip optional extensions unless the legacy SIMA_CLI_INSTALL_CODEX_EXTENSION setting requests them. --all-extensions cannot be combined with --minimal and does not change Edgematic Studio or Model Compiler selection.

Browser VS Code extension versions​

On code-server (SDK 3.0+), Codex installs the latest available release by default and remains unpinned. An explicit version override still pins that version. Older OpenVSCode images retain the Codex compatibility pin. Claude continues to use an exact version pin. Rerunning setup replaces a different version; a matching version is retained and pinned without another download for exact-version selections. SDK images can declare validated versions in /etc/sima-neat/vscode-extensions.json:

{
"schema_version": 1,
"extensions": {
"openai.chatgpt": "26.5825.51511",
"anthropic.claude-code": "2.1.266"
}
}

The manifest does not opt users into installation. Schema version 1 requires exact versions for both IDs. Older images without a manifest use Codex 26.5825.51511 and Claude 2.1.266 as compatibility fallbacks. An unreadable or invalid manifest reports an error and skips coding agent installation while the rest of setup continues. Failed Codex or Claude install commands are retried up to three times using the selected target and normal TLS verification.

Environment overrides take precedence:

VariableBehavior
SDK_SKIP_CODING_AGENT_INSTALLSet to 1, true, yes, or on to skip Codex and Claude extension installation, including prompts and --all-extensions. Neat setup still runs; existing agents are not removed.
SIMA_CLI_CODEX_EXTENSION_IDOverride Codex with publisher.extension@exact-version; empty disables it unless --all-extensions is used.
SIMA_CLI_CLAUDE_EXTENSION_IDOverride Claude with publisher.extension@exact-version; empty disables it unless --all-extensions is used.
SIMA_CLI_INSTALL_CODEX_EXTENSIONAutomatically select extension installation without the checklist.

A bare Codex ID (or openai.chatgpt@latest) uses the latest release on code-server. Other bare built-in IDs use the SDK/default pin; other IDs require an explicit version. --minimal skips optional extension installation. Setup verifies installed versions, writes each selected extension's metadata.pinned flag (false for latest Codex), and restarts browser VS Code; reload an open browser tab afterward.

Model Compiler installation source​

Setup looks only in the current working directory for model-compiler-arm64.zip or model-compiler-amd64.zip, based on the SDK container architecture. Extracted folders, parent directories, workspace ZIPs, and the other architecture are not searched.

When a valid local ZIP is found, setup offers local, online, or skip. Without a valid ZIP, it offers online or skip, with skip as the Enter default.

FlagsLocal ZIP availableNo valid local ZIP
--noninteractiveInstall localSkip
--noninteractive -yInstall localInstall online
-yInstall localInstall online

Online unattended installation requires -y. For legacy SDK sources, authenticate on the host with sima-cli login. --minimal, --no-model-compiler, and --no-model-sdk always skip installation.

The official ZIP must contain install_modelsdk_wheels.sh, source.json, manifest.txt, and package payloads at its root, and it must match the compiler version selected for the SDK. The archive is extracted to temporary host storage and copied into temporary Linux-container storage, so allow room for both copies. Temporary data is removed after success or failure and the original ZIP is kept. A failed local install never falls back online. System packages and Python prerequisites may still require network access.