Overview
NyaTerm is a desktop client for SSH-centric operations and mixed terminal workflows. It combines a React + Tauri interface with a Rust backend so you can manage remote hosts, local shells, file transfers, authentication, network tooling, AI-assisted terminal actions, session import / export, diagnostics, and protected configuration sync / backup workflows from one workspace.
Highlights
Sessions and workspace
- SSH, Local Terminal, Telnet, and Serial session support
- Multi-tab workspace with horizontal and vertical pane splits
- Saved connections with folders, icons, duplication, reconnect, import, and encrypted config restore
- Left / right activity bars for file explorer, network, security, sync & backup, AI assistant, command history, and resource monitoring
- Child windows for settings, new-session, quick-command, and auto-upload flows
- Tray support with optional minimize-to-tray behavior on window close
Terminal experience
- Search bar, command history, fuzzy suggestions, online search, translation, and context actions
- Configurable command suggestion history length thresholds for noisy or long commands
- Optional line numbers and timestamps gutter for dense terminal output
- Optional action links for IPv4 addresses,
host:port, and archive filenames - Optional keyword highlighting with built-in presets and custom rules
- Large-output protection under load, configurable scrollback, and SSH keep-alive
- Session recording with configurable save path and remote resource monitor for active SSH sessions
Remote operations
- Built-in SFTP file explorer with upload, download, rename, move, delete, symlink, create-file, and properties actions
- Folder upload, multi-select actions, editable path bar, and manual / automatic sync with terminal cwd
- Open remote files in a local editor and upload changes back through the watcher-driven auto-upload flow
- Windows support for dragging local files or folders directly into the file explorer to upload
- Quick Commands with categories, colors, icons, execution modes, pinning, and variable prompts
AI assistance
- Side-panel AI assistant for command generation, terminal output explanation, error analysis, and selected-text workflows
- Model / provider management for built-in providers and custom OpenAI-compatible endpoints
- Structured command cards with risk levels, approval gates, and optional save-to-quick-command support
- Reasoning-aware response rendering when providers expose a reasoning channel
Security and networking
- Password auth, private keys, host-key verification, and local encrypted credential storage
- OTP management with TOTP/HOTP, QR import, and SSH auto-fill support
- Screen lock, master password support, and redb-backed known-hosts / secret persistence
- Proxy configs, SSH jump hosts, and local / remote / dynamic tunnels
- Diagnostics settings, local log management, and diagnostics bundle export for troubleshooting
Sync, backup, and portability
- Encrypted cloud sync and backup for portable NyaTerm data through WebDAV and S3-compatible storage
- Master password required before enabling sync, running manual actions, importing / exporting encrypted config backups, or creating scheduled encrypted backups
- Startup sync checks, debounced auto-push after supported local changes, and scheduled backup retention policies
- Manual test / push / pull / backup actions, remote backup restore, and snapshot-level conflict resolution
- Session import from Xshell, MobaXterm, and WindTerm, plus full-app encrypted
.dgfyimport / export
Supported session types
| Type | Typical use | Notes |
|---|---|---|
| SSH | Linux / Unix remote servers | Supports SFTP, OTP, resource monitor, proxy, jump host, tunnels |
| Local Terminal | Local shell workflows | Uses your local shell path and working directory |
| Telnet | Legacy network devices / lab systems | Lightweight terminal session without SSH-only features |
| Serial | Routers, boards, embedded devices | Configurable port, baud rate, parity, stop bits |
Documentation map
The detailed user docs live in docs-site/.
- Product overview: docs-site/docs/intro.md
- Installation: docs-site/docs/getting-started/installation.md
- Quick start: docs-site/docs/getting-started/quick-start.md
- Session guide: docs-site/docs/guide/session-types.md
- Terminal guide: docs-site/docs/guide/terminal.md
- File transfer guide: docs-site/docs/guide/file-transfer.md
- Sync and backup guide: docs-site/docs/guide/sync-and-backup.md
- Development docs: docs-site/docs/development/
The docs site ships with Simplified Chinese by default and English under /en/.
Screenshot placeholders
If you want to add screenshots later, these are the recommended stable asset paths to use in the docs site:
docs-site/static/img/docs/readme/main-workspace.png— main workspace with split panes and both side panelsdocs-site/static/img/docs/readme/session-types.png— new-session window showing SSH / Local / Telnet / Serial tabsdocs-site/static/img/docs/readme/terminal-features.png— gutter, action links, and highlight demo outputdocs-site/static/img/docs/readme/network-and-security.png— proxy / tunnel / OTP related UIdocs-site/static/img/docs/readme/ai-assistant.png— AI assistant panel with command cards or explanation flow
Tech stack
| Layer | Technology |
|---|---|
| Frontend | React 19, TypeScript, Vite, TailwindCSS 4 |
| Desktop runtime | Tauri 2 |
| Backend | Rust |
| Terminal | xterm.js |
| SSH | russh |
| File transfer | russh-sftp |
| Local persistence | redb |
| Storage abstraction | OpenDAL |
Getting started
Prerequisites
- Node.js 18+
- Rust stable via rustup
- pnpm recommended
Installation
git clone https://git.coderkang.top/Tauri/nyaterm.git
cd nyaterm
pnpm install
Run the app in development
pnpm tauri dev
Run the docs site locally
pnpm --dir docs-site start
This builds and serves all locales, so both / and /en/ are available.
For locale-specific hot reload during editing:
pnpm --dir docs-site start:zh
pnpm --dir docs-site start:en
Build
pnpm build
pnpm tauri build
pnpm --dir docs-site build
The desktop bundles are generated under src-tauri/target/release/bundle.
Contributing
Please read the docs under docs-site/docs/development/ before contributing.