- Rust 74.8%
- Kotlin 22.8%
- Shell 1.6%
- Fluent 0.5%
- GLSL 0.2%
- Other 0.1%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
Log In / Sign Up was a full-screen page; it now opens as a scrimmed card at the bottom over the current screen. Tap outside or Back closes it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CJzDGhoW7JwKEyJYrr7aoq |
||
| .claude | ||
| app | ||
| core | ||
| design | ||
| docs | ||
| gradle | ||
| scripts | ||
| server | ||
| .dockerignore | ||
| .editorconfig | ||
| .env.example | ||
| .gitignore | ||
| build.gradle.kts | ||
| Cargo.lock | ||
| Cargo.toml | ||
| CLAUDE.md | ||
| clippy.toml | ||
| deny.toml | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| LICENSE | ||
| README.md | ||
| rust-toolchain.toml | ||
| settings-gradle.lockfile | ||
| settings.gradle.kts | ||
| VERSION | ||
SlopCut
Free and open-source, mobile-first video editor for Android with on-device AI. Works fully offline; optionally syncs projects to your own self-hosted server.
Installation
App
Pre-built
Download slopcut-<version>.apk from the newest release on the
releases page and open it on your phone (Android 14+,
arm64). Check it against SHA256SUMS from the same release if you like. Updates install over the old version,
because every release is signed with the same key.
Build from source
Needs Linux, git, curl, unzip, JDK 17+ and rustup. scripts/setup installs everything
else (Rust targets, Android SDK + NDK, about 6 GB; details in docs/setup.md).
git clone https://git.slopmc.net/slop-GmBH/slopcut.git && cd slopcut
scripts/setup # idempotent, re-run whenever a tool is missing
./gradlew :app:assembleDebug # app/build/outputs/apk/debug/app-debug.apk
adb install app/build/outputs/apk/debug/app-debug.apk
A debug build has its own signing key: uninstall the release app before installing it (that deletes the app's
projects; export what you need first). Signed release builds: docs/release.md.
Server
The server is optional. Today it serves /v1/health and updates itself; accounts and cloud saves (A8) come
later.
Docker
You need Docker with Compose and a domain pointing at the host. The server speaks TLS 1.3 only and has no
plain-HTTP mode. The app accepts only certificates the phone trusts. Easiest: set SLOPCUT_TLS_DOMAIN in
.env, map "443:8443" and skip step 2; the server then gets and renews a Let's Encrypt certificate itself.
-
Get
docker-compose.ymlandserver.env.examplefrom the newest release. The image in that compose file is pinned by digest.mkdir slopcut-server && cd slopcut-server tag=vX.Y.Z # the newest release tag for f in docker-compose.yml server.env.example; do curl -fLO "https://git.slopmc.net/slop-GmBH/slopcut/releases/download/$tag/$f" done cp server.env.example .env -
Put the certificate chain and key into
./tls/asfullchain.pemandprivkey.pem. The container runs as uid 65532 and reads them read-only. With certbot:sudo certbot certonly --standalone -d slopcut.example.com mkdir -p tls sudo cp -L /etc/letsencrypt/live/slopcut.example.com/{fullchain,privkey}.pem tls/ sudo chown -R 65532:65532 tls && sudo chmod 600 tls/privkey.pemRepeat the copy after every renewal (for example in a certbot
--deploy-hook) and rundocker compose restart: the server loads the certificate only at start. -
Edit
.env. Invalid values stop the server at start with a clear log line. The defaults work; these are the settings people usually change:Setting Values SLOPCUT_AUTO_UPDATE0(default) never contacts the forge,1checks for signed updatesSLOPCUT_AUTO_UPDATE_BRANCHstable(default),beta, ordev(newest dev build; test servers only)SLOPCUT_AUTO_UPDATE_RULEnotify(default, log only),restart,instant, or dailyHH:MMSLOPCUT_AUTO_UPDATE_PING_INTERVALseconds between checks, 1 or more, default 86400 TZtime zone for HH:MM, e.g.Europe/BerlinUpdates are signed. The server checks the signature and the SHA-256 hash before it runs a new binary. A version that fails to start is rolled back.
-
Start the server and check it:
docker compose up -d && docker compose logs -f curl https://slopcut.example.com:8443/v1/healthTo serve on 443, change the port mapping to
"443:8443". A reverse proxy in front must pass TLS through or connect to the server overhttps://.
Without self-update, update with docker compose pull && docker compose up -d. The compose file mounts a named
volume at /var/lib/slopcut for data and staged updates. That volume must not be mounted noexec. To build
the image yourself: docker build -f server/Dockerfile -t slopcut-server . from the repo root.
Pelican Egg
An egg for Pelican, the Pterodactyl fork: egg-slopcut-server.yaml in every release,
source and full guide in server/deploy/pelican/.
- In the Pelican admin panel, go to Eggs → Import and use the egg file or the URL from the release notes. The egg then updates itself from that URL.
- Point a DNS record (e.g.
cut.example.com, Cloudflare: DNS only) at the node. - Create a server with that egg. The installer downloads the server binary for the node's CPU from the newest
release of the chosen update branch, checks it against
SHA256SUMS, and aborts if it does not match. - On the Startup tab, set Domain. The server gets its own Let's Encrypt certificate, which needs port 443 of the domain to reach it: an allocation on 443, or, if the node already uses 443, an SNI passthrough rule in the existing proxy (examples in the guide). Without a domain, upload certificate files instead. The panel checks every value.
- Start the server. The panel shows it as running when the server logs
listening (TLS only). Stopping sends^C, and the server finishes running requests first. In the app, the address is just the domain.
License
AGPL-3.0-only (LICENSE). Optional AI models from Desert Ant Labs are downloaded only on opt-in and are under
their own source-available license (desert-ant-labs-source-available-1.0, free up to 100k monthly active
devices per model). They are never bundled (docs/decisions/0002-desert-ant-models-optional-download.md).
Developer and agent docs: CLAUDE.md, docs/.