Home Features Pricing Contact Sign In
Secure Tunneling

ArmoTunnel — Scan Local Apps Without Exposing Them

Security-test localhost, staging, and intranet applications through an encrypted reverse tunnel. HTTP request relay, TCP port scanning, and binary WebSocket protocol — built for DAST, not just proxying.

~25MB
Single Binary
0
Dependencies
WSS
End-to-End Encrypted
HTTP+TCP
Full Protocol Support

Why ArmoTunnel?

Most tunneling tools are built for development convenience. ArmoTunnel is built for security testing — binary protocol, TCP relay, and zero-overhead integration with ArmoScan's 474+ plugin DAST engine.

DAST-Native Tunnel

Not a generic HTTP proxy — ArmoTunnel is purpose-built for dynamic application security testing. The scanner talks directly to your local app through the tunnel with zero configuration.

No Public Exposure

Your application stays behind the firewall. Only ArmoScan's scanner engine can reach it through the encrypted tunnel. No DNS changes, no firewall rules, no port forwarding.

Binary WebSocket Protocol

Custom binary framing with 21-byte headers — no JSON serialization overhead, no Base64 encoding for binary payloads. Request multiplexing via GUID-based request IDs.

TCP Port Scanning

Not just HTTP — ArmoTunnel supports TCP relay for infrastructure-level port scanning. Test open ports, grab service banners, and detect exposed services on internal networks.

Auto-Verified Targets

Tunnel targets skip domain verification entirely — you own the tunnel, so you own the target. No DNS TXT records, no HTML file uploads, no meta tags. Just start scanning.

Auto-Reconnect

Exponential backoff with up to 10 reconnection attempts. Survives network interruptions, laptop sleep/wake cycles, and VPN reconnects during long-running scans.

Architecture

ArmoTunnel establishes a persistent WebSocket connection to ArmoScan's infrastructure. Incoming scan requests are relayed through the tunnel and forwarded to your local application.

ArmoScan Scanner 474+ Security Plugins
HTTPS
Tunnel Proxy a7f3bc91.armoscan.com
WSS (Binary)
ArmoTunnel CLI Your Machine
HTTP / TCP
Your App localhost:3000

Request Flow

  1. 1 ArmoScan scanner sends HTTP request to a7f3bc91.armoscan.com
  2. 2 TunnelProxyMiddleware serializes request into binary frame (21-byte header + payload)
  3. 3 Binary frame sent through WebSocket to ArmoTunnel CLI on your machine
  4. 4 CLI forwards request to localhost:3000, captures response
  5. 5 Response sent back through WebSocket, delivered to scanner as standard HTTP response

Get Started in 3 Steps

From download to first scan in under 2 minutes

1

Start ArmoTunnel

Point it at your local app and authenticate with your API key.

$ armotunnel \ --target http://localhost:3000 \ --api-key ask_xxxxxxxxxxxx
2

Get Your Tunnel URL

ArmoTunnel assigns a unique 8-hex subdomain for your session.

Forwarding: https://a7f3bc91.armoscan.com → http://localhost:3000
3

Scan with ArmoScan

Add the tunnel URL as a target — auto-verified, no domain ownership proof needed.

Target: https://a7f3bc91.armoscan.com Status: Verified (Tunnel)

Binary WebSocket Protocol

ArmoTunnel uses a custom binary framing protocol optimized for security scanning workloads. No JSON overhead, no Base64 encoding — raw binary payloads with multiplexed request IDs.

Frame Format

Byte 0 Message Type (1 byte) Bytes 1-16 Request ID (16 bytes, GUID) Bytes 17-20 Payload Length (4 bytes, big-endian) Bytes 21-N Payload (variable, max 10MB)

21-byte fixed header. Request IDs enable parallel HTTP request multiplexing over a single WebSocket connection.

Message Types

0x01 AUTH_REQUEST
0x02 AUTH_OK
0x10 HTTP_REQUEST
0x11 HTTP_RESPONSE
0x20 PING / PONG
0x40 TCP_CONNECT
0x42 TCP_DATA
0x43 TCP_CLOSE

