HORIZON(1)

NAME

horizonGPU-accelerated terminal board that puts all your sessions on an infinite canvas

SYNOPSIS

$brew install peters/horizon/horizon

INFO

445 stars
20 forks
0 views

DESCRIPTION

GPU-accelerated terminal board that puts all your sessions on an infinite canvas

README

Horizon — Your Terminals, One Canvas

Release CI License Platform

Horizon is a GPU-accelerated terminal board that puts all your sessions
on an infinite canvas. Organize by workspace, launch from presets, quick-nav fast, and never lose a terminal again.

Horizon demo — panning across AI Agents, Dev, and Monitoring workspaces


Why Horizon?

Tabbed terminals hide your work. Tiled terminals box you in. Horizon gives you a canvas — an infinite 2D surface where every terminal lives as a panel you can place, resize, and group however you want.

Think of it as a whiteboard for your terminal sessions with a structured workflow on top. Start with color-coded workspaces, launch preset panels, jump with Quick Nav, and fit the active workspace whenever you want a clean overview.


Highlights

Infinite Canvas

Pan and zoom freely across a boundless workspace surface. Place terminals anywhere. A minimap in the corner keeps you oriented — click it to jump.

Workspaces

Group related panels into color-coded workspaces. Auto-arrange with three layout modes — rows, columns, grid — or drag panels freely.

Full Terminal Emulation

24-bit color, mouse reporting, scrollback, alt-screen, and Kitty keyboard protocol. Powered by the Alacritty terminal engine — the same one behind the fastest terminal on the planet.

AI Agent Panels

First-class Claude Code, Codex, OpenCode, Gemini CLI, and KiloCode integration. Session persistence and resume work where the underlying agent CLI supports it. A live usage dashboard tracks token spend across agents.

Git Integration

A built-in git status panel watches your repo in the background. See changed files, inline diffs, and hunk-level detail — no context switching.

Smart Detection

Ctrl+click a URL to open it. Hover a file path and click to jump to it. Horizon sees what your terminal prints and makes it interactive.

Remote Hosts

Ctrl+Shift+H opens a fast overlay that discovers hosts from SSH config and Tailscale. Search, filter, and connect instantly. Type user@filter to override the SSH user. Connected sessions are grouped into a Remote Sessions grid workspace.

Live Settings Editor

Open the config with Ctrl+Shift+, — a side panel with YAML syntax highlighting and live preview. Every change applies instantly to the canvas behind it.

Session Persistence

Close Horizon, come back tomorrow. Your workspaces, panel positions, scroll positions, and terminal history are restored exactly as you left them.

Markdown Editor

Drop a .md file onto the canvas or create one from the command palette. Split view with syntax highlighting and live preview, saved with Ctrl+Shift+S.


Install

Download (fastest)

Grab the latest binary from Releases — no dependencies needed.

PlatformAsset
Linux x64horizon-linux-x64.tar.gzExtract, chmod +x, run
macOS arm64horizon-osx-arm64.tar.gzExtract, chmod +x, run
macOS x64horizon-osx-x64.tar.gzExtract, chmod +x, run
Windows x64horizon-windows-x64.exeDownload and run

Homebrew

Stable releases are available through the peters/horizon tap on macOS and Linux x64:

brew install peters/horizon/horizon

If you prefer to add the tap explicitly first:

brew tap peters/horizon
brew install horizon

To update or remove it later:

brew upgrade horizon
brew uninstall horizon
brew untap peters/horizon

Build from source

git clone https://github.com/peters/horizon.git
cd horizon
git lfs install
git lfs pull
cargo run --release

Requires Git LFS for bundled assets and Rust 1.88+. Linux needs system headers for GPU rendering — see AGENTS.md for per-distro install commands.


Quick Tour

Keyboard Shortcuts

Most app shortcuts use Ctrl+Shift to avoid conflicts with shell programs (Ctrl+C, Ctrl+K, Ctrl+B, etc.) and OS-level bindings. Canvas zoom keeps the standard Ctrl/Cmd+0, Ctrl/Cmd+Plus, and Ctrl/Cmd+Minus bindings. They are configurable through the shortcuts: block in your config file and editable from the built-in settings panel. Duplicate or overlapping bindings are rejected, including near-conflicts such as Ctrl+B and Ctrl+Shift+B.

