Skip to content

Repository files navigation

nddev-mimocode-app

Public NDDev setup manager for MiMo Code.

The manager works only on an explicit absolute target directory. It installs and launches target-owned MiMo Code software, projects the nddev-builder content setup, and switches between the default full-auto profile and the safe profile without reading live user configuration or credentials.

Production software install, update, and launch support the canonical NDDev product hosts macos-arm64, macos-x64, ubuntu-glibc-arm64, and ubuntu-glibc-x64. Linux hosts must report structured /etc/os-release ID=ubuntu and glibc; non-Ubuntu Linux, musl Linux, Windows, and unsupported architectures fail before network, staging, or runtime. No official Ubuntu version floor is published or claimed. The public baseline preserves only the official artifacts selected for supported product hosts. For every target-bound command the supported-host preflight runs before target filesystem inspection; only lexical absolute-target validation precedes external lifecycle coordination, except for the documented cold read-only case where no product anchor exists yet. Mutating commands publish a complete global.lock product anchor and canonical-target external marker with atomic no-replace binding. Their final-path publication is the rollback commit point, so published anchors are monotonic rendezvous files; a later mutating opener recovers only a bounded same-inode publication alias after locking the final anchor. Read-only commands fail closed if they observe an incomplete hard-link publication state and leave the namespace unchanged. Read-only status, plan, and software-status do not create anchors: a cold read uses a no-create path and retries if a concurrent mutation publishes global.lock, while a seeded read opens existing anchors no-follow/no-create. Read-only commands create neither target-specific external markers nor target-internal lock state.

Managed launch and staged probes set manager-owned MiMo Code flags that disable project config discovery, Claude compatibility loaders, external skill scans, external plugin origins, autoupdate, model/LSP fetches, provider-env autodiscovery, and upstream analysis telemetry. Callers and profiles cannot override those values. Known unmanaged project extension paths such as .mimocode/tui, .claude, .agents/skills, .codex/skills, and .opencode/skills are rejected before launch so only the managed nddev-builder content under MIMOCODE_CONFIG_DIR participates. Unknown files inside that managed config directory are also rejected before launch.

Usage

python3 cli-tools/nddev_mimocode.py list --json
python3 cli-tools/nddev_mimocode.py plan --target /absolute/target --json
python3 cli-tools/nddev_mimocode.py install --target /absolute/target --json
python3 cli-tools/nddev_mimocode.py update --target /absolute/target --json
python3 cli-tools/nddev_mimocode.py switch --profile safe --target /absolute/target --json
python3 cli-tools/nddev_mimocode.py migrate --target /absolute/target --json
python3 cli-tools/nddev_mimocode.py restore --backup 0 --target /absolute/target --json
python3 cli-tools/nddev_mimocode.py remove --target /absolute/target --json

update is the setup-content update command. It reconciles an existing managed target to the current module build for the target's recorded setup and profile, creates a backup only when managed files change, verifies exact postconditions, and is a true no-op only when the target is already current and no post-commit cleanup is pending. Target-owned MiMo Code software updates use update-cli instead.

When --json is present, invalid commands, missing required arguments, and argument type errors return exit code 2 with a JSON error on stdout and an empty stderr stream.

If a lifecycle command reaches the desired active state but cannot finish irreversible cleanup, it leaves an immutable manager-owned cleanup journal under .nddev-mimocode-cleanup and returns cleanup_pending: true. Read-only status, plan, and software-status only validate and report that bounded state; they never repair or drain it. The next mutating target-bound command drains a valid journal before active changes, and malformed cleanup state fails closed with exit code 2.

Before any visible preserve/stage move, mutating lifecycle commands publish a bounded recovery intent so a later exclusive mutator can restore or complete the interrupted operation after process death. Read-only commands never repair that state; they fail closed and leave the namespace unchanged. Exact policy values are owned by config/nddev-contract.json and cli-tools/nddev_mimocode.py.

Target-owned software lifecycle:

python3 cli-tools/nddev_mimocode.py software-status --target /absolute/target --json
python3 cli-tools/nddev_mimocode.py install-cli --target /absolute/target --json
python3 cli-tools/nddev_mimocode.py update-cli --target /absolute/target --json
python3 cli-tools/nddev_mimocode.py remove-cli --target /absolute/target --json

Launch forwards stdio and the child exit code:

python3 cli-tools/nddev_mimocode.py launch --target /absolute/target -- [args...]

Use config/nddev-contract.json, build/version.json, and references/mimocode-baseline.json for exact runtime, release, platform, permission, and installer facts. Use cli-tools/nddev_mimocode.py for the enforced lifecycle behavior.

Validation

python3 cli-tools/validate_public_contracts.py

The public validator is dependency-free, archive-safe, and does not install, launch, authenticate, or contact live MiMo Code services. It disables bytecode writes before importing local code, so the documented command leaves no __pycache__ residue in a clean checkout.

About

NDDev MiMo Code setup module skeleton

Topics

Resources

Security policy

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages