Skip to main content

cascade

cascade is a visual, pipeline-driven desktop file manager.

You select files, add operations in panes from left to right, and only the final pane writes to disk.

Think of it as Unix pipes with a face.

Current State

  • UI: PySide6 (Qt) desktop application.
  • Status: Alpha — approaching first release (Milestone 2).
  • Full standard file-management workflow works end-to-end.

Project details and roadmap live in spec/design.md and spec/roadmap.md.

Quick Start

Download cascade-x86_64.AppImage from the releases page, then:

chmod +x cascade-x86_64.AppImage
./cascade-x86_64.AppImage

No Python or installation required. Works on any distro with glibc 2.17+.

Python / uv

pip install cascade-fm   # or: uv tool install cascade-fm
cascade

From source

git clone <repository-url>
cd cascade
uv sync
uv run cascade

For troubleshooting and platform notes, see docs/installation.md.

How cascade works

Pipeline model:

[ Browse Files ] -> [ Filter ] -> [ Transform ] -> [ Save To ]
  • Pane 1 is the filesystem browser.
  • Each next pane applies one operation to the previous pane output.
  • Executing a pane marks panes to the right as stale.
  • Final output is written only by the final write operation.

Built-in Operations

Operation Description
filter_extension / filter_name Browser-side filtering by extension or name glob
rename Plain rename, search & replace, or regex replace with capture groups
save_to Copy files to a target directory (with conflict policy)
move_to Move files to a target directory (with conflict policy)
image_transform Resize, convert format, rotate, compress, strip EXIF
create_archive Create zip / tar / tar.gz / tar.bz2 / tar.xz archives
unarchive Extract archives (with optional single-root flatten)
delete_files Permanently delete files with in-UI confirmation

Features

  • Pipeline model — chain operations left to right; only the final pane writes to disk
  • Session restore — reopen the last pipeline on launch (configurable: ask / auto / off)
  • Workflow save/load — save named pipelines as JSON, reload them later
  • Preferences — start directory, default sort order, hidden-file toggle, bookmarks, language
  • Internationalisation — ships English and German; add custom languages via ~/.cascade/translations/
  • Caching — intermediate results stored in a content-addressable cache for fast re-execution

Known Limitations

  • Workflow/session JSON schema is version 1; use the same app version that wrote the file.
  • Very large directories (100k+ files) and heavy image transforms may slow the UI.
  • Advanced graph editing, branch pipelines, plugins, and remote filesystems are not yet implemented.
  • Language change requires an application restart to take effect.

Development

Setup

uv sync

Test / Lint / Typecheck

# tests
uv run pytest -q

# lint
uv run ruff check src tests

# typecheck
uv run pyright

Optional: task runner (just)

just test
just lint
just format
just typecheck
just build

Build / Publish

uv run python -m build

Upload (maintainers):

uv run twine upload dist/*

License

MIT

Metadata

Release files for cascade-fm 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cascade-fm 0.2.0
File Size Uploaded
cascade_fm-0.2.0.tar.gz 81.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for cascade-fm 0.2.0
File Interpreter ABI Platform
cascade_fm-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 166.6 kB

Release files / cascade_fm-0.2.0.tar.gz

Download URL cascade_fm-0.2.0.tar.gz
Size 81.8 kB
Tags Source
SHA-256 checksum
How to use checksums
66a275f1cffc9f8039d95370c1933d7cd0ee2f539e9b75846d416d3a5e77d8ef
BLAKE2b-256 checksum
How to use checksums
c9b89213832f41ae4b772a480c52681aee1d3a784a373790a17e8dfc5fdb2630
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.8 {"installer":{"name":"uv","version":"0.10.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / cascade_fm-0.2.0-py3-none-any.whl

Download URL cascade_fm-0.2.0-py3-none-any.whl
Size 84.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
483d4356901effd590906a96b227cf81341c0e1e64091831857f14ccb6b829bf
BLAKE2b-256 checksum
How to use checksums
70ee6f924042e1e606db798e2fc59e2221cada74a383a2e70d1e809a08a97d6e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.8 {"installer":{"name":"uv","version":"0.10.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page