{
  "version": "2",
  "generatedAt": "2026-11-03T22:49:39.280Z",
  "listing": {
    "slug": "bluenviron--mediamtx",
    "name": "MediaMTX",
    "tagline": "Single-binary media server for SRT, WebRTC, RTSP, RTMP, HLS, and MoQ, configured by one YAML file and a Control API.",
    "shortTagline": "Single-binary media server",
    "description": "A zero-dependency Go media router that publishes, reads, proxies, records, and plays back live streams across protocols. Every setting is in mediamtx.yml and hot-reloads; the same settings and all sessions are exposed through an HTTP Control API with an OpenAPI spec in the repo.",
    "capabilities": [
      "adaptable",
      "operable"
    ],
    "vertical": "video-streaming",
    "alternativeTo": [
      "Wowza"
    ],
    "shape": "product",
    "formFactor": "api",
    "executionModel": "deterministic",
    "provenance": "human-written",
    "codeStack": {
      "languages": [
        "Go"
      ],
      "frameworks": [],
      "packageManager": "go modules",
      "database": [],
      "hostingTarget": [
        "Linux",
        "Windows",
        "macOS",
        "Docker",
        "Raspberry Pi"
      ]
    },
    "modelStack": null,
    "repos": [
      {
        "url": "https://github.com/bluenviron/mediamtx",
        "owner": "bluenviron",
        "name": "mediamtx",
        "license": "MIT",
        "stars": 20007,
        "lastCommit": "2026-09-02"
      }
    ],
    "interface": {
      "kind": "api",
      "url": "https://mediamtx.org/docs/features/control-api",
      "official": true,
      "hosted": "local"
    },
    "operability": "official",
    "recommendedWrapper": null,
    "reach": [
      {
        "job": "Publish streams to the server",
        "reachable": true,
        "evidence": "api/openapi.yaml: /v3/config/paths/add/{name}; publishers connect over any protocol"
      },
      {
        "job": "Read streams in another protocol",
        "reachable": true,
        "evidence": "README: automatic conversion; paths served on every enabled protocol"
      },
      {
        "job": "Serve several streams on separate paths",
        "reachable": true,
        "evidence": "api/openapi.yaml: /v3/config/paths/list, /v3/paths/list"
      },
      {
        "job": "Reload configuration without dropping clients",
        "reachable": true,
        "evidence": "api/openapi.yaml: /v3/config/global/patch, /v3/config/pathdefaults/patch"
      },
      {
        "job": "Record streams to disk",
        "reachable": true,
        "evidence": "path config record keys through /v3/config/paths/patch; /v3/recordings/list"
      },
      {
        "job": "Play back recordings",
        "reachable": true,
        "evidence": "mediamtx.yml playback server; api/playback.openapi.yaml"
      },
      {
        "job": "Authenticate users (internal, HTTP, JWT)",
        "reachable": true,
        "evidence": "authMethod, authInternalUsers, authHTTPAddress, authJWTJWKS keys settable through /v3/config/global/patch"
      },
      {
        "job": "Forward and proxy streams to other servers",
        "reachable": true,
        "evidence": "api/openapi.yaml: /v3/paths/forward/list; source key in path config"
      },
      {
        "job": "Kick sessions and inspect connections",
        "reachable": true,
        "evidence": "api/openapi.yaml: /v3/rtspsessions/kick/{id}, /v3/webrtcsessions/kick/{id}, /v3/srtconns/list"
      },
      {
        "job": "Run hooks on connect, publish, read",
        "reachable": true,
        "evidence": "runOnConnect, runOnInit, runOnReady keys in mediamtx.yml, patchable over the API"
      }
    ],
    "editions": [
      {
        "name": "Free",
        "price": null,
        "open": true,
        "distributions": [
          {
            "kind": "binary",
            "url": "https://github.com/bluenviron/mediamtx/releases"
          },
          {
            "kind": "container",
            "url": "https://hub.docker.com/r/bluenviron/mediamtx"
          },
          {
            "kind": "source",
            "url": "https://github.com/bluenviron/mediamtx"
          }
        ]
      }
    ],
    "skills": {
      "kind": "none",
      "paths": [],
      "install": null,
      "note": "No SKILL.md, Claude Code plugin, or skills install target in the repo."
    },
    "customization": {
      "summary": "Everything is in mediamtx.yml: protocol addresses, auth, recording, playback, hooks, and per-path settings under pathDefaults and paths. Set api: yes to enable the Control API. Any key can also be overridden with an MTX_-prefixed environment variable. No code changes needed for normal use.",
      "envVars": [
        "MTX_<PARAMNAME> (env override of any mediamtx.yml key, for example MTX_RTSPADDRESS)"
      ],
      "configFiles": [
        "mediamtx.yml"
      ],
      "promptFiles": [],
      "effort": "config-only",
      "editCount": 2
    },
    "useWhen": [
      "I need to take an SRT or RTMP feed from a camera or OBS and hand it out as WebRTC and HLS from one box",
      "I want an agent to add camera paths, start recordings, and kick sessions over HTTP"
    ],
    "accounts": [],
    "active": true,
    "lastActivity": "2026-09-02",
    "gotchas": [
      "Control API is off by default and binds to localhost only; set api: yes and secure it before exposing",
      "No transcoding: MediaMTX routes and remuxes; use ffmpeg hooks if you need to change codecs",
      "Thin product surface by design; the value is the protocol matrix, not a UI"
    ],
    "fit": {
      "adaptable": 3,
      "operable": 3
    },
    "evidence": {
      "formFactor": "README: single executable server, no dependency or interpreter",
      "executionModel": "no model at runtime",
      "operability": "api/openapi.yaml in the repo; Control API page at mediamtx.org published by the Builder",
      "effort": "mediamtx.yml at repo root lists every key; README: hot reload",
      "editions": "MIT LICENSE; releases and Docker Hub",
      "active": "GitHub pushedAt 2026-09-02; release v1.20.1 2026-08-18"
    },
    "confidence": {
      "formFactor": 0.9,
      "executionModel": 0.99,
      "operability": 0.95,
      "effort": 0.95,
      "reach": 0.9,
      "editions": 0.99
    },
    "openQuestions": [
      "Confirm the MTX_ environment variable convention from the mediamtx.org configuration page; it was not fetched this pass (the mediamtx.yml comments only show MTX_CONN_* hook variables)"
    ],
    "sources": [
      {
        "url": "https://mediamtx.org",
        "foundBy": "sourcing:video-streaming:curated"
      },
      {
        "url": "https://github.com/bluenviron/mediamtx#control-api",
        "foundBy": "sourcing:video-streaming:curated"
      },
      {
        "url": "https://github.com/bluenviron/mediamtx/blob/main/api/openapi.yaml",
        "foundBy": "analysis"
      }
    ],
    "research": {
      "stage": "verified",
      "verdict": "unverified",
      "reason": "Official Control API with complete Reach and a single documented YAML surface under MIT; both capabilities at 3.",
      "disputed": []
    },
    "url": "apps/bluenviron--mediamtx.html",
    "coverage": "complete",
    "paid": false,
    "source": "research/verified/bluenviron--mediamtx.json"
  }
}
