The AI connectable video editor.
UltimateSlice is a Final Cut Pro–inspired non-linear video editor built with Rust and GTK4, powered by GStreamer for media playback and export.
Built in MCP server allows for AI collaboration.
- GTK4 application scaffold with dark theme styling
- Media library import with duration probing (video/audio/image)
- Source monitor with playback, scrubber, in/out marks, and timecode
- Timeline with multi-track rows, zoom/pan, clip selection, trim, move, razor
- Undo/Redo command history
- Inspector panel for selected clip properties
- MP4/H.264 export via GStreamer pipeline
- FCPXML 1.10–1.14 import + 1.14 export
- Optional MCP server (
--mcp) for JSON-RPC control
UltimateSlice uses open-source crates and runtime libraries, including:
gtk4-rs/gdk4/gio/glib— LGPL-2.1-or-latergstreamer-rs+ GStreamer — LGPL-2.1-or-laterquick-xml— MITserde/serde_json— MIT OR Apache-2.0uuid— MIT OR Apache-2.0anyhow/thiserror/log/env_logger— MIT OR Apache-2.0rustfft— MIT OR Apache-2.0ort(ONNX Runtime) /ndarray— MIT OR Apache-2.0- FFmpeg (tooling/runtime) — LGPL-2.1-or-later (Flatpak build enables GPL options)
- x264 (Flatpak build dependency) — GPL-2.0-or-later
For exact versions and full dependency tree, see Cargo.toml, Cargo.lock, and io.github.kmwallio.ultimateslice.yml.
See ROADMAP.md for upcoming features like thumbnails, audio waveforms, multi-track editing, transitions, and a program monitor.
See docs/ARCHITECTURE.md for the full layout and design notes. Highlights:
src/app.rs– GTK application setup and CSS loadingsrc/model/– core data model (Project,Track,Clip,MediaItem)src/media/– playback, thumbnails, and exportsrc/ui/– GTK widgets (timeline, inspector, media browser, preview)src/fcpxml/– FCPXML parser/writer
- Rust (edition 2021)
- GTK4 development libraries
- GStreamer + plugins for playback and export
On Linux, install GTK4 and GStreamer via your distribution packages.
Three tiers targeting up to 4K source media, each with suggested UltimateSlice preference settings.
| Component | Spec |
|---|---|
| CPU | Dual-core, 2.0 GHz+ |
| RAM | 4 GB |
| GPU | Integrated graphics (Intel HD / AMD APU), 512 MB shared VRAM |
| Storage | HDD (SSD recommended for proxy cache) |
Settings: Proxy Mode → Half or Quarter, Preview Quality → Quarter, Hardware Acceleration → Off, GSK Renderer → Cairo, Playback Priority → Smooth
| Component | Spec |
|---|---|
| CPU | Quad-core, 3.0 GHz+ |
| RAM | 8 GB |
| GPU | Integrated or discrete with VA-API support, 2 GB VRAM |
| Storage | SSD |
Settings: Proxy Mode → Off, Preview Quality → Half or Auto, Hardware Acceleration → On, GSK Renderer → Auto (OpenGL), Playback Priority → Balanced
| Component | Spec |
|---|---|
| CPU | 6+ cores, 3.5 GHz+ |
| RAM | 16 GB+ |
| GPU | Discrete GPU with VA-API, 4 GB+ VRAM |
| Storage | NVMe SSD |
Settings: Proxy Mode → Off, Preview Quality → Full, Hardware Acceleration → On, GSK Renderer → Vulkan, Playback Priority → Accurate, Real-time Preview → On
Notes:
- VA-API hardware decoding supports H.264, H.265/HEVC, VP9, and AV1.
- Export uses FFmpeg (CPU-based) — more cores = faster exports.
- Flatpak includes
--device=drifor GPU access; native installs need VA-API drivers.
# from the project root
cargo build
cargo run
To run with MCP server enabled:
cargo run -- --mcp
To open a project file at startup from program arguments:
cargo run -- /path/to/project.uspxml
When using the MCP socket transport (running instance), you can use the Python bridge client:
python3 tools/mcp_socket_client.py
Optional socket override:
python3 tools/mcp_socket_client.py --socket /tmp/ultimateslice-mcp.sock
The client reads JSON-RPC lines from stdin and writes responses to stdout.
See docs/user/python-mcp.md for complete command examples.
A Flatpak manifest is provided at io.github.kmwallio.ultimateslice.yml.
flatpak-builder build-dir io.github.kmwallio.ultimateslice.yml --user --install --force-clean
flatpak run io.github.ultimateslice
- GTK4 callbacks cannot unwind panics. Avoid
RefCelldouble-borrows in UI callbacks. - The project shares a single GStreamer
playbinfor source and timeline playback.
This project is licensed under the GNU General Public License v3.0.
