{
  "version": "2",
  "generatedAt": "2026-11-03T22:49:39.280Z",
  "listing": {
    "slug": "ant-media--ant-media-server",
    "name": "Ant Media Server",
    "tagline": "Open-core WebRTC, SRT, RTMP, and HLS media server with a REST API for broadcasts, recording, and tokens.",
    "shortTagline": "WebRTC media server",
    "description": "A Java media server whose Community Edition is Apache-2.0 and whose Enterprise Edition adds adaptive bitrate, clustering, and SDK support. Broadcasts, VoD, tokens, IP cameras, and playlists are managed through a versioned REST API that the Builder documents and ships in both editions.",
    "capabilities": [
      "adaptable",
      "operable"
    ],
    "vertical": "video-streaming",
    "alternativeTo": [
      "Wowza",
      "Mux"
    ],
    "shape": "product",
    "formFactor": "api",
    "executionModel": "deterministic",
    "provenance": "human-written",
    "codeStack": {
      "languages": [
        "Java"
      ],
      "frameworks": [
        "Red5",
        "Tomcat",
        "ffmpeg"
      ],
      "packageManager": "maven",
      "database": [
        "MapDB",
        "MongoDB (optional)"
      ],
      "hostingTarget": [
        "Linux",
        "Docker",
        "Kubernetes",
        "AWS Marketplace",
        "Azure Marketplace"
      ]
    },
    "modelStack": null,
    "repos": [
      {
        "url": "https://github.com/ant-media/Ant-Media-Server",
        "owner": "ant-media",
        "name": "Ant-Media-Server",
        "license": "Apache-2.0 (Community Edition; Enterprise under a separate license)",
        "stars": 4726,
        "lastCommit": "2026-09-03"
      }
    ],
    "interface": {
      "kind": "api",
      "url": "https://antmedia.io/docs/",
      "official": true,
      "hosted": "local"
    },
    "operability": "official",
    "recommendedWrapper": null,
    "reach": [
      {
        "job": "Create, list, update, and delete broadcasts",
        "reachable": true,
        "evidence": "BroadcastRestService.java: @Path /v2/broadcasts, /create, /create-list, /list/{offset}/{size}, /{id}"
      },
      {
        "job": "Start and stop pulled stream sources and IP cameras",
        "reachable": true,
        "evidence": "BroadcastRestService.java: /{id}/start, /{id}/stop, /{id}/ip-camera/move, /onvif-devices"
      },
      {
        "job": "Turn recording on or off per stream",
        "reachable": true,
        "evidence": "BroadcastRestService.java: /{id}/recording/{recording-status}"
      },
      {
        "job": "Issue and validate playback or publish tokens",
        "reachable": true,
        "evidence": "BroadcastRestService.java: /{id}/token, /{id}/tokens, /{id}/jwt-token, /validate-token"
      },
      {
        "job": "Add RTMP endpoints to republish a stream",
        "reachable": true,
        "evidence": "BroadcastRestService.java: /{id}/endpoint"
      },
      {
        "job": "Manage VoD files and convert HLS to MP4",
        "reachable": true,
        "evidence": "VoDRestService.java; BroadcastRestService: /{hls_filename}/hls-to-mp4"
      },
      {
        "job": "Read broadcast and WebRTC statistics",
        "reachable": true,
        "evidence": "BroadcastRestService.java: /{id}/broadcast-statistics, /total-broadcast-statistics, /webrtc-send-low-level-stats"
      },
      {
        "job": "Manage playlists and subscribers",
        "reachable": true,
        "evidence": "BroadcastRestService.java: /playlists/{id}/next, /{id}/subscribers"
      },
      {
        "job": "Adaptive bitrate transcoding",
        "reachable": false,
        "evidence": "README: Enterprise feature; not in Community Edition"
      },
      {
        "job": "Cluster across servers",
        "reachable": false,
        "evidence": "ClusterRestService exists but clustering is an Enterprise feature per README"
      }
    ],
    "editions": [
      {
        "name": "Community Edition",
        "price": null,
        "open": true,
        "distributions": [
          {
            "kind": "binary",
            "url": "https://github.com/ant-media/Ant-Media-Server/releases"
          },
          {
            "kind": "source",
            "url": "https://github.com/ant-media/Ant-Media-Server"
          },
          {
            "kind": "one-click",
            "url": "https://aws.amazon.com/marketplace/pp/prodview-okmynlgwgvq6w"
          }
        ]
      },
      {
        "name": "Enterprise Edition",
        "price": null,
        "open": false,
        "distributions": [
          {
            "kind": "hosted",
            "url": "https://antmedia.io/free-trial/"
          },
          {
            "kind": "one-click",
            "url": "https://aws.amazon.com/marketplace/pp/prodview-464ritgzkzod6"
          }
        ]
      }
    ],
    "skills": {
      "kind": "none",
      "paths": [],
      "install": null,
      "note": "No SKILL.md, Claude Code plugin, or skills install target in the repo."
    },
    "customization": {
      "summary": "Server-wide settings live in conf/red5.properties and per-application settings in webapps/<app>/WEB-INF/red5-web.properties (HLS, WebRTC, recording, tokens, webhooks). Most of these are also editable from the web panel and the REST API, so an Adopter rarely edits Java. Adding protocol behavior means forking.",
      "envVars": [],
      "configFiles": [
        "src/main/server/conf/red5.properties",
        "src/main/server/webapps/root/WEB-INF/red5-web.properties",
        "src/main/server/conf/logback.xml",
        "src/main/server/conf/jee-container.xml"
      ],
      "promptFiles": [],
      "effort": "config-only",
      "editCount": 4
    },
    "useWhen": [
      "I need sub-second WebRTC playback for an auction or classroom and want to run the server myself",
      "I want an agent to spin up broadcasts, hand out tokens, and pull IP cameras through an API"
    ],
    "accounts": [
      "antmedia.io account (Enterprise only)"
    ],
    "active": true,
    "lastActivity": "2026-09-03",
    "gotchas": [
      "Two license files in the repo; GitHub shows 'other'. Community is Apache-2.0, Enterprise is not",
      "Adaptive bitrate, clustering, and the mobile SDKs are Enterprise-only; check the edition before promising features",
      "Java server with Tomcat; expect a heavier footprint than MediaMTX"
    ],
    "fit": {
      "adaptable": 2,
      "operable": 3
    },
    "evidence": {
      "formFactor": "README: headless media server managed through web panel and REST API",
      "executionModel": "no model at runtime",
      "operability": "REST services in src/main/java/io/antmedia/rest published by ant-media; docs at antmedia.io/docs",
      "effort": "conf/red5.properties and WEB-INF/red5-web.properties exist in src/main/server; the properties keys were not read this pass",
      "editions": "COMMUNITY_EDITION_LICENSE is Apache-2.0 for Community Edition; README lists Enterprise free trial and marketplaces",
      "active": "GitHub pushedAt 2026-09-03; release ams-v3.1.0 2026-08-31"
    },
    "confidence": {
      "formFactor": 0.9,
      "executionModel": 0.99,
      "operability": 0.9,
      "effort": 0.6,
      "reach": 0.8,
      "editions": 0.8
    },
    "openQuestions": [
      "Enterprise Edition pricing; antmedia.io/pricing returned 403 to the fetcher",
      "Confirm which red5-web.properties keys are documented for Adopters (antmedia.io docs returned 403)",
      "Confirm the Community versus Enterprise feature split from the current docs rather than the README summary"
    ],
    "sources": [
      {
        "url": "https://antmedia.io",
        "foundBy": "sourcing:video-streaming:github"
      },
      {
        "url": "https://github.com/ant-media/Ant-Media-Server",
        "foundBy": "sourcing:video-streaming:github"
      }
    ],
    "research": {
      "stage": "verified",
      "verdict": "unverified",
      "reason": "Official REST API with broad Reach in Community Edition; properties-file surface exists but is under-documented, and the open-core split needs a pricing check.",
      "disputed": []
    },
    "url": "apps/ant-media--ant-media-server.html",
    "coverage": "partial",
    "paid": false,
    "source": "research/verified/ant-media--ant-media-server.json"
  }
}
