Project-based Terminal Manager — Organize your terminals by project, not by window.
Connexio is built with Tauri v2 and a native Rust backend for fast startup, low memory usage, and cross-platform support.
When working on multiple projects, you end up with dozens of terminal windows/tabs with no clear organization. Which terminal belongs to which project? Where was that running server?
Connexio organizes your terminals by project. Each project gets its own workspace with dedicated terminal tabs, persistent sessions, remote access, and productivity tools built right in.
- 📁 Project Workspace — Each project has its own workspace with dedicated terminals
- 📑 Multi-tab Terminals — Multiple terminal tabs per project with rename & drag-to-reorder
- 🐚 Shell Picker — Auto-detect available shells (PowerShell, CMD, Git Bash, WSL, Zsh, Fish, etc.)
- 💾 Session Persistence — Tabs, layout, and active project survive app restart
- 🔀 Drag & Drop — Reorder tabs, reorder projects, move projects between groups
- ⚡ WebGL Renderer — Hardware-accelerated terminal rendering (toggleable in settings)
- 📋 Task Runner — Auto-detect scripts from
package.json,Makefile,Cargo.toml,pyproject.toml— one-click run - 📌 Pinned Commands — Save favorite commands per project (CRUD, drag reorder)
- ⏱️ Command Timer — Track execution time, notification when long-running commands finish
- 📝 Code Editor — Built-in editor powered by CodeMirror 6 (JS, TS, HTML, CSS, Python, Rust, JSON, Markdown)
- 📂 File Explorer — Full file tree with context menu and inline actions
- 🌐 Web Preview — Live preview panel as a workspace tab
- 🌿 Git Status — Live branch, ahead/behind, modified/staged/untracked counts
- 🔀 Branch Picker — Switch branches from the workspace header
- 💬 Commit Box — Stage and commit directly from the UI
- 📜 Git History — View commit history per project
- 📱 Remote Access — Open a secure mobile workspace with trusted-token login and remote terminal controls
- 🔗 SSH Manager — Save SSH connections per project + global, one-click connect with key or password auth
- 🌐 Tailscale Support — Generate remote URLs using detected Tailscale IPs for private-network access
- 🤖 AI Chat — Side panel with configurable model integration
- 🎮 Discord Rich Presence — Show what you're working on in Discord
- 🔄 Auto-Updater — Check for updates via GitHub Releases, download & install with one click
- 🎨 Themes — Built-in themes (Dark, Light, Midnight Ocean) with full terminal color support
- ⚙️ Settings — Font size, font family, cursor style, scrollback, copy-on-select, default shell, WebGL toggle
- 🖥️ Custom Titlebar — Clean frameless window with app version display
- 📐 Resizable Panels — Split panes for editor + terminal side-by-side layout
| Platform | Download |
|---|---|
| Windows | Connexio_x64-setup.exe |
| macOS (Apple Silicon) | Connexio_aarch64.dmg |
| Linux | Connexio_amd64.AppImage |
Or go to Releases for all versions including pre-releases.
| Technology | Purpose |
|---|---|
| Tauri v2 | Cross-platform desktop framework |
| Rust | Native backend (PTY, git, SSH, file system) |
| portable-pty | Native PTY process management |
| React 18 | UI framework |
| TypeScript | Type safety |
| xterm.js | Terminal rendering (with WebGL addon) |
| CodeMirror 6 | Code editor |
| Zustand | State management |
| Tailwind CSS | Styling |
| Vite | Frontend build tool |
| tauri-plugin-store | Persistent storage |
| tauri-plugin-updater | Auto-update via GitHub Releases |
| discord-rich-presence | Discord RPC integration |
- Node.js 18+
- Rust (latest stable via rustup)
- Platform-specific dependencies:
- Windows: WebView2 (usually pre-installed on Windows 10/11), Visual Studio C++ Build Tools
- macOS:
xcode-select --install - Linux:
sudo apt install libwebkit2gtk-4.1-dev build-essential curl wget file libxdo-dev libssl-dev libayatana-appindicator3-dev librsvg2-dev
git clone https://github.com/yandanp/Connexio.git
cd Connexio
npm install
npm run dev| Command | Description |
|---|---|
npm run dev |
Start Tauri dev mode (hot-reload frontend + Rust backend) |
npm run dev:renderer |
Start Vite dev server only (frontend) |
npm run build |
Build frontend for production |
npm run build:tauri |
Build full Tauri app (installer) |
npm run typecheck |
Type-check all TypeScript |
# Patch release (e.g. 0.5.0 -> 0.5.1)
npm version patch
git push && git push --tags
# Pre-release (dev builds)
npm version prerelease --preid=dev
git push && git push --tagsPushing a v* tag triggers GitHub Actions → multi-platform build & GitHub Release.
Tag patterns for release channels:
v1.0.0— Stable releasev1.0.0-dev.1— Dev pre-releasev1.0.0-alpha.1/v1.0.0-beta.1— Alpha/Beta pre-release
Connexio/
├── src/
│ ├── renderer/ # React frontend
│ │ ├── components/
│ │ │ ├── Workspace.tsx # Main workspace (tabs, terminal, panels)
│ │ │ ├── Terminal.tsx # xterm.js terminal instance
│ │ │ ├── TerminalLayer.tsx # Global terminal renderer (never unmounts)
│ │ │ ├── Sidebar.tsx # Project sidebar with drag & drop
│ │ │ ├── TaskPanel.tsx # Task runner + pinned commands
│ │ │ ├── SSHPanel.tsx # SSH connection manager UI
│ │ │ ├── GitStatusBar.tsx # Git status display
│ │ │ ├── SearchPanel.tsx # Terminal search
│ │ │ ├── SettingsModal.tsx # Settings UI
│ │ │ ├── ShellPicker.tsx # Shell selection dropdown
│ │ │ ├── WorkspaceTab.tsx # Draggable, renameable tab
│ │ │ ├── WebPreview.tsx # Live web preview panel
│ │ │ ├── WelcomeScreen.tsx # Welcome/onboarding screen
│ │ │ ├── UpdateNotification.tsx
│ │ │ ├── ai/ # AI chat panel
│ │ │ ├── editor/ # CodeMirror code editor
│ │ │ ├── explorer/ # File explorer tree
│ │ │ └── git/ # Branch picker, commit box, history
│ │ ├── stores/ # Zustand state management
│ │ ├── hooks/ # Custom React hooks
│ │ ├── lib/ # Utility functions
│ │ ├── styles/ # Global CSS
│ │ └── types/ # TypeScript declarations
│ └── shared/
│ └── types.ts # Shared types (frontend ↔ backend)
├── src-tauri/
│ ├── src/
│ │ ├── main.rs # Tauri app entry point
│ │ ├── lib.rs # Plugin registration & command setup
│ │ └── modules/
│ │ ├── pty/ # PTY process management (portable-pty)
│ │ ├── projects.rs # Project CRUD
│ │ ├── workspace.rs # Workspace state persistence
│ │ ├── session.rs # Session persistence
│ │ ├── settings.rs # App settings + shell detection
│ │ ├── shell.rs # Shell detection & configuration
│ │ ├── git.rs # Git status & operations
│ │ ├── tasks.rs # Task runner (script detection)
│ │ ├── pinned.rs # Pinned commands
│ │ ├── ssh.rs # SSH connection manager
│ │ ├── remote/ # Remote access protocol and server
│ │ ├── theme.rs # Theme management
│ │ ├── explorer.rs # File system explorer
│ │ ├── clipboard.rs # Native clipboard handling
│ │ ├── notification.rs # Desktop notifications
│ │ ├── discord.rs # Discord Rich Presence
│ │ └── updater.rs # Auto-updater
│ ├── tauri.conf.json # Tauri configuration
│ ├── Cargo.toml # Rust dependencies
│ └── capabilities/ # Tauri permission capabilities
├── assets/ # App icons
├── .github/workflows/ # CI/CD (multi-platform release)
├── vite.config.ts # Vite configuration
├── tailwind.config.js # Tailwind configuration
└── package.json
| Theme | Style |
|---|---|
| Connexio Dark | Default dark theme with blue accents |
| Connexio Light | Clean light theme |
| Midnight Ocean | Deep blue with teal accents |
Themes apply to both the app UI and terminal colors.
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repo
- Create your feature branch (
git checkout -b feat/amazing-feature) - Commit your changes (
git commit -m 'feat: add amazing feature') - Push to the branch (
git push origin feat/amazing-feature) - Open a Pull Request
| Prefix | Usage |
|---|---|
feat: |
New feature |
fix: |
Bug fix |
refactor: |
Code refactoring |
ci: |
CI/CD changes |
chore: |
Maintenance |
MIT © yandanp
