Quick Comparison
| Aspect | nono | Docker Container |
|---|---|---|
| Startup time | ~0ms | ~100-500ms |
| Setup required | None | Dockerfile, daemon |
| Filesystem model | Path-level allow/deny | Separate filesystem |
| Works on host files | Yes (directly) | Requires volume mounts |
| Credential protection | Automatic blocklist | Manual (don’t mount) |
| Network isolation | On/off | Full namespace |
| Resource limits | No | Yes (cgroups) |
| Process isolation | No | Yes (PID namespace) |
When to Use nono
nono excels when you need:Zero-Latency Startup
Direct Access to Your Working Directory
AI coding agents need to read and modify your actual source files. With nono, this works naturally:Automatic Credential Protection
nono blocks sensitive paths by default, even if you allow a parent directory:Zero Configuration
nono requires no setup - just install and run:- Docker daemon running
- Dockerfile for custom images
- Understanding of volumes, networks, users
- Image pulls and builds
When to Use Containers
Containers are better when you need:Full Environment Isolation
If the agent needs specific system libraries, language runtimes, or tools:Resource Limits
Containers can limit CPU, memory, and I/O:Process Isolation
Containers have separate PID namespaces - processes inside can’t see or signal host processes:Reproducible Environments
For CI/CD or sharing exact environments:Using Both Together
For maximum security, combine nono with containers:- Container’s namespace isolation
- Container’s resource limits
- nono’s path-level filesystem control
- nono’s automatic credential blocking
Threat Model Comparison
What nono Protects Against
- Reading/writing files outside allowed paths
- Accessing credentials (~/.ssh, ~/.aws, etc.)
- Running blocked commands (rm, dd, etc.)
- Network access (when blocked)
What Containers Protect Against
- All of the above (but with a fair amount of configuration)
- Process visibility and signaling
- Resource exhaustion (with limits)
- Environment contamination
What Neither Protects Against
- Kernel vulnerabilities
- Side-channel attacks
- Prompt Injection (which no one can fully prevent)
- Social engineering (agent convinces you to run dangerous command)
Performance Comparison
Startup Time
Memory Overhead
- nono: ~0 MB (just applies sandbox and execs)
- Docker: ~10-50 MB per container (runtime overhead)
Disk Usage
- nono: ~2 MB binary
- Docker: 100 MB+ per image (varies widely)
Migration Guide
From Docker to nono
If you’re currently using Docker just for sandboxing:Decision Flowchart
Summary
| Use Case | Recommendation |
|---|---|
| AI coding agents (Claude, Aider, etc.) | nono |
| CI/CD pipelines | Containers |
| Interactive development | nono |
| Untrusted code execution | Both |
| Reproducible environments | Containers |
| Quick sandboxing, zero setup | nono |
| Resource-limited execution | Containers |
| Maximum security | Both |
Next Steps
- Security Model - Understanding nono’s guarantees
- Profiles - Pre-configured sandboxes for common agents
- Installation - Get started with nono