HTTP Relay + TCP Port Scanning

ArmoTunnel supports both Layer 7 (HTTP) request proxying and Layer 4 (TCP) port scanning through the same tunnel connection.

HTTP Request Relay

  • Full HTTP method support (GET, POST, PUT, DELETE, PATCH, OPTIONS)
  • Binary body payloads (no Base64 encoding overhead)
  • Header preservation (cookies, auth tokens, content types)
  • Parallel request multiplexing (GUID-based request IDs)
  • Self-signed certificate support (local development)
  • 30s timeout per request, 10MB max body size

TCP Port Scanning

  • Single port probe with open/closed/error status
  • Multi-port scan (up to 100 ports per request)
  • 10 concurrent TCP connections per scan
  • Service banner grabbing (SSH, FTP, SMTP, etc.)
  • Bidirectional TCP data relay
  • REST API: POST /api/v1/tunnels/{id}/tcp-scan

How ArmoTunnel Compares

ArmoTunnel is the only tunneling solution built specifically for DAST scanning. Here's how it stacks up against general-purpose tunneling tools.

Capability ArmoTunnel ngrok Cloudflare Tunnel localtunnel
Primary Use Case DAST Scanning Development Production Development
DAST Integration
TCP Port Scanning TCP tunnels (paid)
Binary Protocol QUIC HTTP
Auto Target Verification N/A N/A N/A
Security Plugin Coverage 474+ plugins N/A N/A N/A
Request Multiplexing
Self-Contained Binary Requires Node.js
Price (Tunnel Only) Included in plan $8-25/mo Free (limited) Free (unstable)
Price (Tunnel + DAST) From £19/mo $8/mo + separate DAST Free + separate DAST Free + separate DAST

Other tools require you to buy a tunnel + a separate DAST scanner + configure integration between them. ArmoTunnel is built into the ArmoScan platform — zero integration effort.

CLI Reference

ArmoTunnel is a single binary with no external dependencies. Run it from anywhere.

Usage

armotunnel [options] Options: -t, --target <url> Local application URL (required) e.g., http://localhost:3000 -k, --api-key <key> ArmoScan API key (required) Get yours: Settings → API Keys -s, --server <host> ArmoScan server address Default: app.armoscan.com --version Show version information --help Show help

Examples

Scan a local React app:

$ armotunnel --target http://localhost:3000 --api-key ask_xxx

Scan an intranet application:

$ armotunnel --target https://192.168.1.50:8443 --api-key ask_xxx

Use a custom ArmoScan server:

$ armotunnel -t http://localhost:8080 -k ask_xxx -s mycompany.armoscan.com

Live Request Log

  ArmoTunnel v1.0.0

  Status:    Connected
  Forwarding: https://a7f3bc91.armoscan.comhttp://localhost:3000

  Use this URL as your scan target in ArmoScan.
  Press Ctrl+C to disconnect.

[14:32:01] GET  /              → 200 (45ms, 12.3KB)
[14:32:01] GET  /css/style.css → 200 (12ms, 2.1KB)
[14:32:02] POST /api/login     → 200 (120ms, 0.4KB)
[14:32:03] GET  /api/users     → 200 (85ms, 8.7KB)
[14:32:04] PUT  /api/users/1   → 403 (32ms, 0.1KB)
[14:32:05] GET  /admin          → 404 (15ms, 0.2KB)
[14:32:06] POST /api/search    → 200 (210ms, 15.4KB)

ArmoTunnel Plans

ArmoTunnel is included in all Developer plans. Choose the plan that fits your team.

Developer Solo

Individual developer — scan local apps only

£19/mo

billed monthly

  • 1 concurrent tunnel
  • 1 user seat
  • Tunnel scanning only
  • All 474+ security plugins
  • HTML + JSON reports
  • Auto-verified targets
  • No external FQDN scanning
Start 7-Day Trial

Developer ISV

ISV / Enterprise — full platform access

£149/mo

multi-tenant, billed monthly

  • 5 concurrent tunnels
  • 5 user seats
  • Tunnel + FQDN scanning
  • Multi-tenant (custom subdomain)
  • White-label reports + SLA compliance
  • Advanced monitoring + threat detection
  • Full API + SDK + MCP Server access
  • Priority support (4h SLA)
