Documentation
DropOps provides AI-powered infrastructure execution with Zero Trust security controls. This document covers architecture, deployment options, security model, and operational procedures.
Overview
DropOps is a Zero Trust AI Execution platform with Just-in-Time Privileges and Local-First Audit Architecture. Every layer is designed to protect your systems and data.
Security Architecture
| Security Layer | Protection | Description |
|---|---|---|
| Outbound-Only Connectivity | Network Isolation | Operators never accept inbound connections. No firewall exceptions, no port forwarding, no VPNs. |
| Human-in-the-Loop | Command Control | Every state-changing command requires explicit user approval before execution. |
| DropOps Sentinel | Data Scrubbing | Zero-trust filter removes credentials, IPs, PII from all cloud transmissions. 30+ scrubbing patterns. |
| Local-First Audit (LFAA) | Data Sovereignty | Full command output stored locally on your operator. Only safe metadata reaches the cloud. |
| Session Binding | Identity Protection | Operators bind to system fingerprints. API keys are non-transferable across machines. |
| Replay Protection | Request Integrity | Timestamp validation and nonce tracking prevent captured requests from being replayed. |
Deployment Options
| Option | Description | Commands | Tier | Slots |
|---|---|---|---|---|
| Solo Operator | ~8MB reference implementation for local system administration (cloud CLI blocked) | bash, docker, systemctl, etc. |
Free: 3 / Personal: 10 / Pro: 50 | 1 |
| Cloud Operator Binary | Same binary with --cloud flag (advanced users) |
aws, gcloud, terraform, kubectl + all Solo commands |
Personal+ | 1* |
| Cloud Operator for AWS | First cloud release with Zero Standing Privileges (recommended) | aws, terraform, kubectl, ansible, helm |
Personal+ | 1* |
*Cloud Operators use a separate slot allocation. Personal: 1 cloud slot. Professional: 5 cloud slots.
Getting Started
Prerequisites
- Authentication - Google account (OAuth 2.0)
- Solo Operator - Linux system with port 443 outbound to operator.dropops.ai
- Cloud Operator for AWS - AWS account with EC2 launch permissions
Deployment Workflow
- Authenticate - Sign in via Google OAuth at dropops.ai
- Obtain API Key - From Operator Panel, copy an available operator's API key
- Deploy Operator - Download binary and run with API key, or deploy CloudFormation stack for AWS
- Bind to Session - Once operator shows Active status, bind it to your web session
- Execute with Approval - Issue commands in natural language; all state-changing operations require explicit approval
Detailed deployment procedures for each operator type are covered in the sections below.
Login & Authentication
User Authentication
DropOps uses Google OAuth 2.0 for user authentication. Web sessions are encrypted, bound to browser context, and expire after inactivity. Session hijacking from a different browser context is rejected.
Operator Authentication
Each operator authenticates using a unique API key from the Operator Panel. The same key is used for both binary download and operator startup. Keys are revocable at any time for immediate disconnection.
System Fingerprinting
Operators are bound to their host system through cryptographic fingerprinting. Once an operator authenticates from a machine, that API key is tied to that system's identity. API keys are non-transferable across machines, preventing credential theft from being useful across systems. To move an operator to a new machine, use a fresh operator slot or re-register the existing one.
Session Independence
Web sessions and operator sessions are independent. Logging out of the dashboard does not disconnect running operators. Operators continue execution until explicitly revoked or stopped.
Solo Operator
The Solo Operator is the Go reference implementation - a ~8MB stateless execution agent for local system administration on Linux. Cloud CLI commands (aws, gcloud, terraform) are intentionally blocked to enforce clear security boundaries. For cloud operations, use the Cloud Operator for AWS with Zero Standing Privileges.
Capabilities
- Shell Execution - bash, sh, and standard Linux commands
- File Operations - Create, read, update, delete with approval workflow
- Service Management - systemctl, docker, process management
- Package Management - apt, yum, dnf, pip (requires appropriate privileges)
Deployment
Download and run via the drop script. The API key is used for both download and authentication:
curl -fsSL https://dropops.ai/operator/drop | bash
When prompted, provide an Operator API Key from the Operator Panel. The binary downloads, verifies checksum integrity, and starts automatically. Run as foreground process, in screen/tmux, or as a systemd service.
CLI Usage
Usage: dropops-operator [options]
Options:
-k, --key <key> API key (or set DROPOPS_OPERATOR_API_KEY)
-S, --session <id> Pre-authorized session ID (from device link auth)
-e, --endpoint-url <env> Environment: test, dev (default: prod -> operator.dropops.ai)
-c, --cloud Cloud operator mode (for AWS/cloud CLI)
-p, --provider <name> Cloud provider: aws, gcp, azure (default: aws)
-s, --local-storage Store audit data locally instead of cloud (default: off)
-l, --log <level> Log level: info, error, debug (default: info)
-v, --version Show version
Vault Management:
--rekey-vault Re-encrypt vault with new API key
--old-key <key> Old API key (required for --rekey-vault)
--verify-vault Verify vault integrity
--reset-vault Reset vault (DESTROYS ALL DATA)
The operator runs with the privileges of the user who starts it. For operations requiring root access (package installation, service management), start with sudo ./dropops-operator.
Cloud Operator Binary (Advanced)
For advanced users who manage their own credential security: the same ~8MB binary with the --cloud flag unlocks cloud CLI tools. Runs on any Linux system with port 443 outbound to operator.dropops.ai - any cloud provider, any environment.
Unlocked Commands
In addition to all Solo Operator capabilities: aws, gcloud, az, terraform, kubectl, helm, ansible.
Requirements
- Cloud CLIs - Must be installed on the host system
- Credentials - Configured via standard methods (e.g.,
~/.aws/credentials, environment variables, instance metadata) - Tier - Personal or higher (uses 1 cloud slot)
Usage
./dropops-operator --cloud --key YOUR_API_KEY
./dropops-operator --cloud --provider gcp --key YOUR_API_KEY
./dropops-operator --cloud --provider azure --key YOUR_API_KEY
The --provider flag defaults to aws. Use gcp or azure for other cloud platforms. See the Solo Operator CLI Usage section for all available flags.
Security Note: Unlike the Cloud Operator for AWS, this mode does not enforce Zero Standing Privileges. The AI uses whatever permissions your configured credentials already have. For AWS infrastructure with clear permission boundaries, use the Cloud Operator for AWS.
Cloud Operator for AWS
Pre-configured EC2 instance implementing Zero Standing Privileges and Just-in-Time access. The operator launches with zero AWS permissions and requests only what it needs, when it needs it. All permissions require explicit user approval and remain revocable. Architecture is designed for adaptation to other cloud providers.
IAM Architecture
The CloudFormation stack creates a Two-Role Architecture:
| Component | Purpose |
|---|---|
| Operator Role | Executes actions; starts with zero permissions |
| Escalation Role | Can only attach/detach pre-defined intent policies to Operator Role |
| Permission Boundary | DENY-only rules preventing admin-level access (iam:*, *:*, *Admin*) |
| Intent Policies (45+) | Pre-defined least-privilege policies for specific AWS services |
Deployment
Prerequisites: DropOps account (Personal tier+), AWS account with EC2 launch permissions.
Option A: Drop Script (Recommended)
curl -fsSL https://dropops.ai/operator/cloud-drop | bash
Interactive script handles AWS profile selection, region, API key input, and CloudFormation stack creation. Skip prompts with environment variables:
AWS_PROFILE=myprofile AWS_REGION=us-west-2 DROPOPS_OPERATOR_API_KEY=your_key curl -fsSL https://dropops.ai/operator/cloud-drop | bash
Option B: AWS CLI
aws cloudformation create-stack \
--stack-name DropOps-Cloud-Operator \
--template-url https://dropops-public.s3.amazonaws.com/cloud-operator.yaml \
--parameters \
ParameterKey=OperatorApiKey,ParameterValue=YOUR_API_KEY \
ParameterKey=VpcId,ParameterValue=vpc-XXXXXXXX \
--capabilities CAPABILITY_NAMED_IAM
Option C: CloudFormation Console
- Open CloudFormation Console -> Create stack -> With new resources
- S3 URL:
https://dropops-public.s3.amazonaws.com/cloud-operator.yaml - Enter Operator API Key, select VPC, acknowledge IAM creation, create stack
Zero Standing Privileges Model
The Cloud Operator launches with zero access to AWS resources. When a request requires permissions the operator lacks:
- Detection - AI identifies missing permission
- Request - AI presents approval card with specific permission and justification
- Approval - User approves or denies
- Execution - AI attaches intent policy to Operator Role, executes action
Security Guarantees: Cannot grant admin-level access (blocked by permission boundary). Every permission requires explicit approval. All permissions revocable through conversation.
Intent Policies
| Policy | Grants |
|---|---|
ec2_discovery | Read-only EC2 instance information |
ec2_management | EC2 lifecycle control (start/stop/reboot) |
s3_read | S3 object read access |
s3_write | S3 object write access |
terraform_state | S3 state storage + DynamoDB locking |
cloudwatch_logs | CloudWatch Logs read/write |
secrets_read | Secrets Manager read access |
rds_discovery | RDS databases, clusters, snapshots |
lambda_discovery | Lambda functions and configuration |
ecs_discovery | ECS clusters, services, tasks |
eks_discovery | EKS clusters, nodegroups, Fargate profiles |
45+ intent policies available including VPC, Route53, SNS, SQS, DynamoDB, API Gateway, Step Functions, Athena, CloudFormation, Cost Explorer, Glue, and more.
Auto-Approved Self-Discovery
The following read-only commands are auto-approved for the operator to query its own IAM identity:
aws sts get-caller-identity,aws iam get-role,aws iam get-role-policyaws iam list-role-policies,aws iam list-attached-role-policiesaws iam get-instance-profile,aws iam simulate-principal-policy- Local system commands (
ls,cat,systemctl,journalctl)
These commands can only query the operator's own role. All other commands require explicit approval.
Pre-installed Tools
Terraform, AWS CLI v2, kubectl, Helm, Ansible, jq/yq, Python 3, Git, Restic (encrypted backups).
Security Hardening
| Layer | Controls |
|---|---|
| Network | Zero inbound ports, outbound 443/53 only, host firewall enforced |
| OS | SSH password auth disabled, strong ciphers, auto-updates enabled, unnecessary services disabled |
| Monitoring | auditd with security rules, fail2ban for intrusion prevention |
| Access | SSM Session Manager available (no SSH required) |
Network Requirements
Inbound: None. Outbound: HTTPS (443) to operator.dropops.ai, DNS (53).
File Locations
| Path | Description |
|---|---|
/opt/dropops/dropops-operator | Operator binary |
/opt/dropops/config/operator.env | Configuration |
/usr/local/bin/dropops-* | Helper scripts |
/var/log/dropops/ | Logs |
Operator Terminal
Browser-based CLI access to bound operators without SSH, VPNs, or inbound ports. All commands require explicit approval before execution.
Security Architecture
| Feature | Description |
|---|---|
| Zero Inbound Ports | All communication initiated outbound on port 443 |
| No SSH Keys | Operators authenticate with API keys - no key distribution |
| No VPN Required | Access from any browser without VPN infrastructure |
| Human-in-the-Loop | Every command requires explicit user approval |
| mTLS Transport | Mutual TLS with certificate pinning prevents MITM attacks |
| Audit Trail | All commands logged via LFAA (Local-First Audit Architecture) |
How It Works
- Type a command in natural language or direct shell syntax
- AI proposes the command with explanation
- You approve or deny the command
- Approved commands route to your bound operator via Redis pub/sub
- Operator executes and streams output back in real-time
- Sentinel scrubs sensitive data before cloud transmission
Comparison with SSH
| Aspect | SSH | Operator Terminal |
|---|---|---|
| Inbound Ports | Port 22 required | Zero inbound ports |
| Key Management | Distribute & rotate SSH keys | Single API key per operator |
| NAT Traversal | Requires port forwarding | Works behind any NAT |
| Client Software | SSH client required | Any web browser |
| Audit Trail | Manual logging setup | Built-in with LFAA |
For detailed security architecture, see Operator Terminal public page.
AI Architecture
Operating Modes
| Mode | Trigger | Capabilities |
|---|---|---|
| Advisory | No operator bound | Web search, documentation, best practices guidance, troubleshooting advice |
| Execution | Operator bound | Command execution, file operations, filesystem exploration, cloud operations (with approval) |
Model & Reasoning
Uses Google Gemini models with adaptive reasoning depth. Deep reasoning for complex multi-step operations; quick response for simple queries. The AI maintains context awareness of system state, conversation history, and user preferences.
Multi-Operator Binding
Multiple operators can be bound simultaneously for cross-system operations. Target operators by hostname, operator ID, index, or ["all"]. Commands execute sequentially with combined output showing hostname headers.
| Tier | Max Bound Operators |
|---|---|
| Free | 3 Solo |
| Personal | 10 Solo + 1 Cloud |
| Professional | 50 Solo + 5 Cloud |
Reliability
- Automatic Retry - Transient failures retried with exponential backoff
- Graceful Degradation - Falls back to advisory mode if operator connection lost
- Cancellation - Stop any operation via message or stop button
- Real-Time Streaming - Watch reasoning and command output as it happens
Data Privacy
- No Training - Your data is never used to train AI models
- Output Sanitization - Command output sanitized to prevent prompt injection
- Session Context - Conversation history used only within your session
- Source Citations - Web search results include clickable source links
Approval Workflow
All state-changing commands require explicit user approval. The AI analyzes each command for risk and presents approval requests with explanations.
Approval Requirements
| Operation Type | Approval |
|---|---|
| File write/modify/delete | Required |
| Package install/remove | Required |
| Service start/stop/restart | Required |
| Configuration changes | Required |
| Network modifications | Required |
| AWS permission requests | Required |
| File read, directory listing | Auto-approved |
Cloud Operator self-discovery (sts get-caller-identity, etc.) | Auto-approved |
Multi-Operator Approval
When the same command targets multiple operators, a single unified approval dialog lists all impacted systems. Commands execute sequentially with combined output showing hostname headers.
Multi-Step Operations
Complex workflows are broken into logical steps. Each command requires individual approval. The AI adapts subsequent steps based on results.
Managing Operators
The Operator Panel provides centralized control over all deployed operators with real-time status monitoring and connection management.
Operator Status
Operators send heartbeat data every 30 seconds including system metrics. Status transitions:
| Status | Description |
|---|---|
| Available | Never authenticated |
| Active | Authenticated, sending heartbeats, available for binding |
| Bound | Bound to web session, sending heartbeats |
| Offline | Previously authenticated, no heartbeat >60s |
| Stale | Was bound, no heartbeat >60s |
| Stopped | Manually stopped by user |
Binding
Binding connects operators to your web session for command execution. Multiple operators can be bound simultaneously; each operator can only be bound to one session at a time. Unbinding leaves the operator running and available.
Stopping Operators
- Remote Stop - Click stop icon in Operator Panel (instant termination)
- Refresh API Key - Invalidates credentials, disconnects operator
- Local Termination -
Ctrl+Corkillon target system - Cloud Operator -
systemctl stop dropops-operatoror manage EC2 instance
Access Revocation
Refresh an operator's API key from the Operator Panel to instantly invalidate credentials. The old key is destroyed immediately; the operator disconnects and cannot reconnect.
Team Management
Professional tier includes team collaboration. Team members share operators and pooled operation allocations.
Tier Limits
| Tier | Team Members | Solo Operators | Cloud Operators |
|---|---|---|---|
| Free | 1 | 3 | 0 |
| Personal | 1 | 10 | 1 |
| Professional | 5 | 50 | 5 |
Invites
Generate invite links from the Team Dashboard (/team) with configurable max uses (1-unlimited), expiration (1-30 days), and optional email restrictions.
Security Model
Network Security
Zero Inbound Connectivity: Operators initiate all connections outbound on port 443. No listening ports, no inbound connections, no firewall exceptions required.
Authentication
- API Key - Unique per operator, used for download and startup, instantly revocable
- System Fingerprinting - Keys bound to host system; non-transferable
- Session-Bound Identity - User ID extracted server-side from validated session; cross-user access structurally impossible
Privilege Model
Operators run with whatever privileges you assign (typically standard user). Root not required. Forbidden Operations: Privilege escalation commands (sudo, su, pkexec, doas) and SUID/SGID bit manipulation are always blocked regardless of approval. For elevated access, restart the operator with sudo.
Local-First Audit Architecture (LFAA)
The Operator is the System of Record for chat history, execution logs, and file mutations. The cloud acts as a stateless relay. Enable local storage with the --local-storage flag to store audit data in ./.dropops/ relative to the launch directory.
| Component | Location | Purpose |
|---|---|---|
| Audit Vault | ./.dropops/data/dropops.db | SQLite database for sessions, events, file mutations |
| Ledger Mirror | ./.dropops/data/ledger/ | Git-based version control for modified files |
Sensitive Data Scrubbing (Sentinel)
Sentinel scrubs sensitive data inline before any persistence or cloud transmission. 30+ patterns aligned with AWS Macie / Google DLP: service tokens (JWT, GitHub, AWS, GCP), network identifiers (IPs, hostnames), cloud resources (ARNs, access keys), and PII (SSN, credit cards, private keys). Data replaced with safe placeholders ([IP_ADDR], [AWS_KEY], etc.).
Compliance
Every command, result, and approval logged for compliance. Sensitive command output never persists in cloud storage. Architecture designed for GDPR, SOC 2, and FedRAMP data locality requirements. Live Transmission Monitor at /audit provides real-time visibility into local vs. transmitted data.
Best Practices
- Natural Language - State your intent plainly; the AI determines the appropriate approach
- Direct Commands - Paste commands directly into chat; typos are auto-corrected with notification
- Source Verification - AI cites sources with clickable links for verification
- Format Requests - Request specific output formats (tables, lists, summaries)
- Context Memory - AI learns preferences and adapts to your technical background over time
FAQ
| Question | Answer |
|---|---|
| Can the AI access my system without permission? | No. All command execution requires explicit approval. Read-only operations are allowed by default. |
| What if I close my browser during an operation? | In-progress operations may complete, but the AI takes no additional actions. Results are stored. |
| Can the AI make mistakes? | Yes. Always review commands before approval. The approval workflow exists to catch issues. |
| How does the AI know about my system? | Operator sends system information (OS, hostname, resources) at connection time. |
| Is my data secure? | Yes. Encrypted communication, sanitized output, no AI training on your data. See /security. |
| Why is the AI slow? | Uses Gemini 2.5 Pro for deep reasoning, not lightweight models. Complex operations require deliberate analysis. |
Troubleshooting
| Issue | Resolution |
|---|---|
| Operator won't connect | Verify port 443 outbound to operator.dropops.ai, process is running, and API key is valid |
| Permission denied | Operator runs as the user who started it. For admin tasks: sudo ./dropops-operator |
| Commands running slowly | No automatic timeouts. Long-running ops complete naturally. Check system resources for bottlenecks. |
| Cloud Operator status incorrect | Refresh page, stop operator in panel, restart EC2 instance |
Need Human Help?
For billing questions, account issues, or anything the AI can't resolve, email support@dropops.ai. We're here to help.
This guide evolves with DropOps. If something's unclear or missing, let us know. The goal is simple: eliminate friction.