ShortcutWhat it does
Ctrl+Shift+KQuick-navigate to any workspace
Ctrl+Shift+NNew terminal panel
Ctrl+Shift+WFocus the active workspace at the current zoom
Ctrl+Shift+9Fit the active workspace into view
Ctrl+Shift+HOpen Remote Hosts overlay
Ctrl+Shift+BToggle sidebar
Ctrl+Shift+UToggle HUD
Ctrl+Shift+MToggle minimap
Ctrl+Shift+AAlign visible attached workspaces into a horizontal row
Ctrl+Shift+,Open settings editor
Ctrl+0Reset canvas zoom to 100%
Ctrl+PlusZoom canvas in
Ctrl+MinusZoom canvas out
F11Fullscreen the active panel
EscapeExit active panel fullscreen
Ctrl+Shift+F11Toggle window fullscreen
Ctrl+Shift+SSave the active Markdown editor

Structured Workflow

If you do not want to start by dragging panels around the canvas, use Horizon like this:

  1. Create a workspace from the toolbar or with Ctrl+double-click on the canvas.
  2. Add a terminal from your first preset with Ctrl+Shift+N.
  3. Jump between workspaces with Quick Nav using Ctrl+Shift+K.
  4. Use Ctrl+Shift+W to refocus the current workspace or Ctrl+Shift+9 to fit it into view.
  5. Use the workspace header controls for Rows, Cols, or Grid when you want a structured layout without leaving the canvas.

Mouse Actions

InteractionWhat it does
Middle-mouse dragPan the canvas
Space + Left-click dragPan the canvas
Minimap click-and-dragJump to that area of the canvas
Ctrl+ScrollZoom around the cursor
Ctrl+ClickOpen URL or file path under cursor
Ctrl+double-click canvasCreate a new workspace
Ctrl+double-click inside a workspaceAdd a new terminal

On macOS, substitute Cmd for Ctrl.


Configuration

The settings editor writes back to the same config file Horizon loaded. By default that is ~/.horizon/config.yaml, and config.yml is also supported when discovered or passed explicitly. You can define workspaces, panel presets, feature flags, and keyboard shortcuts:

shortcuts:
  command_palette: Ctrl+Shift+K
  new_terminal: Ctrl+Shift+N
  focus_active_workspace: Ctrl+Shift+W
  fit_active_workspace: Ctrl+Shift+9
  open_remote_hosts: Ctrl+Shift+H
  toggle_sidebar: Ctrl+Shift+B
  toggle_hud: Ctrl+Shift+U
  toggle_minimap: Ctrl+Shift+M
  align_workspaces_horizontally: Ctrl+Shift+A
  toggle_settings: Ctrl+Shift+Comma
  zoom_reset: Ctrl+0
  zoom_in: Ctrl+Plus
  zoom_out: Ctrl+Minus
  fullscreen_panel: F11
  exit_fullscreen_panel: Escape
  fullscreen_window: Ctrl+Shift+F11
  save_editor: Ctrl+Shift+S
  search: Ctrl+Shift+F

workspaces:

  • name: Backend cwd: ~/projects/api panels:

    • kind: shell
    • kind: claude
    • kind: open_code
    • kind: git_changes
  • name: Frontend cwd: ~/projects/web panels:

    • kind: shell
    • kind: shell

presets:

  • name: Shell alias: sh kind: shell
  • name: Claude Code alias: cc kind: claude
  • name: OpenCode alias: oc kind: open_code
  • name: Gemini CLI alias: gm kind: gemini
  • name: KiloCode alias: kc kind: kilo_code
  • name: Git Changes alias: gc kind: git_changes

Optional: disable the default attention feed

features: attention_feed: false

Use key names like Plus, Minus, Comma, Escape, and F11 in YAML instead of punctuation-only shortcut components such as Ctrl++.


Built With

RustEdition 2024, safe and fast
eframe / eguiImmediate-mode UI framework
wgpuGPU rendering — Vulkan, Metal, DX12, OpenGL
alacritty_terminalBattle-tested terminal emulation
Catppuccin MochaDark color palette

Contributing

See AGENTS.md for development setup, architecture, coding standards, and CI requirements. Release instructions live in docs/release-flow.md. Manual smoke-test plans live under docs/testing, including the workspace close smoke test.

cargo fmt --all -- --check
cargo test --workspace
cargo clippy --all-targets --all-features -- -D warnings

MIT License

SEE ALSO

clihub3/24/2026HORIZON(1)