{"id":50643056,"url":"https://github.com/termlnk/termlnk","last_synced_at":"2026-06-07T10:01:09.387Z","repository":{"id":355826267,"uuid":"1194393972","full_name":"termlnk/termlnk","owner":"termlnk","description":"Termlnk is a modern terminal reimagined with AI agents, SSH workflows, and a rich extension system.","archived":false,"fork":false,"pushed_at":"2026-05-31T17:48:28.000Z","size":14881,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-31T19:07:46.724Z","etag":null,"topics":["ai","ai-agent","cross-platform","developer-tools","linux","macos","mcp","productivity","sftp","sftp-client","ssh","ssh-client","terminal","terminal-emulator","termlnk","windows"],"latest_commit_sha":null,"homepage":"https://termlnk.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/termlnk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-03-28T09:45:55.000Z","updated_at":"2026-05-31T17:48:32.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/termlnk/termlnk","commit_stats":null,"previous_names":["termlnk/termlnk"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/termlnk/termlnk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/termlnk%2Ftermlnk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/termlnk%2Ftermlnk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/termlnk%2Ftermlnk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/termlnk%2Ftermlnk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/termlnk","download_url":"https://codeload.github.com/termlnk/termlnk/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/termlnk%2Ftermlnk/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34016490,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-07T02:00:07.652Z","response_time":124,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","ai-agent","cross-platform","developer-tools","linux","macos","mcp","productivity","sftp","sftp-client","ssh","ssh-client","terminal","terminal-emulator","termlnk","windows"],"created_at":"2026-06-07T10:00:37.531Z","updated_at":"2026-06-07T10:01:09.335Z","avatar_url":"https://github.com/termlnk.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003ch1\u003e\n\u003cimg src=\"docs/screenshots/logo.png\" alt=\"Termlnk\" width=\"64\" /\u003e\u003cbr /\u003e\nTermlnk\n\u003c/h1\u003e\n\nA modern, extensible smart terminal for developers.\u003cbr /\u003e\n**SSH \u0026amp; SFTP \u0026middot; AI Agent with MCP \u0026middot; 71 themes \u0026middot; Plugin ecosystem \u0026middot; Cross-platform.**\n\n**English** | [简体中文][readme-zh-cn-link] | [繁體中文][readme-zh-tw-link] | [日本語][readme-ja-link] | [한국어][readme-ko-link]\n\n[![][license-shield]][license-link]\n[![][release-shield]][releases-link]\n[![][downloads-shield]][releases-link]\n[![][platform-shield]][platform-link]\n\n\u003c/div\u003e\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/screenshots/termlnk.png\" alt=\"Termlnk\" /\u003e\n\u003c/p\u003e\n\n\u003cdetails open\u003e\n\u003csummary\u003e\n\u003cstrong\u003eTable of contents\u003c/strong\u003e\n\u003c/summary\u003e\n\n- [🌈 Highlights](#-highlights)\n- [🚀 Quick Start](#-quick-start)\n- [💻 Platform \u0026amp; Installation Notes](#-platform--installation-notes)\n- [🌐 Web Edition (Self-Hosting)](#-web-edition-self-hosting)\n- [🛠 Development](#-development)\n- [🌐 Internationalization](#-internationalization)\n- [📸 Screenshots](#-screenshots)\n- [🤝 Contributing](#-contributing)\n- [💬 Community](#-community)\n- [🙏 Acknowledgements](#-acknowledgements)\n- [📄 License](#-license)\n\n\u003c/details\u003e\n\n## 🌈 Highlights\n\nTermlnk packs a fast native terminal, a complete SSH/SFTP client, and a built-in AI agent into a single app — on your desktop, or self-hosted in any browser.\n\n- 🖥 **Terminal \u0026amp; sessions** — local PTY and remote SSH in one workspace, with recursive split / magnify layouts, full xterm.js rendering (ligatures, true color, Sixel, image protocols), buffer search, hyperlinks, IME input, shell integration (OSC 633), and session restore.\n- 🔐 **SSH \u0026amp; SFTP** — a hierarchical host tree with password / key / agent auth, `ProxyJump` chains, SOCKS5 and X11 forwarding, plus a dual-pane SFTP browser with transfer queue, `trzsz` / `zmodem`, and a permission editor.\n- 🤖 **AI agent** — multi-turn chat with MCP tool servers, swappable across OpenAI, Claude, Gemini, DeepSeek, Qwen or any OpenAI-compatible endpoint, plus an approval-gated `terminal_run` tool and per-session skills.\n- 🧩 **Extensions** — VS Code-style contribution points (commands, menus, UI parts, settings) with a one-click marketplace, a stable TypeScript API, and React components injectable into any UI slot.\n- 🎨 **Theming \u0026amp; window** — 71 built-in Base46 themes (56 dark, 15 light) with a live editor, plus configurable blur, opacity, fonts, and keybindings.\n- 💻 **Cross-platform \u0026amp; offline-first** — a native app for macOS (Intel \u0026amp; Apple Silicon), Windows and Linux that runs fully offline.\n- 🌐 **Self-hostable web edition** — the same terminals, SSH, AI agent and SFTP from any browser, via a one-command Docker deploy with built-in Caddy auto-HTTPS.\n- 🏝 **Dynamic Island (macOS)** — a notch-aware status overlay for AI agent sessions, with sounds for start, completion, approvals and errors.\n\n## 🚀 Quick Start\n\n### Build from source\n\n```bash\ngit clone https://github.com/termlnk/termlnk.git\ncd termlnk\npnpm install\n\ncd apps/desktop\npnpm dev\n```\n\n### Package installers\n\n```bash\ncd apps/desktop\npnpm make:mac      # macOS .dmg / .zip\npnpm make:win      # Windows .exe / .msi\npnpm make:linux    # Linux .AppImage / .deb / .rpm\n```\n\n\u003e **Note:** prebuilt binaries are not published yet. Releases will appear on the [GitHub Releases][releases-link] page once they are available.\n\n## 💻 Platform \u0026amp; Installation Notes\n\nmacOS 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.\n\n\u003cdetails\u003e\n\u003csummary\u003emacOS: Gatekeeper warning on first launch\u003c/summary\u003e\n\n**Option 1** — Right-click `Termlnk.app` in Finder \u003e Open \u003e confirm.\n\n**Option 2** — System Settings \u003e Privacy \u0026amp; Security \u003e scroll to Security \u003e click Open Anyway.\n\n**Option 3** — Run in Terminal:\n\n```bash\nxattr -cr /Applications/Termlnk.app\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003eWindows: SmartScreen blocks the installer\u003c/summary\u003e\n\n**Option 1** — Click \"More info\" on the SmartScreen dialog, then \"Run anyway\".\n\n**Option 2** — Settings \u003e Apps \u003e Advanced app settings \u003e set App Install Control to allow apps from anywhere.\n\n\u003c/details\u003e\n\n## 🌐 Web Edition (Self-Hosting)\n\nBeyond the desktop app, Termlnk ships **termlnk-web** — a self-hosted server twin that runs the exact same DI container, business plugins, and vault, with Electron IPC swapped for HTTP + WebSocket. Reach your terminals, hosts, AI agent, SFTP, and skills from any modern browser.\n\n\u003e ⚠ **Run termlnk-web only on a machine you trust.** It holds the vault master key and has the same execution power as the desktop's main process (direct SSH/SFTP, AI inference, local filesystem access). It is *not* a zero-knowledge public backend.\n\nPrebuilt multi-arch images (amd64 / arm64) are published to GHCR — no need to clone the monorepo.\n\n```bash\ncd apps/web\n\n# One-click: generate a strong master password, pull the image, start, health-check\n./install.sh\n\n# With automatic HTTPS (built-in Caddy + Let's Encrypt)\n./install.sh --tls termlnk.example.com\n```\n\nOr deploy manually with Docker Compose:\n\n```bash\ncd apps/web\nprintf '%s' 'choose-a-strong-passphrase' \u003e master_password.secret \u0026\u0026 chmod 600 master_password.secret\ndocker compose up -d\n```\n\nSee the **[termlnk-web deployment guide](apps/web/README.md)** for one-click \u0026amp; manual deployment, reverse-proxy (Caddy / nginx) configs, environment variables, data persistence, upgrades, and the security checklist.\n\n## 🛠 Development\n\n```bash\npnpm build          # Build all library packages\npnpm typecheck      # Run TypeScript type check\npnpm test           # Run all unit tests\npnpm coverage       # Run tests with coverage report\npnpm lint           # Lint the codebase\npnpm lint:fix       # Auto-fix lint issues (also injects license headers)\n```\n\n## 🌐 Internationalization\n\nTermlnk ships with 5 languages out of the box:\n\n| Language | Code |\n| :--- | :--- |\n| English | `en-US` |\n| 简体中文 | `zh-CN` |\n| 繁體中文 | `zh-TW` |\n| 日本語 | `ja-JP` |\n| 한국어 | `ko-KR` |\n\nHelp us add new languages by following the [contribution guide](#-contributing).\n\n## 📸 Screenshots\n\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd width=\"25%\"\u003e\u003cimg src=\"docs/screenshots/workspace.png\" alt=\"Workspace\" /\u003e\u003c/td\u003e\n\u003ctd width=\"25%\"\u003e\u003cimg src=\"docs/screenshots/ssh-split.png\" alt=\"SSH split\" /\u003e\u003c/td\u003e\n\u003ctd width=\"25%\"\u003e\u003cimg src=\"docs/screenshots/drag-split-screen.png\" alt=\"Drag to split\" /\u003e\u003c/td\u003e\n\u003ctd width=\"25%\"\u003e\u003cimg src=\"docs/screenshots/terminal-maximize.png\" alt=\"Terminal magnify\" /\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003e\u003cb\u003eWorkspace\u003c/b\u003e\u003c/td\u003e\n\u003ctd align=\"center\"\u003e\u003cb\u003eSSH split\u003c/b\u003e\u003c/td\u003e\n\u003ctd align=\"center\"\u003e\u003cb\u003eDrag to split\u003c/b\u003e\u003c/td\u003e\n\u003ctd align=\"center\"\u003e\u003cb\u003eMagnify pane\u003c/b\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd width=\"25%\"\u003e\u003cimg src=\"docs/screenshots/agent.png\" alt=\"AI Agent\" /\u003e\u003c/td\u003e\n\u003ctd width=\"25%\"\u003e\u003cimg src=\"docs/screenshots/sftp.png\" alt=\"SFTP\" /\u003e\u003c/td\u003e\n\u003ctd width=\"25%\"\u003e\u003cimg src=\"docs/screenshots/themes.png\" alt=\"Themes\" /\u003e\u003c/td\u003e\n\u003ctd width=\"25%\"\u003e\u003cimg src=\"docs/screenshots/transparent.png\" alt=\"Transparent window\" /\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003e\u003cb\u003eAI Agent\u003c/b\u003e\u003c/td\u003e\n\u003ctd align=\"center\"\u003e\u003cb\u003eSFTP browser\u003c/b\u003e\u003c/td\u003e\n\u003ctd align=\"center\"\u003e\u003cb\u003e71 themes\u003c/b\u003e\u003c/td\u003e\n\u003ctd align=\"center\"\u003e\u003cb\u003eTransparent window\u003c/b\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n## 🤝 Contributing\n\nContributions are welcome. Before submitting a pull request, please:\n\n1. Fork the repository and create a feature branch.\n2. Follow the project's code conventions and RxJS reactive programming style guide.\n3. Ensure `pnpm lint` and `pnpm test` pass locally.\n4. Submit a PR against `main` with a Conventional Commit title (`feat:`, `fix:`, `refactor:`, `chore:`, ...).\n\n## 💬 Community\n\n- [GitHub Discussions][github-community-link] — ask questions, share ideas.\n- [GitHub Issues][github-issues-link] — report bugs and request features.\n\n## 🙏 Acknowledgements\n\nTermlnk stands on the shoulders of outstanding open-source projects and products. We are grateful to:\n\n- **[Univer](https://github.com/dream-num/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.\n- **[Alma](https://alma.now)** — The overall aesthetic and theme design of Termlnk draws inspiration from this beautiful product.\n\n## 📄 License\n\nCopyright © 2026-present Termlnk.\n\nLicensed under the [**PolyForm Noncommercial License 1.0.0**][license-link]. **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.\n\nThe \"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][trademark-link] for details.\n\n\u003c!-- Language switcher --\u003e\n[readme-zh-cn-link]: ./docs/README.zh-CN.md\n[readme-zh-tw-link]: ./docs/README.zh-TW.md\n[readme-ja-link]: ./docs/README.ja.md\n[readme-ko-link]: ./docs/README.ko.md\n\n\u003c!-- Badges --\u003e\n[license-shield]: https://img.shields.io/badge/license-PolyForm%20Noncommercial-orange.svg?style=flat-square\n[license-link]: ./LICENSE\n[release-shield]: https://img.shields.io/github/v/release/termlnk/termlnk?style=flat-square\n[downloads-shield]: https://img.shields.io/github/downloads/termlnk/termlnk/total?style=flat-square\u0026color=brightgreen\n[platform-shield]: https://img.shields.io/badge/platform-macOS%20%7C%20Windows%20%7C%20Linux-lightgrey.svg?style=flat-square\n[platform-link]: #-platform--installation-notes\n\n\u003c!-- External links --\u003e\n[releases-link]: https://github.com/termlnk/termlnk/releases\n[github-issues-link]: https://github.com/termlnk/termlnk/issues\n[github-community-link]: https://github.com/termlnk/termlnk/discussions\n[trademark-link]: ./TRADEMARK.md\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftermlnk%2Ftermlnk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftermlnk%2Ftermlnk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftermlnk%2Ftermlnk/lists"}