Security & Privacy
Learn how Arc0 protects your code and data with end-to-end encryption, local-only architecture, and secure WebSocket tunnels. Your codebase never leaves your machine.
Your code stays on your machine—Arc0 only streams agent conversations and diffs, never your full codebase.
Architecture Overview
┌─────────────────────────────────────────────────────────┐
│ Your Machine (Private) │
│ │
│ ┌──────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Codebase │ │ Arc0 CLI │ │ Coding Agent │ │
│ │ │ │ │ │ │ │
│ │ (stays │───▶│ (filters & │◀──▶│ (runs here) │ │
│ │ here) │ │ streams) │ │ │ │
│ └──────────┘ └──────┬───────┘ └──────────────┘ │
│ │ │
└─────────────────────────┼──────────────────────────────┘
│
WSS Tunnel (encrypted)
(diffs, prompts,
NOT full code)
│
▼
┌──────────────┐
│ Your Phone │
│ (Arc0 App) │
└──────────────┘What Gets Sent
Arc0 CLI only streams to your phone:
| Sent | Not Sent |
|---|---|
| Agent questions | Your full codebase |
| Code diffs | Unchanged files |
| Error messages | Environment variables |
| Status updates | API keys/secrets |
| Session metadata | Git history |
Example
If your agent modifies src/auth.ts, Arc0 sends:
- The diff (changes only)
- The filename
- The agent's question about the change
Arc0 does NOT send:
- The full file contents
- Other files in your project
- Your
.envfile - Git credentials
Data in Transit
All data between Arc0 CLI and the mobile app is encrypted:
- WSS (WebSocket Secure) for all connections
- End-to-end encryption for message content
- Perfect forward secrecy for session keys
Tunnel Connection
Arc0 uses a secure tunnel for connectivity:
- Traffic is encrypted end-to-end via WSS
- Works behind NAT, firewalls, corporate networks
- Low latency for real-time communication
- Relay servers only see encrypted blobs—we cannot read your data
Data at Rest
On Your Machine
Arc0 CLI stores minimal data locally:
- Configuration file (
~/.arc0/config.yaml) - Session logs (configurable retention)
- Pairing credentials (encrypted)
# Configure data retention
storage:
session_retention: 7d # Delete after 7 days
log_retention: 30d
encrypt_logs: trueOn Your Phone
The Arc0 app stores:
- Pairing credentials (encrypted, in device keychain)
- Session cache (configurable)
- App preferences
Data is encrypted using device encryption (iOS Keychain, Android Keystore).
Clearing Data
Clear all local data:
# On your machine
arc0 clear-data
# On your phone
Settings → Arc0 → Clear DataAuthentication
Device Pairing
Devices are paired using QR codes that contain:
- A one-time pairing token
- CLI's public key
- Connection information
The QR code is valid for 5 minutes and single-use.
Session Authentication
After pairing:
- Devices authenticate using stored credentials
- Sessions are validated with signed tokens
- Invalid sessions are rejected
Revoking Access
Unpair a device:
# List paired devices
arc0 devices
# Remove a device
arc0 unpair <device-id>Or from the app: Settings → Devices → Remove
Open Source
Arc0 CLI is fully open source:
- Repository: github.com/amicalhq/arc0
- License: MIT
- Security audits: Welcomed
You can:
- Audit the code yourself
- Build from source
- Self-host entirely
- Contribute security improvements
Found a security issue? Please report it responsibly via security@arc0.ai.
No Server Dependency
Arc0 works without our servers:
- CLI runs locally on your machine
- Mobile app connects directly via tunnel
- No account required
- No telemetry by default
Optional Telemetry
If enabled, we collect:
- App version
- Error reports (opt-in)
- Feature usage (anonymized)
Never:
- Your code
- Your prompts
- Your responses
Disable telemetry:
telemetry:
enabled: falseBest Practices
Development Machine
- Keep Arc0 CLI updated for security patches
- Use strong device passwords
- Enable disk encryption
- Review paired devices regularly
Mobile App
- Enable device lock (PIN, biometric)
- Use app lock feature (Settings → Security)
- Don't share QR codes
- Unpair lost devices immediately
Network
- Use trusted networks when possible
- Enable TLS for remote connections
- Consider VPN for sensitive work
- Firewall the CLI port when not in use
Compliance
Arc0's architecture supports compliance requirements:
| Requirement | How Arc0 Helps |
|---|---|
| Data residency | All data stays on your infrastructure |
| Access control | You control device pairing |
| Audit logging | Session logs available |
| Right to erasure | Clear data commands |
Arc0 is a tool—compliance ultimately depends on how you configure and use it. Consult your compliance team for specific requirements.
Threat Model
What Arc0 Protects Against
- Network eavesdropping (encryption)
- Unauthorized device access (pairing)
- Data leakage (minimal data streaming)
- Session hijacking (signed tokens)
What Arc0 Doesn't Protect Against
- Compromised development machine
- Physical access to your devices
- Malicious CLI modifications (verify source)
- Agent vulnerabilities (separate concern)