Overview
NullClaw’s sandbox system:Landlock
Native Linux kernel LSM (no dependencies)
Firejail
User-space sandboxing with profiles
Bubblewrap
Lightweight container runtime
Docker
Full container isolation
Quick Setup
Auto-Detection (Recommended)
config.json
- Landlock (native kernel, fastest)
- Firejail (if installed)
- Bubblewrap (if installed)
- Docker (if daemon running)
- None (application-layer only)
- Docker (if daemon running)
- None (application-layer only)
Landlock requires Linux kernel 5.13+ and is the fastest option with zero external dependencies.
Sandbox Backends
Landlock (Native Linux)
Kernel-level access control (Linux 5.13+):config.json
- Native kernel LSM (Linux Security Module)
- Zero external dependencies
- Fastest startup (<0.1ms overhead)
- Restricts filesystem access to workspace
- No network isolation (use with
autonomysettings)
- Read/write only within workspace directory
- No access to
/etc,/home/*, system directories - Symlink escape detection
- Null byte injection prevention
Firejail
User-space sandboxing with profiles:config.json
- Ubuntu/Debian
- Fedora
- Arch
- Filesystem isolation (
--private,--whitelist) - Network namespaces (
--net=none) - Process isolation (
--seccomp) - Profile-based configuration
Bubblewrap
Lightweight container runtime:config.json
- Ubuntu/Debian
- Fedora
- Arch
- Minimal container runtime
- Namespace isolation
- Bind mounts for workspace access
- No daemon required
Docker
Full container isolation:config.json
- Complete process isolation
- Network isolation configurable
- Resource limits (CPU, memory, disk)
- Read-only root filesystem
- Custom base images
None (Application-Layer Only)
Disable OS-level sandboxing:config.json
- Workspace scoping (
workspace_only: true) - Command allowlists (
allowed_commands) - Path allowlists (
allowed_paths) - Risk assessment (block
rm -rf /,dd, etc.)
Autonomy & Resource Limits
Workspace Scoping
config.json
supervised: Require approval for medium-risk actionsfull: Auto-approve low/medium-risk (still blocks high-risk)restricted: Approve even low-risk actions
true: Block access outside~/.nullclaw/workspace/false: Allow access toallowed_paths
Command Allowlists
config.json
workspace_only: true).
Blocked commands (always):
rm -rf /dd if=/dev/zero:(){ :|:& };:(fork bomb)chmod -R 777 /- Other destructive patterns
Resource Limits
config.json
- Docker:
--memory,--cpus - Firejail:
--rlimit-*flags - Bubblewrap: cgroup limits
- Landlock: Not enforced (use
autonomysettings)
Audit Logging
Track all sandboxed operations:config.json
- Tool executions
- Filesystem access
- Network requests
- Permission denials
- Security policy changes
Security Layers
NullClaw enforces defense-in-depth:1
Gateway Pairing
6-digit one-time code required for API access.
2
Channel Allowlists
Empty allowlist denies all messages (explicit opt-in).
3
Workspace Scoping
Filesystem access restricted to workspace directory.
4
Sandbox Isolation
OS-level isolation via landlock/firejail/bubblewrap/docker.
5
Resource Limits
CPU, memory, disk, process limits enforced.
6
Audit Trail
Signed event log with configurable retention.
Configuration Profiles
Development (Relaxed)
config.json
Production (Strict)
config.json
Edge/Embedded (Minimal)
config.json
Troubleshooting
Sandbox Not Available
Permission Denied
Command Blocked
Check allowlist:Docker Network Issues
Change network mode:Landlock Not Detected
Verify kernel support:Advanced Configuration
Custom Docker Image
config.json
Firejail Custom Profile
Create~/.nullclaw/firejail.profile:
Multi-Tier Sandboxing
Combine sandbox backends with tool-specific overrides:config.json
Benchmarks
Sandbox startup overhead (measured on Linux, 0.8 GHz edge core):
Binary size impact:
- Landlock: +2 KB (compiled in)
- Others: No size impact (external binaries)
Next Steps
Hardware Integration
Connect Arduino, Raspberry Pi, STM32
AI Providers
Configure OpenAI, Anthropic, OpenRouter