Skip to content
paradise-runnerPublic

About

a batteries-included, beautiful, in-terminal IDE

Topics

Resources

Stars

292 stars

Watchers

2 watching

Forks

Repository files navigation

prek

toast

toast is a beautiful developer environment right in your terminal. vim, nvim, and emacs have you build your editor from scratch, while toast ships with managed LSPs, an integrated file tree, multiple file tabs, and themes out of the box. toast is for the developer who wants to stay in their terminal without spending hours getting it up to snuff.

⚠️ This project is in early development, you may encounter bugs. ⚠️

toast logo

Quick Install

brew install paradise-runner/tap/toast

Features

Editor No AI features No telemetry Managed server installs Theme from terminal colors
toast ✅ ✅ ✅ ✅
nvim ✅ ✅ ❌ ❌
vim ✅ ✅ ❌ ⚠️
emacs ✅ ✅ ❌ ❌
vscode ❌ ❌ ✅ ❌
zed ❌ ❌ ✅ ❌
  • Multi-tab editing with unsaved-changes indicators, mouse-close buttons, and quit confirmation
  • Syntax highlighting via tree-sitter (Go, Python, JavaScript, TypeScript, Rust, CSS, HTML, YAML, Bash, Markdown)
  • Managed language servers — Toast offers to install missing servers for Go, Rust, Python, JavaScript, TypeScript, and Markdown (harper), with an extensible config for other languages
  • Spell checking — misspelled words in Markdown and plain-text files are underlined in the theme's diagnostic color via harper
  • Go to definition — hold Ctrl and hover to underline symbols with a target, then Ctrl-click to jump to the exact definition
  • File tree sidebar with git status, ignored-file dimming, create/delete actions, file watching, and draggable resizing
  • Project-wide search powered by rg (ripgrep), bundled into make build
  • In-file find/replace with next/previous navigation, match-case, and whole-word options
  • Line folding — click the ▾ caret in the gutter (or press Ctrl+Shift+[) to collapse an indentation block or Markdown heading; the gutter shows the hidden line count, and Fold All collapses every top-level block
  • Command palette — Ctrl+Shift+P fuzzy search over every action, with keybinding hints, live toggle state, MRU ordering, and a status-bar confirmation flash
  • Markdown preview for .md, .markdown, and .mdx files
  • Theme system — 30+ built-in themes (Catppuccin, Tokyo Night, GitHub, Dracula, Nord, Kanagawa, Nightfox, macOS Classic, plus Toast's own dark and light), a system theme derived from your terminal colours at runtime, and importers for VSCode and Zed themes
  • Auto-save — dirty files are written to disk after a configurable inactivity delay (default 300 ms), with an optional manual-save mode
  • Configurable via ~/.config/toast/config.json

Installation

Homebrew (macOS)

brew install paradise-runner/tap/toast

Download a release

Grab a zip for your platform from the releases page, unzip it, and place the binary on your $PATH:

# example for Apple Silicon
curl -Lo toast.zip https://github.com/paradise-runner/toast/releases/latest/download/toast-darwin-arm64.zip
unzip toast.zip
install -m755 toast-darwin-arm64 /usr/local/bin/toast

macOS builds are Apple Silicon only; Intel Macs are no longer supported — the last Intel release is v0.14.0.

Standalone macOS app

⚠️ Experimental: this bundles toast inside a libghostty terminal window and has more bugs than the terminal version. The TUI — Homebrew or the release binary above — is the primary, best-tested way to run toast.

Prefer a native app over the terminal? Each release also ships Toast.app — a complete desktop app with its own terminal window (libghostty), native menu bar, and dock icon. No terminal, Homebrew, or Go required.

  1. Grab the zip for your Mac from the releases page: toast-app-darwin-arm64.zip (Apple Silicon only — no Intel build).
  2. Unzip it and drag Toast.app into your Applications folder.
curl -LO https://github.com/paradise-runner/toast/releases/latest/download/toast-app-darwin-arm64.zip
unzip toast-app-darwin-arm64.zip
mv Toast.app /Applications/

First launch: the app is not code-signed or notarized yet, so macOS Gatekeeper will block a plain double-click. Right-click Toast.app in Finder and choose Open, then Open again — it launches fine from then on. Or clear the quarantine flag once: xattr -dr com.apple.quarantine /Applications/Toast.app

open -a Toast ~/src/foo.go
open -a Toast ~/src/myproject

Go install

Requires Go 1.25.2+.

go install github.com/paradise-runner/toast/cmd/toast@latest

This build skips the embed_rg tag that make build uses, so toast will look for rg on your $PATH instead of shipping its own copy — install ripgrep (brew install ripgrep) if project-wide search reports search command "rg" not found.

Build from source

Requires Go 1.25.2+.

git clone https://github.com/paradise-runner/toast
cd toast
make build
# binary written to bin/toast

Usage

toast               # open current directory
toast path/to/dir   # open a specific directory
toast path/to/file  # open a file (auto-detects git root)
toast new/file.go   # open a new file buffer if the parent directory exists
toast --help
toast --version

Keybindings

All keybindings can be remapped in ~/.config/toast/config.json (see Configuration).

Key Action
Ctrl+Q Quit
Ctrl+S / Cmd+S Save
Ctrl+W / Cmd+W Close tab
Ctrl+P Quick-open file search (fuzzy)
Ctrl+Shift+P / Cmd+Shift+P Command palette
Ctrl+Alt+Right Next tab
Ctrl+Alt+Left Previous tab
Ctrl+B Toggle sidebar
Ctrl+Shift+E Toggle focus between editor and file tree
Ctrl+Shift+F Search
Ctrl+F / Cmd+F Find and replace in the current file
Ctrl+G / Cmd+L Go to line
Ctrl+Shift+M Toggle Markdown preview
Ctrl+Z / Cmd+Z Undo
Ctrl+Y / Ctrl+Shift+Z / Cmd+Y / Cmd+Shift+Z Redo
Ctrl+Space / Cmd+Space Trigger completion
Ctrl+Shift+K Show hover
Ctrl+Shift+[ / Alt+T Toggle fold at the cursor
Ctrl+Shift+Alt+[ / Alt+Shift+T Fold all top-level blocks
Ctrl+Shift+Alt+] / Alt+Shift+U Unfold all
Ctrl+hover / Ctrl-click Check for and follow a definition
F12 Go to the definition at the cursor

Configuration

Toast reads ~/.config/toast/config.json on startup. Missing keys fall back to defaults.

{
  "theme": "toast-dark",
  "editor": {
    "tab_width": 4,
    "auto_indent": true,
    "trim_trailing_whitespace_on_save": true,
    "insert_final_newline_on_save": true,
    "auto_save": "auto",
    "auto_save_delay_ms": 300,
    "bottom_padding": 3
  },
  "sidebar": {
    "visible": true,
    "width": 30,
    "confirm_delete": true,
    "file_icons": {
      "enabled": true,
      "color_mode": "accent"
    }
  },
  "ignored_patterns": [".git", "node_modules", "__pycache__", ".DS_Store"]
}

auto_save selects the save mode: "auto" (default) writes dirty buffers to disk after auto_save_delay_ms milliseconds of inactivity, while "manual" requires an explicit save (ctrl+s / super+s).

Keybindings

All default keybindings can be overridden with the keybindings object. Each action accepts a list of key strings (supports ctrl, alt, shift, super modifiers). An empty list unbinds the action.

{
  "keybindings": {
    "save": ["ctrl+s"],
    "quick_open": ["ctrl+o"],
    "next_tab": ["ctrl+tab"],
    "prev_tab": ["ctrl+shift+tab"],
    "quit": []
  }
}

Available actions: quit, toggle_sidebar, save, new_file, close_tab, undo, redo, next_tab, prev_tab, search, find_replace, quick_open, command_palette, theme_picker, go_to_line, go_to_definition, toggle_focus, markdown_preview, show_hover, trigger_completion, toggle_fold, fold_all, unfold_all.

Omit lsp to use Toast's managed defaults for Go, Rust, Python, JavaScript, TypeScript, and Markdown; set "lsp": {} to disable all language servers.

{
  "lsp": {
    "zig": {
      "command": "zls",
      "args": [],
      "extensions": [".zig"]
    }
  }
}

Themes

Toast ships 34 themes out of the box:

Family Themes
Toast toast-dark, toast-light
Catppuccin catppuccin-latte, catppuccin-frappe, catppuccin-macchiato, catppuccin-mocha
Tokyo Night tokyo-night, tokyo-night-storm, tokyo-night-moon, tokyo-night-light
GitHub github-light, github-light-high-contrast, github-dark, github-dark-high-contrast, github-dark-dimmed
Dracula dracula, dracula-solid, dracula-light-alucard
Nord nord-dark, nord-darker, nord-light
Kanagawa kanagawa-wave, kanagawa, kanagawa-dragon, kanagawa-lotus
Nightfox nightfox, dayfox, dawnfox, duskfox, nordfox, terafox, carbonfox
macOS Classic macos-classic-light, macos-classic-dark
System system (derived from your terminal's colours)

The imported themes are converted from Zed theme extensions; see internal/theme/builtin/SOURCES.md for the upstream repositories, commits and licences.

Custom themes live in ~/.config/toast/themes/. Set "theme": "<theme-name>" in your config, or pick one with the theme picker.

Import a VSCode or Zed theme:

toast migrate-theme vscode path/to/theme.json
# writes ~/.config/toast/themes/<theme-name>.json

toast migrate-theme zed path/to/theme.json ~/.config/toast/themes
# a Zed theme file holds a whole family; every variant is written

Both commands default to ~/.config/toast/themes/; pass a directory to write somewhere else.

Feedback & Issues

Found a bug or have a feature request? We'd love to hear from you! Please open an issue on GitHub with as much detail as possible. Your feedback helps make Toast better.

Development

make build             # compile (embeds ripgrep for search)
make run               # go run -tags embed_rg ./cmd/toast .
make test              # go test ./...
make test-integration  # run opt-in Ghostty/tmux terminal integration tests
make test-integration-update  # refresh golden screenshots

Releasing

Releases are automated with Release Please: conventional commit titles on main (feat:, fix:, …) drive the next version, a release PR carries the version and the RELEASE_NOTES.md entry, and merging it tags the release, builds the binaries and updates the Homebrew tap. See docs/releasing.md for the details.

About

a batteries-included, beautiful, in-terminal IDE

Topics

Resources

Stars

292 stars

Watchers

2 watching

Forks

Releases

Contributors

Languages