Contact Sales

Download ArmoTunnel

Single binary, zero dependencies. Download, authenticate, and start scanning.

Linux (x64)

Ubuntu 20.04+, Debian 11+, Fedora 36+, RHEL 8+

Download .deb Package or download standalone binary (.tar.gz)
$ sudo dpkg -i armotunnel_1.0.0_amd64.deb $ armotunnel --help

Windows (x64)

Windows 10 (1607+), Windows 11, Windows Server 2016+

Download .msi Installer or download standalone binary (.zip)
> armotunnel.exe --help

Security

ArmoTunnel is designed with defense-in-depth. Your local application is never directly exposed to the internet.

API Key Authentication

Every tunnel requires a valid API key. Anonymous tunnels cannot be created. Keys are scoped to specific tenants.

WSS Encryption

All tunnel traffic is encrypted via WebSocket Secure (WSS) over TLS 1.3. Traffic inspection at intermediate hops is impossible.

24h Auto-Expire

Tunnels automatically expire after 24 hours. Heartbeat monitoring disconnects idle tunnels after 90 seconds of silence.

Tenant Isolation

Each tunnel is bound to a specific tenant. Other tenants cannot access or even discover your tunnel subdomain.

Unpredictable Subdomains

8-character hex subdomains provide 4.3 billion combinations. Brute-force subdomain discovery is infeasible.

Rate Limiting

100 requests/second per tunnel subdomain. 10MB max request/response body size. Plan-based tunnel count limits.

Frequently Asked Questions

ngrok is a general-purpose tunneling tool for development and testing. ArmoTunnel is purpose-built for DAST security scanning — it's integrated directly into the ArmoScan platform, supports TCP port scanning through the tunnel, auto-verifies tunnel targets (no domain ownership proof needed), and uses a binary WebSocket protocol optimized for security testing workloads. You don't need to configure anything extra — just start the tunnel and scan.
Yes! Developer Solo includes 1 concurrent tunnel. This plan is designed for individual developers who want to security-test their local applications before deployment. Note that Developer Solo is tunnel-only — you cannot scan external FQDNs. Upgrade to Developer Team for external domain scanning.
No. Your application is never directly accessible from the internet. ArmoTunnel establishes an outbound WebSocket connection from your machine to ArmoScan's infrastructure. Only ArmoScan's scanner engine can send requests through the tunnel. The tunnel subdomain (e.g., a7f3bc91.armoscan.com) is only useful within the ArmoScan platform.
No. Tunnel targets are automatically verified when you add them to ArmoScan. Since the tunnel runs on your machine and you control what application it points to, domain ownership verification is not required. Just enter the tunnel URL as your target and start scanning immediately.
ArmoTunnel automatically attempts to reconnect with exponential backoff (2s, 4s, 8s, ... up to 60s, max 10 attempts). If the same subdomain is still reserved (within 60 seconds), the tunnel reconnects seamlessly. ArmoScan's scanner will receive 502 responses during the disconnection window, and the scan will continue once the tunnel is restored.
Yes. ArmoTunnel supports both HTTP request relay (Layer 7) and TCP port scanning (Layer 4). The TCP relay allows ArmoScan to probe open ports, grab service banners, and detect exposed services on your local network — all through the encrypted tunnel. Up to 100 ports can be scanned per request with 10 concurrent TCP connections.
ArmoTunnel is a single self-contained binary (~25MB) with zero external dependencies. It runs on Linux x64 (Ubuntu 20.04+, Debian 11+, Fedora 36+, RHEL 8+) and Windows x64 (Windows 10 1607+, Windows 11, Windows Server 2016+). It requires outbound WSS connectivity on port 443 — no inbound firewall rules needed.

Scan Your Local Apps Today

Download ArmoTunnel, start a tunnel in 30 seconds, and run a full DAST scan against your localhost — no public exposure, no domain verification, no configuration.

Version 1.0.0 · Linux x64 · Windows x64 · Self-contained binary