A modern desktop remote workspace for developers and operations teams. The official release is now available.
SSH terminals, SFTP and FTP files, workspace tabs, and transfer tasks in one focused desktop client.
中文 English
Download the latest release from GitHub Releases:
For step-by-step instructions, see the English Installation Guide or 简体中文安装指南.
- macOS: packages for Apple Silicon (arm64) and Intel (x64).
- Windows: x64 and ARM64 NSIS installers and portable
.exefiles; installed builds download, verify, and install architecture-matched updates after restart. - Linux: x86_64 and arm64
.deb,.rpm, and.AppImagepackages, plus Pacman.pkg.tar.zstpackages for Arch x86_64 and Arch Linux ARM aarch64.
Every Linux package includes the FileTerm launcher, application icons, AppStream metadata, and the MIT license. The .deb, .rpm, and Pacman packages declare runtime dependencies for the system package manager to install; the RPM package requires a distribution that provides WebKitGTK 4.1 and OpenSSL 3. AppImage runs without installation, bundles its runtime libraries, and includes a .zsync sidecar for differential updates with AppImageUpdate. It still requires a host glibc compatible with the Ubuntu 22.04 build baseline.
| Format | Architectures and supported systems | Install or run |
|---|---|---|
.AppImage |
x86_64, arm64; major Linux desktop distributions with AppImage support | chmod +x FileTerm-*-linux-<arch>.AppImage && ./FileTerm-*-linux-<arch>.AppImage |
.deb |
x86_64, arm64; Debian, Ubuntu, and derivatives | sudo apt install ./FileTerm-<version>-linux-<arch>.deb |
.rpm |
x86_64, arm64; Fedora, openSUSE, and RPM distributions with WebKitGTK 4.1 and OpenSSL 3 | Fedora: sudo dnf install ./FileTerm-<version>-linux-<arch>.rpm; openSUSE: sudo zypper install ./FileTerm-<version>-linux-<arch>.rpm |
.pkg.tar.zst |
x86_64; Arch Linux, Manjaro, EndeavourOS, and Arch derivatives; aarch64; Arch Linux ARM | sudo pacman -U ./FileTerm-<version>-linux-<arch>.pkg.tar.zst |
The official Arch Linux distribution supports x86_64. The ARM64 package targets the separate Arch Linux ARM distribution and cannot be installed on x86_64. Select the matching linux-x86_64 or linux-arm64 release asset. If an AppImage does not start when double-clicked, run chmod +x on the downloaded architecture-matched file and launch it from a terminal.
On first launch, FileTerm uses Chinese for Chinese system locales and English for all other locales. You can change the language in Settings; a saved choice takes precedence on later launches.
macOS and Linux update checks open the matching GitHub Release page for a user-selected download. Signed in-app updates are used by installed Windows releases.
Want to run from source or contribute? Continue to Getting Started from Source.
FileTerm is built for daily remote work by developers and operations teams. It brings remote terminals, file management, transfer tasks, and connection profiles into one desktop workspace.
- SSH sessions pair terminal work naturally with SFTP file panels.
- FTP/FTPS sessions use a focused file-only workflow.
- Multiple connections run side by side in tabs without interrupting each other.
- Uploads, downloads, progress, and errors are managed in one transfer center.
- Connection profiles, workspace state, and themes are designed for long-term daily use.
The official release focuses on the most frequent SSH / SFTP / FTP / FTPS workflows: reliable remote terminals, file operations, and transfers.
| Capability | Description |
|---|---|
| SSH profile management | Create, edit, delete, and group SSH profiles with JSON persistence. |
| FTP/FTPS profile management | Uses a connection model kept separate from SSH and supports secure FTP transfers. |
| SSH terminal | Powered by xterm.js with input/output, resize, search, clipboard support, and a floating command bar. |
| SFTP file management | Browse remote directories; read, write, create, delete, rename, and change permissions. |
| FTP/FTPS file management | FTP/FTPS sessions with remote browsing, file operations, and resumable transfers. |
| File editor | A Monaco Editor-based two-pane file tree and editor with syntax highlighting, find/replace, encoding, and language controls. |
| Terminal directory sync | Keeps the active SSH working directory and file manager in sync. |
| Root privilege sync | Detects sudo / su in the terminal and synchronizes the file-manager permission context. |
| Virtualized file list | Uses virtual scrolling for efficient browsing of large remote directories. |
| Transfer center | Centralized uploads, downloads, resume support, progress, speed, cancellation, and recursive folder transfers. |
| Workspace tabs | Parallel connections, disconnect/reconnect, persisted state, and animated tab transitions. |
| Command templates | Grouped quick commands, parameter placeholders, and one-click sending. |
| Theme system | Dark and light themes through tokens, CSS variables, and component skins. |
| Remote status monitoring | Connection status and system-resource summaries. |
| Theme and desktop shell | Dark and light themes, sidebars, file drawer, focus mode, and dedicated management windows. |
| Desktop | Renderer | Language | Terminal | Editor | Protocols | Tooling |
|---|---|---|---|---|---|---|
| Tauri v2 | React + Vite | Rust + TypeScript | xterm.js | Monaco Editor | russh/russh-sftp + suppaftp + tokio-* | Cargo + npm workspaces |
renderer UI -> React workspace, tabs, files, terminal
Tauri bridge -> typed Rust command/event boundary
Rust services -> session lifecycle, storage, update and protocol services
protocols -> russh SSH/SFTP, FTP/FTPS, Telnet and Serial adapters
theme system -> tokens -> vars -> skins -> terminal colorsRenderer UI
-> Application State
-> Tauri API bridge
-> Rust commands/events
-> Desktop services
-> Session workers
-> Protocol clientspackages/coreis the single source of truth for domain models.- The renderer never accesses SSH, SFTP, or FTP/FTPS protocol clients directly.
- All system capabilities are exposed through
Rust commands/events -> tauri-api.ts -> renderer. - SSH/SFTP and FTP/FTPS remain separate at controller and protocol layers.
- Transfer progress enters one transfer system instead of being maintained separately by components.
See docs/architecture.md for the complete architecture map.
- Node.js >= 22.12.0
- npm
- Rust stable, plus the Tauri system dependencies for your platform
On Linux (Ubuntu/Debian) you also need the GTK and WebKit runtimes:
# Ubuntu 24.04 and newer
sudo apt install libwebkit2gtk-4.1-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev patchelf build-essential libssl-dev
# On Ubuntu 22.04, replace 4.1 with 4.0npm run dev requires a local graphical session. GTK cannot initialize over plain SSH, on a headless server, or in a Wayland session without XWayland. In those cases the launcher prints the current display environment and troubleshooting hints instead of a bare GTK panic.
npm install
npm run devdev, build, and typecheck build @fileterm/core, @fileterm/shared, and @fileterm/storage first, since their entry points resolve to dist/. No manual build step is needed after a fresh clone.
npm run dev
npm run test
npm run typecheck
npm run build
npm run release:mac
npm run release:win
npm run release:linux- A
vX.Y.Ztag on arelease/*commit runs the Tauri-only Release Action and publishes macOS arm64/x64 DMGs, Windows x64/arm64 NSIS installers and portable executables, and Linux x86_64/arm64.deb,.rpm, and.AppImagepackages plus Arch x86_64/Arch Linux ARM aarch64.pkg.tar.zstpackages. - The Windows jobs publish signed installers and portable executables with
.sigfiles. A combinedlatest.jsoncontains separate x64 and ARM64 update entries; installed clients verify the matching package before updating. - Configure the repository Actions Secret
TAURI_SIGNING_PRIVATE_KEYwith the Tauri updater private-key contents. Never commit that private key. - macOS release bundles use ad-hoc signing (without an Apple Developer certificate or notarization) and deliberately keep the GitHub Release download flow rather than using the in-app updater. First-run users may still need to whitelist the app in Privacy & Security.
fileterm/
apps/
tauri/ # Tauri + Rust desktop app
src/
bridge/ # typed Tauri command/event API
renderer/ # React workspace UI
src-tauri/ # Rust commands, services, sessions, and bundling
packages/
core/ # domain types
storage/ # repository abstractions
shared/ # shared constants and utilities
docs/
architecture.md # architecture map
roadmap.md # product roadmap
plans/ # active and completed execution plans
decisions/ # architecture decisions
quality/ # quality and release checks
AGENTS.md # map for human and AI collaboratorsPost-release priorities:
- Keep improving the stability and usability of the
SSH / SFTP / FTP / FTPScore workflows. - Keep refining the Tauri workspace, session service, and renderer boundaries.
- Continue consolidating domain types in
packages/core. - Improve transfer tasks, errors, themes, terminal input, file drawers, and the desktop shell.
- Maintain release quality and distribution for macOS, Windows, and Linux.
See docs/roadmap.md for the full plan.
- xterm.js for SSH terminal rendering, input/output, and resize handling.
- Monaco Editor for file editing, syntax highlighting, and search/replace.
- Bundled fonts and icon fonts: see THIRD_PARTY_NOTICES.md for their licenses and sources.
This repository treats the codebase as its record system:
- AGENTS.md is the entry map for collaboration.
- docs/architecture.md records stable architecture facts.
- docs/plans/active contains active cross-layer plans.
- docs/decisions records confirmed architecture decisions.
- .agents/extensions contains feature drafts and extension designs.
For a substantial feature, please add or update an active plan before writing code.
Thank you to everyone who makes FileTerm better.
|
St0ff3l |
Built the Rust/Tauri backend core, including the command/event boundary, session control, file capabilities, and workspace state. |
|
Flashhhhhhzj |
Redesigned and modernized the frontend styling, unified the design language, and shaped theme tokens, component skins, and the visual experience. |
Scan the QR code to join the FileTerm WeChat community for usage discussions, feedback, and product updates.
You can also join the QQ group: 534418986.
If FileTerm helps you, please consider starring the project on GitHub:
FileTerm source code is open-sourced under the MIT License. Bundled fonts and icon fonts remain under their respective licenses; see THIRD_PARTY_NOTICES.md.

