{
  "schema_version": "1.0",
  "updated_on": "2026-10-12",
  "name": "Nightscape Stacker",
  "id": "https://nightscapestacker.app/",
  "description": "A browser beta that aligns and averages the sky in a matching fixed-tripod nightscape sequence while retaining one reference-frame foreground.",
  "canonical_url": "https://nightscapestacker.app/",
  "application_url": "https://nightscapestacker.app/workbench.html",
  "category": "nightscape photo stacking",
  "availability": {
    "current_release": "public browser beta",
    "installation_required": false,
    "supported_browsers": [
      "desktop Chrome",
      "desktop Edge"
    ],
    "account_required_for_beta_use": false,
    "full_resolution_16_bit_tiff_export": "free during beta",
    "general_sales_open": false,
    "native_mac_app_released": false,
    "planned_browser_version_1_price": {
      "status": "planned; not currently on general sale",
      "currency": "USD",
      "amount": "19.99",
      "billing": "one-time browser license",
      "applicable_tax": "additional",
      "subscription": false,
      "all_future_platforms_included": false
    }
  },
  "inputs": {
    "capture": "untracked fixed-tripod sequence",
    "minimum_frames": 3,
    "maximum_frames": 30,
    "maximum_megapixels_per_frame": 32,
    "matching_requirements": [
      "pixel dimensions",
      "framing",
      "focal length",
      "exposure settings",
      "white balance"
    ],
    "color_space": "supported sRGB; unsupported embedded profiles are rejected",
    "formats": [
      {
        "format": "JPEG",
        "source_bits_per_channel": [
          8
        ]
      },
      {
        "format": "PNG",
        "source_bits_per_channel": [
          8
        ]
      },
      {
        "format": "TIFF",
        "source_bits_per_channel": [
          8,
          16
        ],
        "requirements": [
          "single page",
          "three-channel RGB",
          "opaque",
          "standard embedded sRGB ICC profile",
          "uncompressed or supported ZIP-compressed strips"
        ]
      }
    ],
    "untagged_8_bit_jpeg_png": "interpreted as sRGB with a visible warning; original color space cannot be verified",
    "requirements_url": "https://nightscapestacker.app/guide.html#prepare"
  },
  "processing": {
    "location": "on the user's device in the browser",
    "photo_upload_for_processing": false,
    "sky_mask": "manual Horizon tool, Sky brush and Eraser at preview resolution; no automatic fine-branch segmentation",
    "sky_combination": "star alignment followed by linear-light averaging of accepted sky samples",
    "minimum_successful_frames_including_reference": 3,
    "foreground": "one selected reference photo; not stacked or denoised",
    "edge_behavior": "reference pixels retained conservatively near unsupported edges and the sky boundary",
    "moving_object_rejection": false,
    "tab_must_remain_open": true,
    "memory_and_storage": "requires sufficient local memory and working space; compressed input size is not a memory estimate"
  },
  "outputs": [
    {
      "type": "photo",
      "format": "TIFF",
      "bits_per_channel": 16,
      "color_space": "sRGB",
      "generated_locally": true
    },
    {
      "type": "sky mask",
      "format": "PNG",
      "resolution": "preview resolution",
      "generated_locally": true
    },
    {
      "type": "processing report",
      "generated_locally": true
    },
    {
      "type": "project",
      "format": "JSON",
      "includes": [
        "mask",
        "reference choice",
        "frame selection",
        "settings"
      ],
      "includes_photos": false
    }
  ],
  "unsupported": [
    "direct camera RAW or DNG input",
    "CMYK or grayscale TIFF",
    "alpha-channel, tiled, LZW or BigTIFF variants",
    "tracked-sky capture",
    "panoramas or fisheye workflows",
    "mixed exposures",
    "separate blue-hour foreground",
    "foreground stacking or denoising",
    "automatic fine-branch segmentation",
    "automatic rejection of moving clouds, satellite trails or aircraft trails"
  ],
  "quality_limits": [
    "Severe lens distortion or poor star coverage can make a sequence unsuitable.",
    "A low global alignment residual does not guarantee that every corner is correct.",
    "An 8-bit input retains its source precision limits after a 16-bit export.",
    "The user should inspect the center, four corners, horizon and downloaded TIFF.",
    "The synthetic workspace sample demonstrates controls, not real-photo quality."
  ],
  "network": {
    "site_and_export_access_checks_require_connection": true,
    "fully_offline_operation_promised": false,
    "browser_assistant_privacy": "A separate assistant's access and data handling depend on its own permissions and provider."
  },
  "browser_assistant_use": {
    "guide_url": "https://nightscapestacker.app/agents.html",
    "interaction": "ordinary visible, labeled browser controls where supported by the assistant's browser",
    "file_access": "the user selects their own photos through the browser file picker",
    "user_review": [
      "input files",
      "foreground reference",
      "manual sky mask",
      "actual-pixel result",
      "downloaded TIFF"
    ],
    "canvas_masking": "may require direct user input",
    "remote_photo_processing_api": false,
    "authorization": "These public product facts do not grant access to user files or permission to act on a user's behalf."
  },
  "page_scoped_browser_tools": {
    "availability": "Feature-detected only in the open workbench tab when the browser exposes document.modelContext with registerTool support.",
    "fallback": "ordinary visible browser controls",
    "cloud_api": false,
    "public_mcp_server": false,
    "remote_endpoint": false,
    "read_only_data_boundary": "Product requirements or sanitized workspace state only; no filenames, photo pixels, EXIF, reports or payment data.",
    "unavailable_actions": [
      "reading or selecting local files",
      "exporting or downloading images",
      "making payments",
      "changing purchase access"
    ],
    "tools": [
      {
        "name": "get_stacking_requirements",
        "read_only": true,
        "description": "Reads supported inputs, workflow limits and current availability."
      },
      {
        "name": "get_workspace_status",
        "read_only": true,
        "description": "Reads sanitized counts, dimensions, progress, allowed next actions and workspaceRevision."
      },
      {
        "name": "load_controls_sample",
        "read_only": false,
        "description": "Loads and waits for the synthetic controls sample only in a completely empty workspace.",
        "limits": [
          "Never replaces photos, masks, results or a waiting project.",
          "The sample demonstrates controls, not real-photo quality."
        ]
      },
      {
        "name": "apply_sky_horizon",
        "read_only": false,
        "description": "Replaces the mask with the sky above the user's chosen horizon boundary; tools do not inspect photo pixels.",
        "required_inputs": [
          "expectedRevision from a fresh get_workspace_status workspaceRevision",
          "2–64 normalized x/y points, each coordinate between 0 and 1"
        ],
        "point_limits": "x strictly increases from 0 to 1; y=0 is the top of the image",
        "effects": [
          "Clears an existing stack result.",
          "The visible Undo control can restore the previous mask."
        ],
        "stale_revision_rejected": true
      },
      {
        "name": "start_local_stack",
        "read_only": false,
        "description": "Starts and waits for the actual local alignment and stacking result.",
        "required_inputs": [
          "expectedRevision from a fresh get_workspace_status workspaceRevision"
        ],
        "requirements": [
          "at least three compatible selected frames",
          "an included valid reference",
          "a sufficient applied sky mask",
          "an idle workspace without a waiting project"
        ],
        "stale_revision_rejected": true,
        "completion_is_quality_validation": false,
        "user_review_after_completion": "Inspect stars at 100%, all four corners, the horizon and the downloaded TIFF through the visible interface."
      }
    ]
  },
  "canonical_pages": {
    "home": "https://nightscapestacker.app/",
    "stacker": "https://nightscapestacker.app/workbench.html",
    "file_guide": "https://nightscapestacker.app/guide.html",
    "tutorial": "https://nightscapestacker.app/milky-way-stacking-browser.html",
    "software_comparison": "https://nightscapestacker.app/milky-way-stacking-software.html",
    "troubleshooting": "https://nightscapestacker.app/fix-doubled-stars-stacking.html",
    "browser_assistant_guide": "https://nightscapestacker.app/agents.html",
    "product_facts": "https://nightscapestacker.app/product.json",
    "privacy": "https://nightscapestacker.app/privacy.html",
    "terms": "https://nightscapestacker.app/terms.html",
    "refunds": "https://nightscapestacker.app/refunds.html",
    "chinese_guide": "https://nightscapestacker.app/zh.html",
    "tester_guide": "https://nightscapestacker.app/try-with-your-photos.html",
    "real_photo_case": "https://nightscapestacker.app/real-nightscape-case.html"
  },
  "support": {
    "public_email": "contactjensennow@gmail.com",
    "first_message": "Browser version, format, image dimensions and a reviewed processing report are useful; original photos are not needed."
  },
  "identity": {
    "display_name": "Nightscape Stacker",
    "canonical_domain": "nightscapestacker.app",
    "english_tagline": "browser Milky Way stacking tool",
    "chinese_tagline": "浏览器银河叠加工具",
    "official_profiles": [
      "https://www.youtube.com/@nightscapestacker",
      "https://www.producthunt.com/products/nightscape-stacker"
    ]
  },
  "documentation_languages": [
    "English",
    "Simplified Chinese"
  ],
  "interface_language": "English"
}
