Skip to content

an0nn30/conch

Repository files navigation

Conch

Conch

A terminal-native workstation that unifies terminal, SSH, files, tunnels, credentials, and plugins in one app.
Built with Rust + Tauri + xterm.js. Runs on macOS, Windows, and Linux.

CI Latest Release License


Why Conch?

Most terminal emulators do one thing well. SSH clients do another. File transfer tools are often separate. Conch combines these into a single workstation for terminal-oriented workflows: terminal, SSH sessions, file movement, tunnels, credentials, and extensible tooling.

Positioning: Conch sits between terminal emulators (iTerm2, WezTerm, Warp) and remote-ops clients (MobaXterm, Termius) as an open-source, cross-platform control plane for terminal-first engineering work.

Features

Terminal Core — Full terminal emulation powered by xterm.js. 256-color, truecolor, mouse reporting, tabs, panes, and multi-window. Configurable font, cursor style, and scroll sensitivity.

SSH Sessions (built-in) — Save connections with proxy jump/command support, organized in folders. Password and key authentication. Quick-connect search from the sidebar. Parses ~/.ssh/config automatically. Host key verification with ~/.ssh/known_hosts.

File Explorer (built-in) — Dual-pane local and remote file browsing. Upload and download with real-time progress tracking via SFTP. Sortable columns, hidden file toggle, navigation history.

SSH Tunnels (built-in) — Local port forwarding with persistent tunnel definitions. Start/stop from the sidebar or the tunnel manager dialog.

Credential Vault — Encrypted credential storage using AES-256-GCM with Argon2id key derivation. Built-in SSH key generation (Ed25519, ECDSA, RSA), auto-lock timer, and vault-aware SSH connections. Accessible via Tools > Credential Vault.

Settings Dialog — Comprehensive settings UI accessible via File > Settings (or Cmd+,). Configure appearance, terminal, shell, keyboard shortcuts, plugins, and advanced settings with an Apply/Cancel workflow.

Auto-Updates (macOS/Windows) — Checks for new versions on startup and notifies when an update is available. Download and install updates in-place from the app. Configurable via Settings > Advanced or check manually from the menu.

Theming — Full Alacritty-compatible .toml theme support. Drop a theme file in ~/.config/conch/themes/ and set [colors] theme = "name". Hot-reload on file change. Live preview in the Settings dialog shows theme colors before applying.

Zen ModeCmd+Shift+Z hides all panels for a distraction-free terminal.

Lightweight — No Electron. Tauri webview with a Rust backend. Near-zero idle CPU usage.

Plugin System

Conch supports Lua and Java plugins for extending functionality with custom panels, menu items, notifications, dialogs, and inter-plugin communication.

What can plugins do?

  • Register sidebar panels with live-updating declarative widgets (trees, tables, buttons, text inputs, etc.)
  • Communicate with other plugins via pub/sub events and RPC queries
  • Show dialogs — forms, confirmations, prompts, alerts
  • Access the clipboard, show notifications, register menu items with keyboard shortcuts
  • Write to the terminal, open new tabs
  • Persist configuration via a per-plugin key-value config store

Java plugins

Conch supports Java plugins via an embedded JVM. Any JVM language works (Java, Kotlin, Scala, Groovy). The SDK JAR is embedded in the binary — no external files needed. Java plugins have full access to logging, menu items, notifications, clipboard, dialogs (prompt, confirm, alert, forms), config persistence, inter-plugin communication, and terminal/tab control.

See the Java Plugin SDK for the API reference.

Lua plugins

Lightweight Lua 5.4 plugins for quick scripting. Drop a .lua file in your plugins directory and enable it via Settings > Plugins.

-- plugin-name: Hello World
-- plugin-description: A simple action plugin
-- plugin-type: action
-- plugin-version: 1.0.0

function setup()
    app.log("info", "Hello from a plugin!")
    app.register_menu_item("Tools", "Say Hello", "say_hello")
end

function on_event(event)
    if type(event) == "table" and event.action == "say_hello" then
        app.notify("Hello", "Hello from a plugin!", "success")
    end
end

Plugin management

Plugins are managed via Settings > Plugins:

  • Scans all configured search paths for .lua and .jar plugins
  • Enable/disable plugins with a single click
  • Enabled plugins are remembered across restarts
  • Plugin menu items appear in the native Tools menu

Plugin development

See the VS Code extension or Neovim definitions for Lua API completions and hover docs.

Installation

Pre-built binaries

Download the latest release for your platform from the Releases page.

Build from source

Toolchain (all platforms)

  • Rust 1.85+ (edition 2024)
  • cargo
  • JDK 17+ (required for Java plugin support; recommended for all builds)

Platform requirements

