GPU-accelerated terminal for developer workflows
Canopy ships a WebGL-powered terminal built on xterm.js. Hold Alt and drag a tab to split it horizontally or vertically, reorder tabs, or move them between groups.

WebGL rendering with xterm.js
The terminal uses xterm.js with a WebGL renderer, so scrolling and output stay smooth even with large log streams. WebGL is attached only to the active tab and released when you switch away, freeing GPU memory.
- WebGL canvas rendering for smooth output at high line counts
- GPU resources released automatically on inactive tabs
- 5000-line scroll-back buffer per session
split panes via Alt+drag
Hold Alt and drag a tab to the edge of a pane to split it horizontally or vertically. The split tree supports up to four nesting levels. Reorder tabs within a group or move them between groups.
- Horizontal and vertical splits via Alt+drag
- Up to four levels of nested splits
- Tabs move between pane groups by dragging
shell config and themes
Canopy spawns your login shell (bash, zsh, fish, or whatever $SHELL points to) with your full profile loaded. Choose from 12 built-in color themes and configure font family, font size, and ligature rendering.
- Login shell spawned with your profile (.bashrc, .zshrc, config.fish)
- 12 themes: Dracula, Nord, Tokyo Night, Catppuccin Mocha, and more
- Font family, size, and ligature settings
questions about the terminal
- Which shells does the Canopy terminal support?
- Bash, zsh, fish, and any shell that works with node-pty. Canopy uses the shell configured in your environment.
- Does Canopy use tmux?
- Canopy has optional tmux integration for session persistence. When enabled, terminal sessions survive app restarts. The feature is experimental and can be toggled in Settings.
- Is the WebGL renderer faster than a regular terminal?
- The WebGL renderer offloads glyph drawing to the GPU, which reduces CPU usage during fast output like build logs or large git diffs. Perceived speed depends on your hardware.