{
  "version": "2",
  "generatedAt": "2026-11-03T22:49:39.280Z",
  "listing": {
    "slug": "0xsline--openchatcut",
    "name": "OpenChatCut",
    "tagline": "Local-first conversational video editor whose built-in agent and external MCP clients share one set of timeline tools.",
    "shortTagline": "Conversational video editor",
    "description": "An AGPL Electron and web editor with a real multitrack timeline, transcript-driven cuts, captions, WebGL effects, and generation jobs. Codex or Claude Code connect over a Streamable HTTP MCP endpoint, edit an isolated draft, and submit it for approval inside the editor.",
    "capabilities": [
      "adaptable",
      "operable"
    ],
    "vertical": "video-streaming",
    "alternativeTo": [
      "Descript",
      "CapCut",
      "Adobe Premiere Pro"
    ],
    "shape": "product",
    "formFactor": "desktop",
    "executionModel": "hybrid",
    "provenance": "unknown",
    "codeStack": {
      "languages": [
        "TypeScript"
      ],
      "frameworks": [
        "Electron",
        "Remotion",
        "Vercel AI SDK",
        "ffmpeg"
      ],
      "packageManager": "npm",
      "database": [],
      "hostingTarget": [
        "local desktop",
        "localhost web"
      ]
    },
    "modelStack": {
      "providers": [
        "Anthropic",
        "OpenAI",
        "Gemini",
        "Kimi",
        "Qwen",
        "GLM",
        "DeepSeek",
        "MiniMax",
        "Mistral",
        "ElevenLabs",
        "WaveSpeed",
        "Kling",
        "Seedance",
        "BytePlus"
      ],
      "models": [],
      "requiredKeys": [
        "LLM_ANTHROPIC_API_KEY",
        "LLM_OPENAI_API_KEY",
        "LLM_GEMINI_API_KEY",
        "ELEVENLABS_API_KEY",
        "GEMINI_API_KEY",
        "IMAGE_API_KEY",
        "KLING_API_KEY",
        "SEEDANCE_API_KEY",
        "FIRECRAWL_API_KEY",
        "PEXELS_API_KEY"
      ],
      "promptLocations": [
        "src/agent/skills/",
        "~/.openchatcut/skills/<name>/SKILL.md"
      ],
      "tools": [
        "begin_edit_session",
        "review_edit_session",
        "get_edit_session",
        "import_asset",
        "import_folder",
        "manage_skill"
      ]
    },
    "repos": [
      {
        "url": "https://github.com/0xsline/OpenChatCut",
        "owner": "0xsline",
        "name": "OpenChatCut",
        "license": "AGPL-3.0",
        "stars": 1549,
        "lastCommit": "2026-08-31"
      }
    ],
    "interface": {
      "kind": "mcp",
      "url": "https://github.com/0xsline/OpenChatCut#using-openchatcut-with-codex--claude-code",
      "official": true,
      "hosted": "local"
    },
    "operability": "native",
    "recommendedWrapper": null,
    "reach": [
      {
        "job": "Multitrack timeline editing: move, trim, split, ripple, keyframes",
        "reachable": true,
        "evidence": "README: draft-safe project read/edit tools in an edit session; same EditorCore commands as the UI"
      },
      {
        "job": "Transcript-driven cuts and pause removal",
        "reachable": true,
        "evidence": "README Core Capabilities: word-level editing; edit tools apply to the draft"
      },
      {
        "job": "Captions with styles and SRT",
        "reachable": true,
        "evidence": "README: captions are timeline edits; translation is a job and may be excluded from drafts"
      },
      {
        "job": "WebGL effects, LUTs, transitions, zooms",
        "reachable": true,
        "evidence": "README: edits written to real clips, transitions, effects"
      },
      {
        "job": "Import local media",
        "reachable": true,
        "evidence": "README: import_asset and import_folder within AGENT_IMPORT_ROOTS"
      },
      {
        "job": "Create, list, and open projects",
        "reachable": true,
        "evidence": "README: project listing, creation, and navigation tools work without the editor open"
      },
      {
        "job": "AI generation: image, video, speech, music",
        "reachable": false,
        "evidence": "README: generation stays unavailable in external MCP sessions because a rejected proposal could not roll it back"
      },
      {
        "job": "Export MP4, audio, captions, FCPXML",
        "reachable": false,
        "evidence": "README: export is an immediate side-effect tool and is not exposed to external MCP sessions"
      },
      {
        "job": "Motion graphics templates",
        "reachable": null,
        "evidence": "README: built-in agent can generate MG clips; not stated whether external sessions can place them"
      },
      {
        "job": "Delete a project",
        "reachable": false,
        "evidence": "README: project deletion excluded from external sessions"
      }
    ],
    "editions": [
      {
        "name": "Free",
        "price": null,
        "open": true,
        "distributions": [
          {
            "kind": "binary",
            "url": "https://github.com/0xsline/OpenChatCut/releases/latest"
          },
          {
            "kind": "source",
            "url": "https://github.com/0xsline/OpenChatCut"
          },
          {
            "kind": "installable",
            "url": "https://github.com/0xsline/OpenChatCut#quick-start",
            "command": "npx skills add 0xsline/OpenChatCut"
          }
        ]
      }
    ],
    "skills": {
      "kind": "bundled",
      "paths": [
        "skills/openchatcut/SKILL.md",
        "src/agent/skills/*/SKILL.md"
      ],
      "install": "npx skills add 0xsline/OpenChatCut",
      "note": "Ships an installable skill that teaches a coding agent to drive the editor over MCP, plus built-in editing skills the in-app agent loads."
    },
    "customization": {
      "summary": "Copy .env.example to .env.local and set only the provider keys you use; LLM_PROVIDER picks the default chat model. MEDIA_DIR and AGENT_IMPORT_ROOTS control where media lives and what agents may read. Add or edit agent skills as SKILL.md files under ~/.openchatcut/skills/. Set OPENCHATCUT_MCP_TOKEN before exposing the MCP endpoint.",
      "envVars": [
        "LLM_PROVIDER",
        "LLM_ANTHROPIC_API_KEY",
        "LLM_ANTHROPIC_MODEL",
        "LLM_OPENAI_API_KEY",
        "LLM_OPENAI_MODEL",
        "LLM_GEMINI_API_KEY",
        "LLM_DEEPSEEK_API_KEY",
        "ELEVENLABS_API_KEY",
        "GEMINI_API_KEY",
        "GEMINI_IMAGE_MODEL",
        "IMAGE_API_KEY",
        "KLING_API_KEY",
        "SEEDANCE_API_KEY",
        "FIRECRAWL_API_KEY",
        "PEXELS_API_KEY",
        "PIXABAY_API_KEY",
        "UNSPLASH_ACCESS_KEY",
        "FREESOUND_API_KEY",
        "MEDIA_DIR",
        "AGENT_IMPORT_ROOTS",
        "UPLOAD_MAX_BYTES",
        "OPENCHATCUT_MCP_TOKEN",
        "OPENCHATCUT_RENDER_CONCURRENCY",
        "OPENCHATCUT_MAX_ACTIVE_EXPORTS",
        "OPENCHATCUT_H264_ENCODER",
        "R2_ACCOUNT_ID",
        "R2_BUCKET"
      ],
      "configFiles": [
        ".env.local",
        ".mcp.json"
      ],
      "promptFiles": [
        "~/.openchatcut/skills/<name>/SKILL.md",
        "src/agent/skills/"
      ],
      "effort": "config-only",
      "editCount": 31
    },
    "useWhen": [
      "I edit interviews by deleting words from a transcript and want Claude Code to do the rough cut while I keep undo and the timeline",
      "I want a CapCut-style editor where my keys stay on my machine and an agent proposes edits I approve"
    ],
    "accounts": [
      "one LLM provider account for the built-in agent (Anthropic, OpenAI, Gemini, or others)",
      "ElevenLabs, Kling, Seedance, Pexels (optional, per feature)"
    ],
    "active": true,
    "lastActivity": "2026-08-31",
    "gotchas": [
      "AGPL-3.0",
      "macOS builds are unsigned and not notarized; Gatekeeper will need manual approval",
      "External MCP sessions cannot generate, export, or delete; those stay in the UI or the built-in agent",
      "Requires Node 24.x to run from source"
    ],
    "fit": {
      "adaptable": 2,
      "operable": 3
    },
    "evidence": {
      "formFactor": "README: DMG, Windows installer, Linux AppImage; Electron in topics",
      "executionModel": "README: editor is deterministic; built-in agent runs a model loop on the local server",
      "operability": "README: 'agent-native'; built-in agent and external MCP share the same tools; Streamable HTTP endpoint at localhost:5199/api/external-mcp/mcp",
      "effort": ".env.example documents every provider variable and MCP token; skills are SKILL.md files",
      "editions": "README: independent open source (AGPL); no paid edition",
      "active": "GitHub pushedAt 2026-08-31"
    },
    "confidence": {
      "formFactor": 0.9,
      "executionModel": 0.85,
      "operability": 0.95,
      "effort": 0.9,
      "reach": 0.75,
      "editions": 0.95
    },
    "openQuestions": [
      "Count and names of the external MCP tools beyond the session tools; the README does not enumerate them",
      "Whether transcription jobs can be started from an external session"
    ],
    "sources": [
      {
        "url": "https://openchatcut.com",
        "foundBy": "sourcing:video-streaming:github"
      },
      {
        "url": "https://github.com/0xsline/OpenChatCut",
        "foundBy": "sourcing:video-streaming:github"
      }
    ],
    "research": {
      "stage": "verified",
      "verdict": "unverified",
      "reason": "Native MCP with deliberate partial Reach (edits yes, generation and export no); large documented env surface; AGPL caps Adaptable at 2.",
      "disputed": []
    },
    "url": "apps/0xsline--openchatcut.html",
    "coverage": "partial",
    "paid": false,
    "source": "research/verified/0xsline--openchatcut.json"
  }
}
