Metadata-Version: 2.5
Name: cutpoint
Version: 0.2.0
Summary: Local, agent-driven AI video editor: finds highlights, cuts clips, builds montages, handles 360 video.
License-Expression: MIT
License-File: LICENSE
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Multimedia :: Video
Requires-Python: <3.13,>=3.12
Requires-Dist: faster-whisper>=1.2.1
Requires-Dist: numpy<3,>=2.5.4
Requires-Dist: opencv-python>=5.0.0.93
Requires-Dist: opentimelineio>=0.18.1
Requires-Dist: requests>=2.34.2
Requires-Dist: scenedetect>=0.7.2
Provides-Extra: all
Requires-Dist: nvidia-cublas-cu12>=12.4; (sys_platform == 'linux') and extra == 'all'
Requires-Dist: nvidia-cublas-cu12>=12.9.2.10; (sys_platform == 'win32') and extra == 'all'
Requires-Dist: nvidia-cudnn-cu12>=9.1; (sys_platform == 'linux') and extra == 'all'
Requires-Dist: nvidia-cudnn-cu12>=9.27.0.42; (sys_platform == 'win32') and extra == 'all'
Requires-Dist: onnxruntime>=1.31.0; extra == 'all'
Requires-Dist: open-clip-torch>=3.3.0; extra == 'all'
Requires-Dist: panns-inference>=0.1.1; extra == 'all'
Requires-Dist: rapidocr-onnxruntime>=1.4.4; extra == 'all'
Requires-Dist: scikit-learn>=1.9.1; extra == 'all'
Requires-Dist: scipy>=1.18.1; extra == 'all'
Requires-Dist: telemetry-parser>=0.3.0; extra == 'all'
Requires-Dist: torch==2.14.1; extra == 'all'
Requires-Dist: torchlibrosa>=0.1.0; extra == 'all'
Requires-Dist: torchvision==0.29.1; extra == 'all'
Provides-Extra: dev
Requires-Dist: fastapi>=0.116; extra == 'dev'
Requires-Dist: httpx>=0.27; extra == 'dev'
Requires-Dist: pre-commit>=3.7; extra == 'dev'
Requires-Dist: pytest>=8; extra == 'dev'
Requires-Dist: ruff==0.17.1; extra == 'dev'
Requires-Dist: uvicorn>=0.30; extra == 'dev'
Provides-Extra: events
Requires-Dist: onnxruntime>=1.31.0; extra == 'events'
Requires-Dist: open-clip-torch>=3.3.0; extra == 'events'
Requires-Dist: panns-inference>=0.1.1; extra == 'events'
Requires-Dist: rapidocr-onnxruntime>=1.4.4; extra == 'events'
Requires-Dist: scikit-learn>=1.9.1; extra == 'events'
Requires-Dist: scipy>=1.18.1; extra == 'events'
Requires-Dist: torch==2.14.1; extra == 'events'
Requires-Dist: torchlibrosa>=0.1.0; extra == 'events'
Requires-Dist: torchvision==0.29.1; extra == 'events'
Provides-Extra: gpu
Requires-Dist: nvidia-cublas-cu12>=12.4; (sys_platform == 'linux') and extra == 'gpu'
Requires-Dist: nvidia-cublas-cu12>=12.9.2.10; (sys_platform == 'win32') and extra == 'gpu'
Requires-Dist: nvidia-cudnn-cu12>=9.1; (sys_platform == 'linux') and extra == 'gpu'
Requires-Dist: nvidia-cudnn-cu12>=9.27.0.42; (sys_platform == 'win32') and extra == 'gpu'
Provides-Extra: ski
Requires-Dist: telemetry-parser>=0.3.0; extra == 'ski'
Provides-Extra: ui
Requires-Dist: fastapi>=0.116; extra == 'ui'
Requires-Dist: uvicorn>=0.30; extra == 'ui'
Description-Content-Type: text/markdown

<p align="center">
  <img src="https://raw.githubusercontent.com/FerventOrange/cutpoint/main/docs/assets/logo-256.png" alt="Cutpoint logo: a clapperboard with three characters peeking out" width="200">
</p>

# Cutpoint

Cutpoint is an AI video editor that your coding agent drives. Tell the agent to edit a video and
it finds the best moments, cuts them into clips and assembles the result. All analysis runs on
your own computer, so your agent does not spend API credits on video, and your original files
are never changed.

