{
  "contract": "computer-remote-access-clients-v1",
  "session_reasons": [
    "remote_auth_failed",
    "remote_account_blocked",
    "remote_host_unreachable",
    "remote_tls_failed",
    "remote_connect_failed",
    "remote_session_ended",
    "remote_capture_blocked",
    "remote_gateway_no_answer"
  ],
  "clients": [
    {
      "access_type": "rdp",
      "sign_in_origins": [],
      "status": "available",
      "placement": "lambda-microvm",
      "client": {"name": "FreeRDP 3", "package": "freerdp3-x11", "arm64": "yes", "amd64": "yes", "launch": "proxy_remote_open"},
      "client_process_images": [{"platform": "COMPUTER_DESKTOP_PLATFORM_LINUX", "process_image": "xfreerdp3"}, {"platform": "COMPUTER_DESKTOP_PLATFORM_WINDOWS", "process_image": "mstsc.exe"}, {"platform": "COMPUTER_DESKTOP_PLATFORM_WINDOWS", "process_image": "msrdc.exe"}],
      "sign_in_fields": ["host", "username", "server_certificate", "password"],
      "optional_fields": ["port", "domain", "remote_app", "load_balance_info"],
      "secret_fields": ["password"],
      "bot_mfa_methods": ["none", "network_exemption"],
      "capture_blocking_signals": ["uniform_frame"],
      "terms": "Apache-2.0",
      "setup_notes": ["Sign the bot in with a standard (non-administrator) Windows account, and on the host set the User Account Control policy \"Behavior of the elevation prompt for standard users\" to \"Automatically deny elevation requests\". Otherwise an elevation request opens a credential prompt that blocks the session until a person answers it.", "Without the Remote Desktop Session Host role, Windows Server allows two signed-in sessions, and a disconnected session keeps its slot. Give each run that can overlap its own bot user. When every slot is taken, Windows asks which session to disconnect, and the bot cannot sign in.", "Keep people off the bot account. Windows reconnects a sign-in to that user's existing session, including one open at the server's console, so a person signed in as the bot loses that session to the run."]
    },
    {
      "access_type": "rd_gateway",
      "sign_in_origins": [],
      "status": "available",
      "placement": "lambda-microvm",
      "client": {"name": "FreeRDP 3", "package": "freerdp3-x11", "arm64": "yes", "amd64": "yes", "launch": "proxy_remote_open"},
      "client_process_images": [{"platform": "COMPUTER_DESKTOP_PLATFORM_LINUX", "process_image": "xfreerdp3"}, {"platform": "COMPUTER_DESKTOP_PLATFORM_WINDOWS", "process_image": "mstsc.exe"}, {"platform": "COMPUTER_DESKTOP_PLATFORM_WINDOWS", "process_image": "msrdc.exe"}],
      "sign_in_fields": ["gateway_host", "gateway_certificate", "host", "username", "server_certificate", "password"],
      "optional_fields": ["port", "domain", "remote_app", "load_balance_info"],
      "secret_fields": ["password"],
      "bot_mfa_methods": ["none", "network_exemption"],
      "capture_blocking_signals": ["uniform_frame"],
      "terms": "Apache-2.0",
      "setup_notes": ["Allow the gateway server outbound HTTP (TCP port 80) to the internet. While it signs in a connection, Windows downloads certificate trust lists from ctldl.windowsupdate.com over port 80; when that is blocked, an open can wait 45 seconds or more and fail with remote_gateway_no_answer.", "Sign the bot in with a standard (non-administrator) Windows account, and on the host set the User Account Control policy \"Behavior of the elevation prompt for standard users\" to \"Automatically deny elevation requests\". Otherwise an elevation request opens a credential prompt that blocks the session until a person answers it.", "Without the Remote Desktop Session Host role, Windows Server allows two signed-in sessions, and a disconnected session keeps its slot. Give each run that can overlap its own bot user. When every slot is taken, Windows asks which session to disconnect, and the bot cannot sign in.", "Keep people off the bot account. Windows reconnects a sign-in to that user's existing session, including one open at the server's console, so a person signed in as the bot loses that session to the run."]
    },
    {
      "access_type": "citrix_workspace",
      "sign_in_origins": [],
      "status": "planned",
      "placement": "lambda-microvm",
      "client": {"name": "Citrix Workspace app for Linux", "package": "unknown", "arm64": "unknown", "amd64": "unknown", "launch": "ica_handoff"},
      "client_process_images": [{"platform": "COMPUTER_DESKTOP_PLATFORM_LINUX", "process_image": "wfica"}, {"platform": "COMPUTER_DESKTOP_PLATFORM_WINDOWS", "process_image": "wfica32.exe"}],
      "sign_in_fields": ["store_url", "username", "password"],
      "optional_fields": ["domain"],
      "secret_fields": ["password"],
      "bot_mfa_methods": ["none", "network_exemption", "totp_in_vault"],
      "capture_blocking_signals": ["app_protection", "uniform_frame"],
      "terms": "Citrix EULA; licence or trial is a user decision",
      "setup_notes": []
    },
    {
      "access_type": "citrix_html5",
      "sign_in_origins": [],
      "status": "planned",
      "placement": "lambda-microvm",
      "client": {"name": "Citrix Workspace app for HTML5", "package": "desktop browser", "arm64": "yes", "amd64": "unknown", "launch": "browser"},
      "client_process_images": [],
      "sign_in_fields": ["store_url", "username", "password"],
      "optional_fields": ["domain"],
      "secret_fields": ["password"],
      "bot_mfa_methods": ["none", "network_exemption", "totp_in_vault"],
      "capture_blocking_signals": ["app_protection", "uniform_frame"],
      "terms": "Citrix EULA; licence or trial is a user decision",
      "setup_notes": []
    },
    {
      "access_type": "horizon_web",
      "sign_in_origins": [],
      "status": "planned",
      "placement": "lambda-microvm",
      "client": {"name": "Horizon HTML Access", "package": "desktop browser", "arm64": "yes", "amd64": "unknown", "launch": "browser"},
      "client_process_images": [],
      "sign_in_fields": ["workspace_url", "username", "password"],
      "optional_fields": ["domain"],
      "secret_fields": ["password"],
      "bot_mfa_methods": ["none", "network_exemption", "totp_in_vault"],
      "capture_blocking_signals": ["horizon_blocking", "uniform_frame"],
      "terms": "unknown",
      "setup_notes": []
    },
    {
      "access_type": "avd_web",
      "sign_in_origins": ["https://login.microsoftonline.com"],
      "status": "planned",
      "placement": "lambda-microvm",
      "client": {"name": "Windows App web client", "package": "desktop browser", "arm64": "yes", "amd64": "unknown", "launch": "browser"},
      "client_process_images": [],
      "sign_in_fields": ["workspace_url", "username", "password"],
      "optional_fields": ["totp_seed"],
      "secret_fields": ["password", "totp_seed"],
      "bot_mfa_methods": ["network_exemption", "totp_in_vault"],
      "capture_blocking_signals": ["screen_capture_protection", "uniform_frame"],
      "terms": "unknown",
      "setup_notes": []
    },
    {
      "access_type": "windows_365_web",
      "sign_in_origins": ["https://login.microsoftonline.com"],
      "status": "planned",
      "placement": "lambda-microvm",
      "client": {"name": "Windows App web client", "package": "desktop browser", "arm64": "yes", "amd64": "unknown", "launch": "browser"},
      "client_process_images": [],
      "sign_in_fields": ["workspace_url", "username", "password"],
      "optional_fields": ["totp_seed"],
      "secret_fields": ["password", "totp_seed"],
      "bot_mfa_methods": ["network_exemption", "totp_in_vault"],
      "capture_blocking_signals": ["screen_capture_protection", "uniform_frame"],
      "terms": "unknown",
      "setup_notes": []
    },
    {
      "access_type": "vpn_then_rdp",
      "sign_in_origins": [],
      "status": "unknown",
      "placement": "unknown",
      "client": {"name": "unknown", "package": "unknown", "arm64": "unknown", "amd64": "unknown", "launch": "unknown"},
      "client_process_images": [],
      "sign_in_fields": ["host", "username", "server_certificate", "password"],
      "optional_fields": ["port", "domain"],
      "secret_fields": ["password"],
      "bot_mfa_methods": ["unknown"],
      "capture_blocking_signals": ["uniform_frame", "unknown"],
      "terms": "unknown",
      "setup_notes": []
    },
    {
      "access_type": "teamviewer",
      "sign_in_origins": [],
      "status": "unknown",
      "placement": "unknown",
      "client": {"name": "TeamViewer web client", "package": "desktop browser", "arm64": "unknown", "amd64": "unknown", "launch": "browser"},
      "client_process_images": [],
      "sign_in_fields": ["workspace_url", "username", "password"],
      "optional_fields": [],
      "secret_fields": ["password"],
      "bot_mfa_methods": ["unknown"],
      "capture_blocking_signals": ["unknown"],
      "terms": "unknown",
      "setup_notes": []
    },
    {
      "access_type": "anydesk",
      "sign_in_origins": [],
      "status": "unknown",
      "placement": "unknown",
      "client": {"name": "AnyDesk", "package": "unknown", "arm64": "unknown", "amd64": "unknown", "launch": "native_client"},
      "client_process_images": [],
      "sign_in_fields": ["username", "password"],
      "optional_fields": [],
      "secret_fields": ["password"],
      "bot_mfa_methods": ["unknown"],
      "capture_blocking_signals": ["unknown"],
      "terms": "unknown",
      "setup_notes": []
    },
    {
      "access_type": "screenconnect",
      "sign_in_origins": [],
      "status": "unknown",
      "placement": "unknown",
      "client": {"name": "ScreenConnect", "package": "unknown", "arm64": "unknown", "amd64": "unknown", "launch": "native_client"},
      "client_process_images": [],
      "sign_in_fields": ["username", "password"],
      "optional_fields": [],
      "secret_fields": ["password"],
      "bot_mfa_methods": ["unknown"],
      "capture_blocking_signals": ["unknown"],
      "terms": "unknown",
      "setup_notes": []
    },
    {
      "access_type": "splashtop",
      "sign_in_origins": [],
      "status": "unknown",
      "placement": "unknown",
      "client": {"name": "Splashtop Web App", "package": "desktop browser", "arm64": "unknown", "amd64": "unknown", "launch": "browser"},
      "client_process_images": [],
      "sign_in_fields": ["workspace_url", "username", "password"],
      "optional_fields": [],
      "secret_fields": ["password"],
      "bot_mfa_methods": ["unknown"],
      "capture_blocking_signals": ["unknown"],
      "terms": "unknown",
      "setup_notes": []
    },
    {
      "access_type": "chrome_remote_desktop",
      "sign_in_origins": ["https://accounts.google.com"],
      "status": "unknown",
      "placement": "unknown",
      "client": {"name": "Chrome Remote Desktop web client", "package": "desktop browser", "arm64": "unknown", "amd64": "unknown", "launch": "browser"},
      "client_process_images": [],
      "sign_in_fields": ["workspace_url", "username", "password"],
      "optional_fields": [],
      "secret_fields": ["password"],
      "bot_mfa_methods": ["unknown"],
      "capture_blocking_signals": ["unknown"],
      "terms": "unknown",
      "setup_notes": []
    }
  ]
}
