A modern, extensible smart terminal for developers. SSH & SFTP · Built-in AI · Snippets · Port forwarding · Cross-device sync · 71 themes · Extensions · Cross-platform.
English | 简体中文 | 繁體中文 | 日本語 | 한국어
- 🌈 Highlights
- 🚀 Quick Start
- 💻 Platform & Installation Notes
- 🌐 Web Edition (Self-Hosting)
- 🛠 Development
- 🌐 Internationalization
- 📸 Screenshots
- 🤝 Contributing
- 💬 Community
- 🙏 Acknowledgements
- 📄 License
🌈 Highlights
Termlnk combines a fast smart terminal, an SSH & SFTP client, and a built-in AI assistant that can execute commands for you — all in one app. Use it on your desktop, or self-host it and open it in any browser.
- 🖥 All your terminals in one window — open local shells and SSH sessions side by side, split panes flexibly, magnify a single pane when you need focus, and let Termlnk restore your workspace after a restart.
- 🔐 Servers, keys and files in one place — organize servers in a folder tree, log in with a password, key or ssh-agent (jump hosts included), and browse or transfer remote files with a dual-pane SFTP browser. All SSH keys and known hosts are centralized in the keychain page.
- 🔀 Port forwarding — expose a local service to a remote server, map a remote service back to your machine, or use any SSH connection as a SOCKS5 proxy. All configured in the UI and toggled with one click.
- ✂️ Snippets — save commands you use often, organize them into groups, and run them in any session with a single click. Attach a snippet to a server and it runs the moment you connect.
- 🤖 AI Agent — chat with OpenAI, Claude, Gemini, DeepSeek, Qwen or any OpenAI-compatible model, and switch freely between them. With your approval, it can run terminal commands on your behalf and stays coherent during long conversations.
- ☁️ Cross-device sync, end-to-end encrypted — servers, keys, snippets and port-forwarding rules sync automatically across your devices. Data is encrypted on your device before it leaves, and your master password can be changed at any time without losing existing data.
- 🔄 In-app auto-updates — check, download and install new releases in one click from Settings, on macOS, Windows and Linux.
- 🧩 Extension marketplace — install extensions in one click to add commands, menus, side panels or settings. Developers can build custom extensions with a stable TypeScript API.
- 🎨 71 themes, or bring your own — pick from 71 built-in themes with a live-preview editor, or set separate light and dark themes and let Termlnk follow the system automatically. Blur, transparency, fonts and keyboard shortcuts are all customizable.
- 💻 Cross-platform & offline-first — proper installers for macOS (Intel & Apple Silicon), Windows and Linux. No internet connection required.
- 🌐 Also runs in a browser — deploy the same app to your own server with one Docker command, HTTPS included, then use it from any modern browser with the same experience as the desktop.
- 🏝 Dynamic Island on macOS — on notch-equipped Macs, the top pill area shows live AI status, complete with sounds for start, completion, approval needed and errors.
🚀 Quick Start
Download
Prebuilt installers for macOS, Windows and Linux (x64 & arm64) are published on the GitHub Releases page. The desktop app self-updates from Settings once installed.
Build from source
git clone https://github.com/termlnk/termlnk.git
cd termlnk
pnpm install
cd apps/desktop
pnpm dev
Package installers
cd apps/desktop
pnpm make:mac # macOS .dmg / .zip (x64 & arm64)
pnpm make:win # Windows .exe / .msi (x64 & arm64)
pnpm make:linux # Linux .AppImage / .deb / .rpm (x64 & arm64)
💻 Platform & Installation Notes
macOS builds are code-signed with a Developer ID certificate but not notarized, so Gatekeeper may still prompt on first launch. Windows and Linux builds are unsigned.
Option 1 — Right-click Termlnk.app in Finder > Open > confirm.
Option 2 — System Settings > Privacy & Security > scroll to Security > click Open Anyway.
Option 3 — Run in Terminal:
xattr -cr /Applications/Termlnk.app
Option 1 — Click "More info" on the SmartScreen dialog, then "Run anyway".
Option 2 — Settings > Apps > Advanced app settings > set App Install Control to allow apps from anywhere.
🌐 Web Edition (Self-Hosting)
termlnk-web is a self-hosted version of the same app that runs in the browser. Your terminals, servers, AI assistant and SFTP work exactly as they do on the desktop — the only difference is that you open a URL instead of launching a desktop client.
⚠ Only run termlnk-web on a machine you trust. It holds your master password and can connect to your servers, invoke AI, and read files on the host machine — it has the same privileges as the desktop app. Do not expose it to the public internet without protection.
Prebuilt multi-arch images (amd64 / arm64) are published to GHCR — no need to clone the monorepo.
cd apps/web
# One-click: generate a strong master password, pull the image, start, health-check
./install.sh
# With automatic HTTPS (built-in Caddy + Let's Encrypt)
./install.sh --tls termlnk.example.com
Or deploy manually with Docker Compose:
cd apps/web
printf '%s' 'choose-a-strong-passphrase' > master_password.secret && chmod 600 master_password.secret
docker compose up -d
See the termlnk-web deployment guide for one-click & manual deployment, reverse-proxy (Caddy / nginx) configs, environment variables, data persistence, upgrades, and the security checklist.
🛠 Development
pnpm build # Build all library packages
pnpm typecheck # Run TypeScript type check
pnpm test # Run all unit tests
pnpm coverage # Run tests with coverage report
pnpm lint # Lint the codebase
pnpm lint:fix # Auto-fix lint issues (also injects license headers)
🌐 Internationalization
Termlnk ships with 5 languages out of the box:
| Language | Code |
|---|---|
| English | en-US |
| 简体中文 | zh-CN |
| 繁體中文 | zh-TW |
| 日本語 | ja-JP |
| 한국어 | ko-KR |
Help us add new languages by following the contribution guide.
📸 Screenshots
🤝 Contributing
Contributions are welcome. Before submitting a pull request, please:
- Fork the repository and create a feature branch.
- Follow the project's code conventions and RxJS reactive programming style guide.
- Ensure
pnpm lintandpnpm testpass locally. - Submit a PR against
mainwith a Conventional Commit title (feat:,fix:,refactor:,chore:, ...).
💬 Community
- GitHub Discussions — ask questions, share ideas.
- GitHub Issues — report bugs and request features.
- CHANGELOG — full release history.
🙏 Acknowledgements
Termlnk stands on the shoulders of outstanding open-source projects and products. We are grateful to:
- Univer — Termlnk's overall architecture was deeply inspired by this excellent open-source project. Its clean, plugin-driven design shaped how we structured our DI, contribution-point, and command systems.
- Alma — The overall aesthetic and theme design of Termlnk draws inspiration from this beautiful product.
📄 License
Copyright © 2026-present Termlnk.
Licensed under the PolyForm Noncommercial License 1.0.0. Commercial use is not permitted. Forks and derivative works must also be open-source and non-commercial, and must be distributed under the same license.
The "Termlnk" name, logo and other Termlnk marks are trademarks of the Termlnk project. The source-code license does NOT grant any rights to the marks — see TRADEMARK.md for details.
No comments yet
Be the first to share your take.