🔍 Multi-cloud infrastructure search tool - Find all domains and resources using a specific IP address across multiple cloud providers.
| Provider | Resources Searched | Status |
|---|---|---|
| Cloudflare | DNS Records, Zones | ✅ Active |
| Coolify | Applications, Domains | ✅ Active |
| DigitalOcean | Droplets, Load Balancers, Floating IPs | ✅ Active |
| Google Cloud | Compute Engine, Cloud Run, GKE, Load Balancers | ✅ Active |
| Hetzner | Cloud Servers, Floating IPs, Load Balancers | 🚧 Planned |
| AWS | EC2, ELB, Route53, CloudFront | 🚧 Planned |
| Azure | VMs, Public IPs, DNS, Load Balancers | 🚧 Planned |
| Huawei Cloud | ECS, EIP, ELB | 🚧 Planned |
- Debug Mode: Added comprehensive debugging capabilities with
--debugflag- Verbose API request/response logging with sanitized credentials
- Performance timing for all operations
- Automatic debug log export to
~/.infrasee/debug/ - Detailed error stack traces for troubleshooting
- Improved Version Display: Clean terminal table format with provider information
- GCP Authentication Transparency: Clear warnings about token expiration
- Access tokens from
gcloud auth print-access-tokenexpire in ~1 hour - Added recommendations for service account keys for long-term use
- Updated all error messages with helpful authentication guidance
- Access tokens from
- All Command GCP Auto-Discovery: The
allcommand now supports GCP auto-discovery - Added
--all-projectsflag toinfrasee all ipcommand - Search across all providers AND all GCP projects simultaneously
- Auto-Discovery for GCP: Automatically search across ALL accessible GCP projects
- Added
--all-projectsflag to discover and search all GCP projects - No need to manually list project IDs anymore
- Requires
resourcemanager.projects.listpermission
- Improved
--simpleoutput format with structured JSON by provider - Each provider's resources are now organized in separate objects
- Added summary information for each provider
- GCP now supports
--simpleoutput
- Organized command structure: All Cloudflare commands now under
infrasee cloudflare - Consistent CLI interface across all providers
- Backward compatibility with deprecation warnings for old commands
- Added multi-project support for Google Cloud Platform
- Resources now show project ID for better organization
- Added Google Cloud Platform support (Compute Engine, Cloud Run, GKE, Load Balancers)
- Added DigitalOcean integration
- Replaced Axios with native fetch API (Node.js 18+ required)
- Reduced dependencies for smaller package size
- Added encrypted credential storage with AES-256
- Automatic migration from plain text configs
- 🔍 Search multiple cloud providers simultaneously
- 📊 Export results as JSON, CSV, or simple text
- 🔐 Encrypted credential storage with AES-256
- 🐛 Debug mode for troubleshooting and performance analysis
- ⚡ Auto-discovery for GCP projects
- 🎨 Colored terminal output with progress indicators
- 📝 Support for environment variables and .env files
- ⏱️ Performance monitoring and timing information
# Clone the repository
git clone https://github.com/DreamsEngine/infrasee-cli.git
cd infrasee-cli
# Install and build
npm install && npm run build && npm link
# Configure your API tokens (choose one method)
# Method 1: Using .env file
echo "CLOUDFLARE_API_TOKEN=your_token" >> .env
echo "COOLIFY_API_TOKEN=your_token" >> .env
echo "DIGITALOCEAN_TOKEN=your_token" >> .env
# For GCP (choose one):
# Option A: Service Account Key (Recommended - no expiration)
echo "GCP_SERVICE_ACCOUNT_KEY=/path/to/service-account-key.json" >> .env
echo "GCP_AUTO_DISCOVER=true" >> .env
# Option B: Access Token (Temporary - expires in ~1 hour)
echo "GCP_ACCESS_TOKEN=$(gcloud auth print-access-token)" >> .env
echo "GCP_AUTO_DISCOVER=true" >> .env
# Method 2: Using interactive config
infrasee cloudflare config --token "your_cloudflare_token"
infrasee coolify config --token "your_coolify_token" --url "https://your-coolify.com"
infrasee digitalocean config --token "your_do_token"
# For GCP (choose one):
# Recommended: Service Account Key (works permanently)
infrasee gcp config --auto-discover --service-account-key /path/to/key.json
# Temporary: Access Token (expires in ~1 hour, needs refresh)
infrasee gcp config --auto-discover --token "$(gcloud auth print-access-token)"
# Search for domains across all providers
infrasee all ip 192.168.1.100
# Export results to CSV
infrasee all ip 192.168.1.100 --csv --output report.csv
# Search with GCP auto-discovery
infrasee all ip 192.168.1.100 --all-projects# Test if installation worked
infrasee --version
# Should output: 1.5.4
# Test connections to each service
infrasee cloudflare test
infrasee coolify test
infrasee digitalocean test
infrasee gcp test- Node.js 18.0.0 or higher (Required for native fetch API)
- npm or yarn
- Git
# Clone the repository
git clone https://github.com/DreamsEngine/infrasee-cli.git
cd infrasee-cli
# Install dependencies
npm install
# Build the TypeScript project
npm run build
# Create global symlink (makes 'infrasee' command available globally)
npm link# Clone and build
git clone https://github.com/DreamsEngine/infrasee-cli.git
cd infrasee-cli
npm install && npm run build
# Create executable script
echo '#!/usr/bin/env node' > infrasee-cli
echo "require('$(pwd)/dist/cli.js')" >> infrasee-cli
chmod +x infrasee-cli
# Move to global bin (may require sudo)
sudo mv infrasee-cli /usr/local/bin/infrasee# Clone and build
git clone https://github.com/DreamsEngine/infrasee-cli.git
cd infrasee-cli
npm install && npm run build
# Add to your shell config (~/.zshrc, ~/.bashrc, or ~/.config/fish/config.fish)
echo "export PATH=\"\$PATH:$(pwd)/dist\"" >> ~/.zshrc
source ~/.zshrc
# Create alias
echo "alias infrasee='node $(pwd)/dist/cli.js'" >> ~/.zshrc
source ~/.zshrc🚧 Note: We're working on a Homebrew formula for easy installation:
# Future installation method brew tap dreamsengine/infrasee brew install infrasee-cli
📦 Note: NPM package publishing is planned for a future release:
# Future installation method npm install -g infrasee-cli
export CLOUDFLARE_API_TOKEN=your_api_token_here
# OR
export [email protected]
export CLOUDFLARE_API_KEY=your_global_api_key_hereCreate a .env file in your project directory:
# Cloudflare Configuration
CLOUDFLARE_API_TOKEN=your_cloudflare_api_token_here
# Coolify Configuration
COOLIFY_API_TOKEN=your_coolify_api_token_here
COOLIFY_URL=https://your-coolify-instance.com
# DigitalOcean Configuration
DIGITALOCEAN_TOKEN=your_digitalocean_api_token_here
# GCP Configuration
# ⚠️ IMPORTANT: Choose between Service Account Key OR Access Token
# Option A: Service Account Key (RECOMMENDED - Permanent)
# Works across sessions, no expiration, ideal for automation
GCP_AUTO_DISCOVER=true
GCP_SERVICE_ACCOUNT_KEY=/path/to/service-account-key.json
# Option B: Access Token (TEMPORARY - Expires in ~1 hour)
# Requires refresh: export GCP_ACCESS_TOKEN=$(gcloud auth print-access-token)
GCP_AUTO_DISCOVER=true
GCP_ACCESS_TOKEN=ya29.a0AfH6SMBxxxxxxx... # From: gcloud auth print-access-token
# You can also specify projects manually:
# GCP_PROJECT_ID=single-project
# OR
# GCP_PROJECT_IDS=project-1,project-2,project-3# Configure Cloudflare
infrasee cloudflare config --token "your_api_token_here"
# Configure Coolify (note: always quote tokens with special characters like |)
infrasee coolify config --token "your_coolify_token" --url https://your-coolify.com
# Configure DigitalOcean
infrasee digitalocean config --token "your_digitalocean_token"
# Configure GCP - CHOOSE ONE METHOD:
# 📌 RECOMMENDED: Service Account Key (Permanent, no expiration)
infrasee gcp config --auto-discover --service-account-key /path/to/key.json
# ⏱️ TEMPORARY: Access Token (Expires in ~1 hour, needs refresh)
infrasee gcp config --auto-discover --token "$(gcloud auth print-access-token)"
# Note: You'll need to refresh the token periodically:
# infrasee gcp config --token "$(gcloud auth print-access-token)"
# Manual project selection (if not using auto-discovery):
infrasee gcp config --project-id "my-project-123" --service-account-key /path/to/key.json
# OR multiple projects:
infrasee gcp config --project-ids "project-1,project-2" --service-account-key /path/to/key.jsonCredentials are saved securely in ~/.infrasee/config.json
# Search all services at once
infrasee all ip 192.168.1.100
# Search all services INCLUDING all GCP projects (auto-discovery)
infrasee all ip 192.168.1.100 --all-projects
# Export to CSV for spreadsheets
infrasee all ip 192.168.1.100 --csv --output report.csv
# Get simple domain list
infrasee all ip 192.168.1.100 --simple
# Get full JSON data with all GCP projects
infrasee all ip 192.168.1.100 --all-projects --json --output data.json# Basic search
infrasee cloudflare ip 104.26.2.33
# Simple domain list (IP as key)
infrasee cloudflare ip 104.26.2.33 --simple
# Full JSON output
infrasee cloudflare ip 104.26.2.33 --json --output cf-results.json
# Test connection
infrasee cloudflare test# Basic search
infrasee coolify ip 192.168.1.100
# Simple domain list
infrasee coolify ip 192.168.1.100 --simple
# JSON output
infrasee coolify ip 192.168.1.100 --json# Basic search - finds droplets, load balancers, floating IPs, and domain records
infrasee digitalocean ip 165.227.123.45
# Simple resource list
infrasee digitalocean ip 165.227.123.45 --simple
# JSON output with full details
infrasee digitalocean ip 165.227.123.45 --json --output do-resources.json# Search across ALL accessible projects (auto-discovery) - RECOMMENDED
infrasee gcp ip 35.190.247.123 --all-projects
# Search only manually configured projects
infrasee gcp ip 35.190.247.123
# Simple structured output
infrasee gcp ip 35.190.247.123 --simple
# JSON output with full details (includes project ID for each resource)
infrasee gcp ip 35.190.247.123 --json --output gcp-resources.json
# Test connection to all configured projects
infrasee gcp test| Method | Duration | Use Case | Command |
|---|---|---|---|
| Service Account Key | ✅ Permanent | Production, Automation, CI/CD | --service-account-key /path/to/key.json |
| Access Token | ⏱️ ~1 hour | Testing, Development | --token "$(gcloud auth print-access-token)" |
Why does the access token expire?
- Google Cloud access tokens from
gcloud auth print-access-tokenare short-lived for security - They typically expire after 1 hour
- You'll see authentication errors when the token expires
- Must refresh with:
infrasee gcp config --token "$(gcloud auth print-access-token)"
Recommended Setup for Production:
- Create a service account in GCP Console
- Download the JSON key file
- Use:
infrasee gcp config --auto-discover --service-account-key /path/to/key.json - This works permanently without any refresh needed
The --all-projects flag automatically discovers and searches ALL GCP projects your service account has access to. No need to manually list project IDs!
# Search ALL your GCP projects automatically - no configuration needed!
infrasee gcp ip 35.190.247.123 --all-projects
# Or use with the 'all' command to search every provider AND every GCP project
infrasee all ip 35.190.247.123 --all-projects
# Enable auto-discovery by default (environment variable)
export GCP_AUTO_DISCOVER=true
infrasee gcp ip 35.190.247.123Benefits:
- 🚀 No need to manually maintain project ID lists
- 🔍 Automatically finds resources in ALL your projects
- 🆕 Discovers new projects as they're created
- ⚡ Perfect for organizations with many projects
Requirements for Auto-Discovery:
- Service account needs
resourcemanager.projects.listpermission - Can be granted via the "Project Viewer" role or custom role
- Works with both access tokens and service account keys
# Test Cloudflare connection
infrasee cloudflare test
# Test Coolify connection
infrasee coolify test
# Test DigitalOcean connection
infrasee digitalocean test
# Test GCP connection
infrasee gcp testEnable verbose debug logging to troubleshoot issues or report bugs:
# Enable debug mode for any command with --debug or -d
infrasee cloudflare ip 1.1.1.1 --debug
infrasee all ip 192.168.1.1 -d
infrasee gcp test --debug
# Debug mode shows:
# - API request/response details (with sanitized credentials)
# - Timing information for each operation
# - Detailed error messages and stack traces
# - Network timeouts and connection issues
# - Configuration loading stepsWhat Debug Mode Provides:
- 🌐 API Calls: Full request/response logging (credentials sanitized)
- ⏱️ Performance: Timing for each operation to identify bottlenecks
- 📊 Statistics: Summary of API calls, errors, and warnings
- 📝 Debug Logs: Automatically saved to
~/.infrasee/debug/for bug reports - 🔍 Error Details: Complete stack traces and error context
When to Use Debug Mode:
- Commands are taking too long without feedback
- Getting unexpected errors or empty results
- Reporting bugs to the development team
- Troubleshooting authentication issues
- Monitoring API rate limits or timeouts
Example Debug Output:
[0.005s] ℹ️ INFO Starting Cloudflare IP search for: 1.1.1.1
[0.008s] 🌐 API GET https://api.cloudflare.com/client/v4/user/tokens/verify
[0.228s] 🌐 API Response 200 from https://api.cloudflare.com/client/v4/user/tokens/verify (217ms)
[0.230s] ℹ️ INFO Authentication successful, searching for domains...
[1.456s] 🌐 API GET https://api.cloudflare.com/client/v4/zones?per_page=50
[2.001s] 🌐 API Response 200 from https://api.cloudflare.com/client/v4/zones (545ms)
[2.002s] ℹ️ INFO Found 12 zones to search
...
📝 Debug log saved to: ~/.infrasee/debug/debug-2024-01-15T10-30-45.log
💡 Debug Summary: Total time: 5.234s | API calls: 15 | Errors: 0 | Warnings: 0
infrasee --help
infrasee ip --help
infrasee coolify --help
infrasee digitalocean --help
infrasee all --help-
API Token (Recommended)
- Go to: https://dash.cloudflare.com/profile/api-tokens
- Click "Create Token"
- Use "Custom token" template
- Set permissions:
- Zone → Zone → Read
- Zone → DNS → Read
- Zone Resources: Include → All zones
- Click "Continue to summary"
- Click "Create Token"
- Copy the token immediately (it won't be shown again)
-
Global API Key + Email (Alternative)
- Go to: https://dash.cloudflare.com/profile/api-tokens
- Scroll to "API Keys" section
- Click "View" next to Global API Key
- Enter your password to view the key
- Use with your Cloudflare account email
- API Token
- Log in to your Coolify dashboard
- Click on your profile icon (top right)
- Go to "Settings"
- Navigate to "API Tokens" section
- Click "Generate New Token"
- Give it a name (e.g., "InfraSee CLI")
- Copy the token immediately (it won't be shown again)
- Note: The tool only uses read-only endpoints, no write permissions needed
- Personal Access Token
- Go to: https://cloud.digitalocean.com/account/api/tokens
- Click "Generate New Token"
- Token name: "InfraSee CLI" (or any name you prefer)
- Expiration: Choose "No expiry" or set a custom date
- Scopes: Select Read only (for security)
- Click "Generate Token"
- Copy the token immediately (it won't be shown again)
- What it searches:
- Droplets
- Load Balancers
- Floating IPs
- Domain Records (A/AAAA)
- Install gcloud CLI (if not already installed)
- Download from: https://cloud.google.com/sdk/docs/install
- Run:
gcloud initto authenticate
- Generate Access Token
gcloud auth print-access-token
- Copy the token (valid for 1 hour)
- Use with:
infrasee gcp config --auto-discover --token "YOUR_TOKEN"
-
Create Service Account
- Go to: https://console.cloud.google.com/iam-admin/serviceaccounts
- Click "Create Service Account"
- Name: "infrasee-cli" (or your preference)
- Click "Create and Continue"
-
Grant Permissions
- Add these roles (minimum required):
- Viewer (for basic read access)
- Cloud Resource Manager → Project Viewer (for auto-discovery)
- Click "Continue" then "Done"
- Add these roles (minimum required):
-
Create Key
- Click on your new service account
- Go to "Keys" tab
- Click "Add Key" → "Create new key"
- Choose "JSON" format
- Save the file securely (e.g.,
~/gcp-key.json) - Use with:
infrasee gcp config --auto-discover --service-account-key ~/gcp-key.json
-
Enable Required APIs (if not already enabled)
- Go to: https://console.cloud.google.com/apis/library
- Enable these APIs:
- Compute Engine API
- Cloud Run API
- Kubernetes Engine API
- Cloud Resource Manager API (for auto-discovery)
What it searches:
- Compute Engine instances
- Load Balancers (forwarding rules)
- Cloud Run services
- GKE clusters
InfraSee follows a consistent command pattern across all providers:
infrasee <provider> <command> [options]
cloudflare- Cloudflare DNS recordscoolify- Coolify applications and servicesdigitalocean- DigitalOcean resourcesgcp- Google Cloud Platform resourcesall- Search all configured providers
ip <address>- Find resources using specific IPconfig- Configure provider credentialstest- Test provider connection
# Cloudflare commands
infrasee cloudflare ip 104.26.2.33
infrasee cloudflare config --token "your_token"
infrasee cloudflare test
# Same pattern for all providers
infrasee digitalocean ip 165.227.123.45
infrasee gcp ip 35.190.247.123
infrasee coolify ip 192.168.1.100For backward compatibility, the following deprecated commands are still supported but will show deprecation warnings:
infrasee ip→ Useinfrasee cloudflare ipinfrasee config→ Useinfrasee cloudflare configinfrasee test→ Useinfrasee cloudflare test
These deprecated commands will be removed in v2.0.0.
- Credentials are encrypted with AES-256 encryption (v1.1.0+)
- Config stored in
~/.infrasee/config.jsonwith restricted permissions - Tokens are masked when displayed
- Automatic migration from plain text for older versions
- Use API tokens with minimal required permissions (read-only)
- Don't commit credentials to git
- Use environment variables or .env files for sensitive data
- Rotate tokens periodically
# Cloudflare
Found 3 domain(s) using IP 192.168.1.100:
Zone: example.com
→ example.com [A] ✓ Proxied
TTL: Auto
→ www.example.com [A] ✓ Proxied
TTL: Auto
# DigitalOcean
Found 2 DigitalOcean resource(s) using IP 192.168.1.100:
Droplets:
→ web-server-01
IP: 192.168.1.100
Region: New York 3
Status: active
Load Balancers:
→ production-lb
IP: 192.168.1.100
Region: New York 3
Status: active
{
"192.168.1.100": [
"example.com",
"www.example.com",
"api.example.com"
]
}IP,Domain,Service Provider,In Coolify,In DigitalOcean
192.168.1.100,example.com,cloudflare,No,No
192.168.1.100,app.example.com,coolify,Yes,No
192.168.1.100,api.example.com,cloudflare+digitalocean,No,Yes
192.168.1.100,db.example.com,all,Yes,Yes# Install dependencies
npm install
# Build TypeScript
npm run build
# Watch mode for development
npm run dev
# Run directly
npm start ip 104.26.2.33-
Coolify Team - For creating an amazing open-source PaaS that makes self-hosting simple and powerful. Coolify is a fantastic alternative to Heroku/Netlify/Vercel that respects your data privacy.
- Repository: https://github.com/coollabsio/coolify
- Website: https://coolify.io
-
Cloudflare - For providing robust APIs and excellent developer documentation.
-
DigitalOcean - For their comprehensive API and developer-friendly cloud infrastructure platform.
- Node.js 18+ & TypeScript 5.x - Modern JavaScript with native fetch API
- Commander.js - Elegant command-line interface framework
- Native Fetch - Zero-dependency HTTP client using Node.js built-in fetch
- Chalk & Ora - Beautiful terminal output and spinners
- Crypto-JS - AES-256 encryption for secure credential storage
If your API token contains special characters like |, &, or $, always wrap it in quotes:
# ❌ Wrong - shell will interpret the pipe character
infrasee coolify config --token 1|abc123xyz
# ✅ Correct - token is properly quoted
infrasee coolify config --token "1|abc123xyz"- "Command not found" - Run
npm linkagain from the project directory - "No credentials found" - Check your
.envfile or run the config commands - Fish shell pipe error - Quote your tokens as shown above
- Permission denied - Some installation methods may require
sudo - GCP token expired - Access tokens are valid for 1 hour. Generate a new one:
export GCP_ACCESS_TOKEN=$(gcloud auth print-access-token) # Or reconfigure infrasee gcp config --auto-discover --token "$(gcloud auth print-access-token)"
- Too many GCP errors - These are normal for projects without APIs enabled. To debug:
DEBUG_GCP=true infrasee gcp ip 192.168.1.100 --all-projects
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
- Hetzner Cloud
- Cloud Servers and dedicated servers
- Floating IPs
- Load Balancers
- Networks and Firewalls
- Huawei Cloud
- Search Elastic Cloud Server (ECS) instances
- Search Elastic IPs (EIP)
- Virtual Private Cloud (VPC) resources
- Elastic Load Balancers (ELB)
- Alibaba Cloud
- ECS instances and Elastic IPs
- Server Load Balancer resources
- Oracle Cloud Infrastructure (OCI)
- Compute instances
- Load balancers and public IPs
- Parallel Processing: Faster searches with concurrent API calls
- Caching System: Reduce API calls with intelligent caching
- Export Templates: Custom output formats and reports
- CI/CD Integration: GitHub Actions and Jenkins plugins
- Web Dashboard: Browser-based interface for results visualization
- Amazon Web Services (AWS)
- EC2 instances and Elastic IPs
- Route53 DNS records
- Application/Network Load Balancers
- CloudFront distributions
- Microsoft Azure
- Virtual Machines
- Public IPs
- Azure DNS
- Load Balancers
- Alibaba Cloud integration
- NPM package publishing
- Homebrew formula
- Batch IP processing from file
- Export results to Excel format
- Web dashboard for results visualization
- Quieter GCP error handling for projects without API access
- Added GCP auto-discovery support to 'all' command
- Improved documentation and token instructions
- GCP auto-discovery across all accessible projects
- Added
--all-projectsflag
- Structured JSON output for
--simpleflag - Provider-separated results
- Reorganized command structure
- Cloudflare commands now under subcommand
- Multi-project support for GCP
- Project IDs shown in results
- Added Google Cloud Platform support
- Search Compute Engine, Cloud Run, GKE, and Load Balancers
- Added DigitalOcean integration
- Search droplets, load balancers, floating IPs, and domains
- Pagination support for large infrastructures
- Replaced Axios with native fetch API
- Node.js 18+ requirement
- Reduced dependencies
- Added AES-256 encryption for credentials
- Machine-specific encryption keys
- Automatic migration from plain text
- Token masking in output
- Initial release with Cloudflare DNS search
- Coolify integration for deployment search
- Multiple output formats (JSON, CSV, simple)
- Configuration via environment variables or .env files
MIT
Note: This tool is not affiliated with Cloudflare, Coolify, DigitalOcean, or Google Cloud Platform. It uses their public APIs.