Scout is in active development. Public launch: 1 December 2026. Until then, explore the live sandboxes and docs — public signup and API keys are not open yet.
Self-hosted

Run Scout inside your infrastructure

Get a license key in the Scout console, deploy on your server with Docker, and call the same API — no credits. Free Developer tier (one per account) or annual Team / Business plans via Stripe.

How to get your server running

You bring the machine (laptop, VM, or cluster). We issue the lic_scout_… key. Scout validates it on startup — without a valid key, the API does not serve /v1.

  1. 1

    Sign in to the Scout console

    Open the Scout console (app.scout.macrocontent.dev) with your Macro account. Go to Self-hosted in the sidebar.

    Open Scout console → Self-hosted

  2. 2

    Generate your license key

    Developer (free): one key per account. Developer+, Team, or Business: annual Stripe checkout in the console. Copy lic_scout_… when shown — only once.

    lic_scout_a1b2c3d4_8f3e2a…
  3. 3

    Redeem the key on your server

    Set SCOUT_LICENSE_KEY and SCOUT_DEPLOYMENT_MODE=self_hosted. Scout validates against Macrocontent on startup and every few minutes (7-day offline grace if the platform is unreachable).

    SCOUT_DEPLOYMENT_MODE=self_hosted
    SCOUT_LICENSE_KEY=lic_scout_…
    SCOUT_PLATFORM_API_BASE_URL=https://api.macrocontent.dev
    SCOUT_PLATFORM_SECRET=your-shared-secret
  4. 4

    Run Scout with Docker Compose

    Start API + Redis on your machine or VM. The server refuses /v1 without a valid license. Optional: set SCOUT_INSTANCE_ID so the console shows a stable deployment name.

  5. 5

    Confirm heartbeat in the console

    curl /health → license.valid: true. In Scout console → Self-hosted, your deployment appears with a green heartbeat within ~15 minutes.

    curl http://localhost:3009/health

Cloud = we run the browsers, you pay subscription + credits. Self-hosted = you run the software, you pay an annual license by workers — not per screenshot or crawl.

  • Inspect private websites and staging systems
  • Automate internal applications without sending data to our cloud
  • Control browser workers, scaling, and network rules yourself
  • No consumption-based billing — annual license by worker count
  • Meet security and compliance requirements on your own infra

Cloud vs self-hosted

AreaScout CloudScout Self-Hosted
InfrastructureMacrocontentYour servers / VPC / K8s
OperationsManaged by MacroManaged by you
ScalingAutomaticYour worker pool
BillingSubscription + creditsAnnual license (no credits)
Domain verifyRequired for powerful actionsConfigurable (off by default)
Private networksBlocked in productionYes — staging, VPN, intranet
Data residencyScout cloudStays on your infra
UpdatesAutomaticPinned image tags you control
Best forFast start, developers, agentsCompliance, internal QA, private apps

Plans (annual, no credits)

Developer (free, non-commercial) — one license per account. Developer+ — commercial use, same limits, from €990/year. Team / Business — more workers and deployments.

What is a worker? One browser worker can run one active browser job at a time.

Developer

Free

Full API for local dev, evaluation, and personal projects — not licensed for commercial use.

Free Developer: development, evaluation, and personal projects only. Commercial use requires Developer+ or higher.

Deployments
1 non-production
Browser workers
2
API calls
Unlimited
Support
Community

Developer+

€990/year~€83/mo

For freelancers and small products: commercial personal and small commercial projects on one deployment.

Commercial use allowed — same limits as Developer, licensed for production.

Deployments
1 production
Browser workers
2
API calls
Unlimited
Support
Email
Effective rate
~€495/worker/year

Team

€2,990/year~€249/mo

Software, updates, browser orchestration, security patches, API compatibility, and email support.

Commercial production with higher parallel throughput.

Deployments
1 production
Browser workers
10
API calls
Unlimited
Support
Email
Effective rate
~€299/worker/year

Business

€7,990/year~€666/mo

Volume pricing vs Team — more deployments and priority support for larger orgs.

Multiple clusters and environments.

Deployments
5 production
Browser workers
30
API calls
Unlimited
Support
Priority
Effective rate
~€266/worker/year

Free Developer: development, evaluation, and personal projects only. Commercial use requires Developer+ or higher. Macrocontent Terms of Use (§6 Scout) apply — same account as Macrocontent Cloud.

At a glance

Account

Macro account + Scout console

Sign in → Self-hosted. Same Stripe customer as Scout Cloud for paid tiers.

License

Generate lic_scout_…

Free Developer (1×) or paid Developer+ / Team / Business via Stripe.

Deploy

Docker on your infra

Compose file below — API, Redis, optional workers. You control the host.

Live

Heartbeat + API

License validated; use the same /v1 API as Scout Cloud on your URL.

Architecture

Scout API
    ↓
Job queue (Redis)
    ↓
Browser workers
    ↓
Result storage / webhook
    ↓
API response

Start with Docker Compose on a single host. Kubernetes Helm charts follow later.

Docker Compose

Paste your lic_scout_… from the console into .env, then docker compose up.

docker-compose.yml
# .env — paste your license key from the Scout console
SCOUT_LICENSE_KEY=lic_scout_…
SCOUT_PLATFORM_SECRET=your-shared-secret

services:
  scout-api:
    image: ghcr.io/macrocontent/scout:latest
    ports:
      - "3009:3009"
    environment:
      SCOUT_DEPLOYMENT_MODE: self_hosted
      SCOUT_LICENSE_KEY: ${SCOUT_LICENSE_KEY}
      SCOUT_PLATFORM_API_BASE_URL: https://api.macrocontent.dev
      SCOUT_PLATFORM_SECRET: ${SCOUT_PLATFORM_SECRET}
      SCOUT_REDIS_URL: redis://redis:6379
      SCOUT_INSTANCE_ID: my-laptop
    depends_on:
      - redis

  redis:
    image: redis:7-alpine

Configurable security policy

Self-hosted does not require DNS domain verification by default — you operate the infrastructure. Optional allow/block lists, private network toggle, and the ability to turn verify back on.

Environment
SCOUT_DEPLOYMENT_MODE=self_hosted
SCOUT_LICENSE_KEY=lic_scout_…

# JSON policy (or use individual env vars below)
SCOUT_SECURITY_POLICY='{
  "requireDomainVerification": false,
  "allowPrivateNetworks": true,
  "allowedDomains": ["*.example.com", "staging.internal"],
  "blockedDomains": ["*.bank.example"]
}'

# Or:
# SCOUT_REQUIRE_DOMAIN_VERIFY=false
# SCOUT_ALLOW_PRIVATE_NETWORKS=true
# SCOUT_ALLOWED_DOMAINS=*.example.com,staging.internal
# SCOUT_BLOCKED_DOMAINS=*.bank.example