macOS

  • Xcode Command Line Tools:
    • xcode-select --install
  • Rust target/toolchain installed via rustup

Linux (Debian/Ubuntu)

sudo apt-get update
sudo apt-get install -y \
  build-essential pkg-config libssl-dev \
  libgtk-3-dev libwebkit2gtk-4.1-dev \
  libayatana-appindicator3-dev librsvg2-dev

Linux (Fedora)

sudo dnf install -y \
  gcc gcc-c++ make pkgconf-pkg-config openssl-devel \
  gtk3-devel webkit2gtk4.1-devel \
  libappindicator-gtk3-devel librsvg2-devel

Linux (Arch)

sudo pacman -S --needed \
  base-devel pkgconf openssl \
  gtk3 webkit2gtk-4.1 libappindicator-gtk3 librsvg

Windows

  • Microsoft C++ Build Tools (MSVC) or Visual Studio with C++ workload
  • WebView2 Runtime (usually already installed on Windows 10/11)
  • JDK 17+
  • Rust MSVC toolchain (rustup default stable-x86_64-pc-windows-msvc)
git clone https://github.com/an0nn30/conch.git
cd conch

# Debug build / run
cargo run -p conch_tauri

# Release build
cargo build --release -p conch_tauri

The binary is at target/release/conch.

Keyboard Shortcuts

On Linux/Windows, replace Cmd with Ctrl.

Shortcut Action
Cmd+, Settings
Cmd+T New tab
Cmd+W Close tab
Cmd+1--9 Switch to tab N
Cmd+Shift+N New window
Cmd+Shift+E Toggle left panel
Cmd+Shift+R Toggle right panel
Cmd+Shift+J Toggle bottom panel
Cmd+Shift+Z Zen mode (hide all panels)
Cmd+/ Toggle & focus quick connect
Cmd+= / Cmd+- / Cmd+0 Zoom in / out / reset
Cmd+Shift+T Manage SSH tunnels

All shortcuts are configurable in [conch.keyboard]. Plugins can also register their own keybindings.

Configuration

Most settings can be configured through the Settings dialog (File > Settings or Cmd+,). For manual editing, Conch uses a TOML config at ~/.config/conch/config.toml (Linux/macOS) or %APPDATA%\conch\config.toml (Windows).

Alacritty-compatible sections ([window], [font], [colors], [terminal]) work as-is. Conch adds its own sections:

[colors]
theme = "dracula"           # Any Alacritty .toml theme file name

[conch]
check_for_updates = true    # Check for new versions on startup (macOS/Windows)

[conch.keyboard]
new_tab = "cmd+t"
close_tab = "cmd+w"
new_window = "cmd+shift+n"
quit = "cmd+q"
rename_tab = "f2"
zen_mode = "cmd+shift+z"
toggle_left_panel = "cmd+shift+e"
toggle_right_panel = "cmd+shift+r"
toggle_bottom_panel = "cmd+shift+j"
split_vertical = "cmd+d"
split_horizontal = "cmd+shift+d"
close_pane = "cmd+shift+w"
navigate_pane_up = "cmd+alt+up"
navigate_pane_down = "cmd+alt+down"
navigate_pane_left = "cmd+alt+left"
navigate_pane_right = "cmd+alt+right"

[conch.keyboard.plugin_shortcuts]
"My Plugin:do_thing" = "ctrl+alt+4"  # Per-plugin override key: "<plugin>:<action>"

[conch.plugins]
enabled = true              # Master switch
lua = true                  # Lua plugins
java = true                 # Java plugins (disabling skips JVM startup)
search_paths = []           # Additional plugin discovery directories

See config.example.toml for the full reference.

Project Structure

crates/
  conch_core/         Config loading, color schemes, persistent state
  conch_plugin_sdk/   Widget/event types shared with Lua and Java plugins
  conch_plugin/       Plugin host — message bus, Lua runner, Java runtime
  conch_remote/       Platform-agnostic SSH, SFTP, tunnels (russh)
  conch_tauri/        The app — Tauri/xterm.js UI, built-in SSH/SFTP/tunnels
  conch_vault/        Credential vault — encrypted storage, key generation
java-sdk/             Java Plugin SDK (JAR + sources)
editors/
  vscode/             VS Code extension for Lua plugin development
  neovim/             Neovim/LuaLS type definitions for Lua plugin development

Contributing

Conch is actively developed. Bug reports, feature requests, and pull requests are welcome — please open an issue to start a discussion. When submitting PRs, use branch prefixes: feat/, fix/, chore/, or perf/.

For plugin development, see the Java Plugin SDK and the editor extensions in editors/.

License

Apache 2.0

About

A fast, cross-platform terminal emulator and SSH manager with a Lua plugin system. Built in Rust. Runs on macOS, Windows, and Linux.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors