Install con
con is in beta. macOS is the primary supported platform today. Windows and Linux builds are available as previews.
Every installer includes the app and con-cli. The CLI is used by scripts,
test runners, and external agent orchestrators to talk to a running con session.
Use the official installer when you want the newest beta as soon as it ships. Community packages are convenient if they already fit your system workflow, but they may trail the GitHub release for a short time.
macOS with Homebrew
brew install --cask nowledge-co/tap/con-beta
This installs con and adds con-cli to your PATH for automation.
macOS direct install
curl -fsSL https://con-releases.nowledge.co/install.sh | sh
This installs con into /Applications and links con-cli into ~/.local/bin.
You can also download the DMG from
Releases.
Windows preview
Official installer
irm https://con-releases.nowledge.co/install.ps1 | iex
This installs con-app.exe and con-cli.exe into the same PATH directory.
Scoop
Scoop users can install Con from the community-maintained jam bucket:
scoop bucket add jam https://github.com/EFLKumo/jam
scoop install jam/con-terminal
The Scoop manifest is maintained by
EFLKumo in
EFLKumo/jam. It installs Con as a portable
app and adds both con-app and con-cli to your PATH.
Windows is still early. Follow the Windows tracker for current limits and fixes.
Linux preview
Official installer
curl -fsSL https://con-releases.nowledge.co/install.sh | sh
This installs con and con-cli into ~/.local/bin, registers the desktop
launcher, and refreshes the app icon. You can also download the Linux tarball
from the latest
Release.
Arch Linux / AUR
Arch users can install the community AUR package:
yay -S con-bin
paru -S con-bin works as well. The AUR package is maintained by
czyt, and the package page is
con-bin.
Linux is in preview. Follow the Linux tracker for current limits and fixes.
Shell integration
con embeds Ghostty's shell-integration scripts and tries to auto-inject them
into the shells it spawns. Most users will never notice: Ghostty handles this
through ZDOTDIR for zsh, XDG_DATA_DIRS for fish, and --rcfile for bash.
Auto-injection can be skipped, though, when something else owns the shell
startup path: tmux, exec zsh, login-shell mode, a framework that resets
ZDOTDIR, and similar setups. When that happens, con still works as a
terminal, but it loses shell metadata: new panes may open at $HOME, the
sidebar may miss the foreground process or cwd, and AI tab labels have less
context.
You can check whether integration loaded in a fresh con tab:
- zsh:
echo $precmd_functions | grep _ghostty_precmd - bash:
declare -F | grep __ghostty_precmd - fish:
functions -a | grep __ghostty_mark_prompt_start
If the command prints nothing, source the integration script explicitly. Add the line for your shell to its startup file, save it, and open a new tab:
zsh (~/.zshrc):
[[ -n $GHOSTTY_RESOURCES_DIR ]] && \
source "$GHOSTTY_RESOURCES_DIR/shell-integration/zsh/ghostty-integration"
bash (~/.bashrc):
if [[ -n "$GHOSTTY_RESOURCES_DIR" ]]; then
builtin source "$GHOSTTY_RESOURCES_DIR/shell-integration/bash/ghostty.bash"
fi
If you run bash as a login shell, put the same snippet in ~/.bash_profile or
~/.profile, or make that file source ~/.bashrc. Login bash does not always
read ~/.bashrc on its own.
fish (~/.config/fish/config.fish):
if set -q GHOSTTY_RESOURCES_DIR; and string length -q -- "$GHOSTTY_RESOURCES_DIR"
source "$GHOSTTY_RESOURCES_DIR/shell-integration/fish/vendor_conf.d/ghostty-shell-integration.fish"
end
$GHOSTTY_RESOURCES_DIR resolves correctly under both the installed app
bundle and a cargo run debug build, so the same line works in either.
Build from source
If you want to build or change con itself, use the contributor quickstart in the source repo.