Metadata-Version: 2.5
Name: cutpoint
Version: 0.4.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: fastapi>=0.116
Requires-Dist: faster-whisper>=1.2.1
Requires-Dist: keyring>=25
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
Requires-Dist: telemetry-parser>=0.3.0
Requires-Dist: urllib3>=1.26
Requires-Dist: uvicorn>=0.30
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: torch==2.14.1; extra == 'all'
Requires-Dist: torchlibrosa>=0.1.0; extra == 'all'
Requires-Dist: torchvision==0.29.1; extra == 'all'
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: keyring
Provides-Extra: ski
Provides-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.

Without an agent, `cutpoint edit D:\Videos\clip.mp4 --kind montage` does it in one command
(see [commands](docs/commands.md#edit)). The agent works from
[AGENTS.md](https://github.com/FerventOrange/cutpoint/blob/main/AGENTS.md); `cutpoint skill install`
adds a Claude Code skill so it finds Cutpoint without being pointed at it.

### Local browser workspace

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

```bash
uv run 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 also makes
360 projects from Insta360 X3 footage ([360 video](docs/workflows/360.md#in-the-ui)) but does not
expose the action-cam workflows.

For a tool install, use `uv tool install cutpoint --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 5.1 or newer
- An NVIDIA GPU is recommended (add the `gpu` extra for GPU Whisper). Without one, everything
  still runs but slower.
- Optional: [Ollama](docs/getting-started.md#optional-ollama-for-frame-rating-and-ai-chat) for
  AI frame rating and the local AI Chat, 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
```

In a clone, `uv sync` installs everything, including torch and CUDA (about 7 GB or more). For a
lite environment use `uv sync --no-group full` and `uv run --no-group full ...` (or set
`UV_NO_GROUP=full`).

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
```

The same applies on Linux: a clone's `uv sync` installs everything (about 7 GB or more with torch
and CUDA); `uv sync --no-group full` (or `UV_NO_GROUP=full`) gives the lite environment.

A clone already includes the `gpu` extra, so Whisper uses an NVIDIA GPU there. A tool install
transcribes on the CPU unless you add it: `uv tool install "cutpoint[gpu]"`. 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)
- [Pipeline](https://github.com/FerventOrange/cutpoint/blob/main/docs/pipeline.md): diagrams of the analyze, clips and assemble flow
- [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).
