nono-cli-0.10.0 is not a library.
nono-cli
CLI for capability-based sandboxing using Landlock (Linux) and Seatbelt (macOS).
Installation
Homebrew (macOS)
Cargo
From Source
Usage
# Allow read+write to current directory
# Separate read and write permissions
# Multiple paths
# Block network access
# Use a built-in profile
# Start an interactive shell inside the sandbox
# Check why a path would be blocked
# Dry run (show what would be sandboxed)
Built-in Profiles
| Profile | Command |
|---|---|
| Claude Code | nono run --profile claude-code -- claude |
| OpenCode | nono run --profile opencode -- opencode |
| OpenClaw | nono run --profile openclaw -- openclaw gateway |
Profile Inheritance
User profiles can extend built-in or other user profiles with the extends field. The child inherits all settings from the base and only declares additions or overrides.
Save to ~/.config/nono/profiles/my-claude.json, then:
Merge semantics
- Lists (filesystem paths, security groups, rollback patterns): appended and deduplicated
- HashMaps (credentials, hooks): merged, child wins on same key
- Booleans (
network.block,interactive): OR — either activates - Scalars (
meta,network_profile): child overrides
Chaining
Profiles can form chains (up to 10 levels deep). Circular dependencies are detected and rejected.
my-dev.json → team-base.json → claude-code (built-in)
Command Blocking
Dangerous commands are blocked by default:
| Category | Commands |
|---|---|
| File destruction | rm, rmdir, shred, srm |
| Disk operations | dd, mkfs, fdisk, parted |
| Permission changes | chmod, chown, chgrp |
| Privilege escalation | sudo, su, doas |
Override per invocation with --allow-command, or permanently in a profile with allowed_commands:
# Per invocation
# Via profile
Documentation
License
Apache-2.0