> ## Documentation Index
> Fetch the complete documentation index at: https://proxy-hopper.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Proxy Hopper

> A rotating HTTP/HTTPS proxy server that routes outbound requests through a pool of external proxy IP addresses.

<div className="overview-page">
  <div className="overview-hero">
    <img src="https://mintcdn.com/none-7f946ec7/SWuRMFjHS-bIuE4k/logo/light.svg?fit=max&auto=format&n=SWuRMFjHS-bIuE4k&q=85&s=5abd12b864402f5718d8e6c4c050a7eb" alt="Proxy Hopper" className="overview-hero-logo logo-light" width="380" height="60" data-path="logo/light.svg" />

    <img src="https://mintcdn.com/none-7f946ec7/SWuRMFjHS-bIuE4k/logo/dark.svg?fit=max&auto=format&n=SWuRMFjHS-bIuE4k&q=85&s=be82908d065bdcbd1b8a4addd2e9ef0d" alt="Proxy Hopper" className="overview-hero-logo logo-dark" width="380" height="60" data-path="logo/dark.svg" />

    <p>A rotating HTTPS proxy server that routes outbound requests through a pool of external proxy IP addresses — with automatic retries, failure tracking, and IP quarantine.</p>

    <div className="overview-hero-buttons">
      <a href="/quickstart" className="btn-primary">Get started →</a>
      <a href="https://github.com/cams-data/proxy-hopper-v2" className="btn-secondary">GitHub</a>
      <a href="https://github.com/cams-data/proxy-hopper-v2/releases" className="btn-secondary">Releases</a>
    </div>
  </div>

  <div className="overview-tagline">
    <span><span className="dot">●</span>Open Source</span>
    <span><span className="dot">●</span>Self Hostable</span>
    <span><span className="dot">●</span>Docker Ready</span>
    <span><span className="dot">●</span>No cloud required</span>
  </div>

  <hr className="hr-top" />

  <h2>The problem</h2>

  <p>When your application needs to make outbound HTTP requests at scale — scraping, API polling, data collection — you run into rate limits, IP blocks, and connection failures. Managing a pool of proxy IPs manually means writing retry logic, tracking which IPs are healthy, rotating through them fairly, and handling failures gracefully. Every project reinvents this wheel.</p>

  <p>Proxy Hopper solves it once, as a standalone service.</p>

  <img src="https://mintcdn.com/none-7f946ec7/ZHV78cQkV9QqmgoT/images/diagram-light.svg?fit=max&auto=format&n=ZHV78cQkV9QqmgoT&q=85&s=ab2665e58d93ef2d9ffc1c5d61b7e7a9" alt="Proxy Hopper architecture" className="overview-diagram block dark:hidden" width="740" height="160" data-path="images/diagram-light.svg" />

  <img src="https://mintcdn.com/none-7f946ec7/ZHV78cQkV9QqmgoT/images/diagram-dark.svg?fit=max&auto=format&n=ZHV78cQkV9QqmgoT&q=85&s=0dd7a96004a32cbd0411aa49e263ed6b" alt="Proxy Hopper architecture" className="overview-diagram hidden dark:block" width="740" height="160" data-path="images/diagram-dark.svg" />

  <hr />

  <h2 className="mb-lg">How it works</h2>

  <Steps>
    <Step title="Configure your proxy providers and targets">
      Define your external proxy IPs — grouped by provider with credentials and region tags. Set targets as URL regex patterns, each with its own pool, rate limit, and retry policy.
    </Step>

    <Step title="Point your application at Proxy Hopper">
      Add one header to your HTTP requests: <code>X-Proxy-Hopper-Target</code> set to the real destination. No changes to your application logic.
    </Step>

    <Step title="Proxy Hopper handles the rest">
      IP rotation, rate limiting between requests, automatic quarantine of failing IPs, retries on failure, and health probing in the background.
    </Step>
  </Steps>

  <hr />

  <h2 className="mb-lg">Key features</h2>

  <CardGroup cols={3}>
    <Card title="IP rotation" icon="rotate">
      Each target maintains its own FIFO queue. IPs are held off the pool between requests to respect rate limits.
    </Card>

    <Card title="Automatic quarantine" icon="shield-halved">
      IPs that accumulate failures are quarantined automatically and released back into rotation after a configurable timeout.
    </Card>

    <Card title="Per-target policies" icon="sliders">
      Different targets can have different rate limits, retry counts, and quarantine thresholds — match the policy to the API.
    </Card>

    <Card title="Full retry support" icon="arrows-rotate">
      Proxy Hopper owns the HTTPS connection end-to-end, so it can retry any failed request on a different IP — including mid-flight 429s and 5xx errors.
    </Card>

    <Card title="Redis HA" icon="server">
      In-memory backend for single-instance deployments. Redis backend for multi-instance HA with shared pool state.
    </Card>

    <Card title="Prometheus metrics" icon="chart-line">
      Full observability — request rates, retry counts, queue depth, quarantine events, and per-IP probe status.
    </Card>
  </CardGroup>

  <hr />

  <h2 className="mb-lg">Get started</h2>

  ```yaml theme={}
  # config.yaml
  targets:
    - name: general
      regex: '.*'
      ipList:
        - "10.0.0.1:3128"
        - "10.0.0.2:3128"
      minRequestInterval: 1s
      numRetries: 3
  ```

  ```bash theme={}
  docker run -v $(pwd)/config.yaml:/etc/proxy-hopper/config.yaml \
    -p 8080:8080 \
    ghcr.io/cams-data/proxy-hopper:latest
  ```

  ```python theme={}
  import requests
  session = requests.Session()
  session.headers["X-Proxy-Hopper-Target"] = "https://api.example.com"
  resp = session.get("http://localhost:8080/v1/endpoint")
  ```

  <CardGroup cols={2}>
    <Card title="Full quick start" icon="rocket" href="/quickstart">
      Step-by-step guide with providers, pools, and a first proxied request.
    </Card>

    <Card title="Docker images" icon="docker" href="/admin/deployment/docker/simple">
      Pre-built multi-arch images for amd64 and arm64.
    </Card>
  </CardGroup>

  <hr />

  <h2 className="mb-lg">Deployment options</h2>

  <CardGroup cols={3}>
    <Card title="Single container" icon="box" href="/admin/deployment/docker/simple">
      In-memory backend. Zero external dependencies. Good for development and single-host deployments.
    </Card>

    <Card title="Docker Compose + Redis" icon="layer-group" href="/admin/deployment/docker/advanced">
      Redis backend. Survives restarts. Scale to multiple replicas sharing a single IP pool.
    </Card>

    <Card title="Kubernetes" icon="dharmachakra" href="/admin/deployment/kubernetes/helm">
      Official Helm chart — Deployment, HPA, Redis subchart, ServiceMonitor. Scales automatically with traffic.
    </Card>
  </CardGroup>

  <hr />

  <h2>Free and open source. Forever.</h2>

  <p>Proxy Hopper is MIT licensed and built for self-hosting. No SaaS, no usage fees, no data leaving your infrastructure. Run it on a single container or scale it across a Kubernetes cluster — you own the deployment entirely.</p>

  <p className="mb-lg">Contributions, bug reports, and feature requests are welcome on <a href="https://github.com/cams-data/proxy-hopper-v2" className="accent">GitHub</a>.</p>

  ```bash theme={}
  # Memory backend (default)
  docker pull ghcr.io/cams-data/proxy-hopper:latest

  # Redis backend
  docker pull ghcr.io/cams-data/proxy-hopper:latest-redis
  ```
</div>
