Development

niso provides fast development workflows with watch mode, dev run (without systemd), and cross-platform VM support.

Dev run#

Run your application with niso isolation but without creating a systemd service. Useful for quick testing:

bash
# Run with isolation in the foreground$ niso dev run ./target/release/my-api --port 8080:8080# Mount your source directory for live editing$ niso dev run ./my-api --mount ./config:/config -- --config /config/dev.toml# Run with environment variables$ niso dev run ./my-api -e DATABASE_URL=postgres://localhost/mydb
Note
niso dev run applies namespaces directly (not through systemd). On macOS, it runs the process natively without isolation.

Watch mode#

Watch for file changes, rebuild, and restart automatically:

bash
$ niso dev watch \    --build "cargo build --release" \    --run "target/release/my-api"  Watching for changes...  [src/main.rs changed]  Building...  ✓ Build complete (2.1s)  ✓ Restarted my-api

Quick deploy cycle#

Pack, install, activate, and tail logs in one command:

bash
$ niso dev deploy  ✓ Packed my-api-1.0.0-x86_64.niso (8.2 MB)  ✓ Installed my-api 1.0.0  ✓ Activated my-api  Following logs...# With a local registry$ niso dev deploy --registry local

Local registry#

niso includes a file-based local registry at ~/.niso/local-registry/ for development. Push and pull without running a registry server:

bash
# Push to local registry$ niso push my-api-1.0.0-x86_64.niso --registry local# Pull from local registry$ niso pull my-api --registry local

Cross-platform development#

niso commands work on macOS and Windows. Commands that don't require Linux kernel features run natively. Isolation commands use a lightweight VM:

CommandmacOS nativeNeeds VM
niso pack
niso push / pull
niso inspect / verify
niso search
niso fleet deploy
niso activate / run
niso stack up
niso net / volume
niso logs / status

VM management#

The development VM is lightweight and fast-booting:

bash
# Start the VM$ niso machine start  Starting niso VM... ready in 1.2s# Configure resources$ niso machine config --cpus 4 --memory 4G --disk 20G# Check status$ niso machine status  Status:  running  CPUs:    4  Memory:  4 GB  Disk:    20 GB (3.2 GB used)# Stop the VM$ niso machine stop# Update VM kernel/tools$ niso machine update# Reset to clean state$ niso machine reset

VM backends

niso selects the best VM backend for your platform:

  • macOS — Apple Virtualization Framework (fastest, hardware-accelerated)
  • Windows (non-WSL) — Hyper-V
  • WSL2 — runs natively, no VM needed
  • Fallback — QEMU (works everywhere, slower)

Project initialization#

Scaffold a project with language-specific templates:

bash
# From template$ niso init --template rust$ niso init --template node$ niso init --template python$ niso init --template go# From existing systemd service$ niso init --from-systemd /etc/systemd/system/my-app.service

.nisoignore#

Exclude files from packages. Same syntax as .gitignore:

.nisoignore
# Build artifactstarget/node_modules/__pycache__/*.pyc# Version control.git/# IDE.vscode/.idea/# Environment.env.env.local# Logs*.log