[Are you an AI agent? Start here](https://github.com/FerventOrange/cutpoint/blob/main/AGENTS.md)

(Installed from PyPI? Run `cutpoint guide`.)

## What you get

- Trimmed, numbered clips of the best moments
- A transcript of the video with timestamps
- A finished video, `final.mp4`, plus timelines you can open in DaVinci Resolve
- Vertical (9:16) versions for shorts and reels
- Works on gameplay, action-cam, sport, funny moments, commentary and 360 video

## Use it

1. Install Cutpoint (below).
2. Open your agent (Claude Code, Codex, Grok CLI or any CLI agent) in the Cutpoint folder, or
   tell it where Cutpoint is.
3. Ask it to edit your video:

   > Edit D:\Videos\clip.mp4 into a 60 second highlights video with Cutpoint.

   > Find the funniest moments in ~/Videos/stream.mp4 and show me the clips before you
   > assemble them.

   > Make a vertical montage from ~/Videos/ride.mp4.

The agent runs Cutpoint, shows you the clips and writes the result into a project folder.
Delete or rename clips to change the cut, then ask the agent to assemble again.

One-command editing (`cutpoint edit`), a first-run setup wizard and an agent skill are
planned. Today the agent runs the steps itself using [AGENTS.md](https://github.com/FerventOrange/cutpoint/blob/main/AGENTS.md).

### Local browser workspace

For standard video, you can review and edit highlights without an agent:

```bash
uv run --extra ui cutpoint ui
```

Open the complete URL printed in the terminal (including its session token). Pick a source
file or folder, analyze it, trim and reorder moments, export clips, then assemble and preview
the final video. Footage stays on your
computer; each export gets a new folder so previous exports are retained. The UI does not
expose the specialized action-cam or 360 workflows.

For a tool install, use `uv tool install "cutpoint[ui]" --reinstall`, then `cutpoint ui`.
See the [command reference](docs/commands.md#ui) for details.

## Requirements

- Windows or Linux
- Python 3.12 and [uv](https://docs.astral.sh/uv/)
- ffmpeg
- An NVIDIA GPU is recommended (add the `gpu` extra for GPU Whisper). Without one, everything
  still runs but slower.
- Optional: Ollama for AI frame rating, extra downloads (about 8 GB) for sound, on-screen text
  and scene-description features

## Install

```powershell
winget install --id Gyan.FFmpeg -e
winget install --id astral-sh.uv -e
git clone https://github.com/FerventOrange/cutpoint.git
cd cutpoint
uv sync
uv run cutpoint paths
```

To get a global `cutpoint` command instead, run `uv tool install cutpoint` (from PyPI) after
installing ffmpeg and uv.

On Linux:

```bash
sudo apt install ffmpeg        # or dnf, pacman, zypper, ...
curl -LsSf https://astral.sh/uv/install.sh | sh
. "$HOME/.local/bin/env"
git clone https://github.com/FerventOrange/cutpoint.git
cd cutpoint
uv sync
uv run cutpoint paths
```

With an NVIDIA GPU, run `uv sync --extra gpu` (or `uv tool install "cutpoint[gpu]"`) for GPU
Whisper; the base install transcribes on the CPU. The optional extras and model downloads are explained in
[Getting started](https://github.com/FerventOrange/cutpoint/blob/main/docs/getting-started.md).

AMD video encoding uses VAAPI on Linux or AMF on supported FFmpeg/driver installations.
AMD transcription remains on CPU. Run `uv run cutpoint capabilities` to distinguish detected
GPU vendors from working encoders and see the selected backend. Use `video_encoder` in
`config.json` or `CUTPOINT_VIDEO_ENCODER` (`auto`, `nvenc`, `amf`, `vaapi`, `cpu`) to override it.

## Documentation

- [Getting started](https://github.com/FerventOrange/cutpoint/blob/main/docs/getting-started.md): install, first run, where data is stored, models
- [Using Cutpoint from an agent](https://github.com/FerventOrange/cutpoint/blob/main/docs/agents.md): set up Claude Code, Codex, Grok or another agent
- [Workflows](https://github.com/FerventOrange/cutpoint/blob/main/docs/workflows/README.md): montages, game streams, action-cam, 360 video, vertical output
- [Command reference](https://github.com/FerventOrange/cutpoint/blob/main/docs/commands.md)
- [Configuration](https://github.com/FerventOrange/cutpoint/blob/main/docs/configuration.md)
- [Troubleshooting](https://github.com/FerventOrange/cutpoint/blob/main/docs/troubleshooting/README.md)
- [FAQ](https://github.com/FerventOrange/cutpoint/blob/main/docs/faq.md)
- [Architecture](https://github.com/FerventOrange/cutpoint/blob/main/docs/architecture.md), [Contributing](https://github.com/FerventOrange/cutpoint/blob/main/CONTRIBUTING.md), [Security](https://github.com/FerventOrange/cutpoint/blob/main/SECURITY.md)
- [Insta360 SDK](https://github.com/FerventOrange/cutpoint/blob/main/docs/insta360-sdk.md): optional, for high-quality 360 stitching

## License

Cutpoint is released under the [MIT License](https://github.com/FerventOrange/cutpoint/blob/main/LICENSE).
