Files
osmedeus/docs/cloud/cloud-quick-reference.md
j3ssie 0269cf4e26 feat: update Next.js build assets and add cloud setup E2E tests
- Update Next.js generated chunk hashes and build IDs reflecting latest dashboard build
- Update CSS stylesheet references in workflow upload page metadata
- Add comprehensive cloud setup E2E test suite (cloud_setup_test.go) with SSH password/key auth, post-command variable expansion, and Ansible integration
- Fix API priority levels to include 'medium' priority in test coverage
- Add agent-sdk test workflows (minimal, config, codex, multi-agent, session variants)
- Update E2E test utilities with runCLIInBase helper for multi-step cloud config tests
- Fix stderr/stdout capture in dependencies_target_types_test assertions
2026-04-04 13:57:34 +08:00

5.9 KiB

Cloud Quick Reference

Setup (30 seconds)

# Enable cloud feature
osmedeus config set cloud.enabled true

# Set credentials (pick your provider)
osmedeus cloud config set providers.aws.access_key_id ${AWS_ACCESS_KEY_ID}
osmedeus cloud config set providers.aws.secret_access_key ${AWS_SECRET_ACCESS_KEY}
osmedeus cloud config set providers.aws.region ap-southeast-1
osmedeus cloud config set defaults.provider aws

# SSH keys
osmedeus cloud config set ssh.private_key_path ~/.ssh/id_rsa
osmedeus cloud config set ssh.public_key_path ~/.ssh/id_rsa.pub

# Clean the setup scripts first
osmedeus cloud config set setup.commands.clear ""

# Worker setup commands
osmedeus cloud config set setup.commands.add "curl -fsSL https://www.osmedeus.org/install.sh | bash"
osmedeus cloud config set setup.commands.add "osmedeus install base --preset"

Configuration

osmedeus cloud config list                              # View all settings
osmedeus cloud config set <key> <value>                 # Set a value
osmedeus cloud config set <key>.add <value>             # Append to list
osmedeus cloud config clean                             # Reset to defaults

# Provider credentials
osmedeus cloud config set providers.<provider>.<key> <value>

# Instance type
osmedeus cloud config set providers.aws.instance_type t3.large

# Spot instances (70-80% cheaper)
osmedeus cloud config set providers.aws.use_spot true

# Cost limits
osmedeus cloud config set limits.max_hourly_spend 1.00
osmedeus cloud config set limits.max_total_spend 10.00
osmedeus cloud config set limits.max_instances 10

Infrastructure

osmedeus cloud create --provider aws -n 3               # Create instances
osmedeus cloud list                                     # List active infra
osmedeus cloud destroy <infra-id>                       # Destroy by ID
osmedeus cloud destroy all --force                      # Destroy everything
osmedeus cloud setup --reuse-with "1.2.3.4,5.6.7.8"    # Setup existing machines

Workflow Mode

# Basic
osmedeus cloud run -f fast -t example.com
osmedeus cloud run -m enum-subdomain -t example.com --timeout 30m

# Multiple instances
osmedeus cloud run -f general -t example.com --instances 3 --provider aws

# Multiple targets distributed across workers
osmedeus cloud run -f fast -T targets.txt --instances 5
osmedeus cloud run -f fast -T targets.txt --chunk-size 10    # 10 targets per worker
osmedeus cloud run -f fast -T targets.txt --chunk-count 3    # Split into 3 chunks

# Reuse existing infrastructure
osmedeus cloud run -f fast -t example.com --reuse
osmedeus cloud run -f fast -t example.com --reuse-with "1.2.3.4,5.6.7.8"

# Sync results back + auto-destroy
osmedeus cloud run -f fast -t example.com --sync-back --auto-destroy

Custom Command Mode

Run arbitrary commands on cloud instances (mutually exclusive with -f/-m):

# Single command
osmedeus cloud run --custom-cmd "nmap -sV {{Target}}" -t example.com

# Multiple sequential commands
osmedeus cloud run \
  --custom-cmd "subfinder -d {{Target}} -o /tmp/osm-custom/subs.txt" \
  --custom-cmd "cat /tmp/osm-custom/subs.txt | httpx -o /tmp/osm-custom/live.txt" \
  -t example.com

# Post-commands (run only if all custom-cmds succeed)
osmedeus cloud run \
  --custom-cmd "nuclei -u {{Target}} -o /tmp/osm-custom/results.txt" \
  --custom-post-cmd "cat /tmp/osm-custom/results.txt | notify" \
  -t example.com

# Sync results back
osmedeus cloud run \
  --custom-cmd "nmap -sV {{Target}} -oA /tmp/osm-custom/scan" \
  --sync-path "/tmp/osm-custom/" \
  --sync-dest "./my-results" \
  -t example.com

# Distribute targets across workers
osmedeus cloud run \
  --custom-cmd "cat {{Target}} | httpx -o /tmp/osm-custom/live.txt" \
  --sync-path "/tmp/osm-custom/live.txt" \
  -T targets.txt --instances 5 --auto-destroy

Template Variables

Variable Description
{{Target}} Target string or chunk file path (with -T)
{{public_ip}} Worker's public IP
{{private_ip}} Worker's private IP
{{worker_name}} Resource name
{{worker_id}} Cloud resource ID
{{infra_id}} Infrastructure ID
{{provider}} Provider name
{{ssh_user}} SSH username
{{index}} Worker index (0, 1, 2, ...)

Behavior

  • Commands run in /tmp/osm-custom/ on the remote
  • Custom-cmds run sequentially per worker, in parallel across workers
  • First failure stops remaining commands and skips post-cmds for that worker
  • Sync downloads to: <sync-dest>/<worker_name>-<ip>/<remote_path>

Flags Reference

Flag Short Description
--flow -f Flow workflow name
--module -m Module workflow name
--target -t Single target
--target-file -T File containing targets
--provider -p Cloud provider
--instances -n Number of instances
--timeout Scan timeout (e.g., 2h, 30m)
--auto-destroy Destroy infrastructure after completion
--reuse Auto-discover existing infrastructure
--reuse-with Reuse specific IPs (comma-separated)
--sync-back Download workflow results (workflow mode)
--verbose-setup Show full setup command output
--ansible Use Ansible playbook for setup
--chunk-size Targets per worker chunk
--chunk-count Split targets into N chunks
--custom-cmd Custom command (repeatable)
--custom-post-cmd Post-command (repeatable)
--sync-path Remote path to download (repeatable)
--sync-dest Local sync directory (default: ./osm-sync-back)

Cost Reference

Provider Instance vCPU RAM Hourly
Hetzner cx22 2 4 GB ~$0.007
Linode g6-standard-2 2 4 GB $0.018
DigitalOcean s-2vcpu-4gb 2 4 GB $0.02232
AWS t3.medium 2 4 GB $0.0416
GCP n1-standard-2 2 7.5 GB $0.095
Azure Standard_B2s 2 4 GB $0.042