Fresh

title
Fresh
type
toolbox
summary
Terminal editor with VS Code-style keys, mouse, LSP and QuickJS plugins, plus a worktree orchestrator for coding agents
tags
rust, tui, editor, coding-agents
language
Rust
license
GPL-2.0
created
2026-09-13
updated
2026-09-13

Fresh is a terminal text editor by Noam Lewis that takes its interaction model from VS Code and Sublime Text rather than from vi or Emacs: standard keybindings, full mouse support, a menu bar and a command palette, and no modes. The pitch is zero configuration. It is aimed at people who want an IDE-like editor over SSH or in a terminal without learning a modal editor first.

What is in it

The feature list covers what you would expect from a graphical editor: multi-cursor and block selection, incremental search and query-replace, git grep, split panes, a file explorer, markdown preview, bookmarks, keyboard macros and an integrated terminal. LSP support gives go-to-definition, references, hover, code actions, rename, diagnostics and completion. Plugins are written in TypeScript and run sandboxed in QuickJS, and several built-in features (TODO and colour highlighting, merge conflict handling, path completion) ship as plugins. There is a settings UI and an interactive keybinding editor.

The README claims multi-gigabyte files open with negligible memory overhead and that input latency stays low regardless of file size, pointing to the author's blog post on loading huge files. Those are the project's own claims.

Orchestrator

The part that brings it into the agent cluster here is the Orchestrator. Each task gets its own workspace bound to a git worktree, with its own terminals and long-running commands, and you switch between workspaces with an arrow key or a dock switcher. Coding agents (the README lists claude, codex, opencode and aider) run inside a workspace with resumable sessions, and workspaces can be remote over SSH. It is the worktree-per-task model of kanbots and agent-manager, placed inside an editor instead of beside one. agent-shell is the Emacs version of putting agents inside the editor, over ACP rather than terminals.

Install

curl -fsSL https://raw.githubusercontent.com/sinelaw/fresh/refs/heads/master/scripts/install.sh | sh
brew install fresh-editor
cargo install --locked fresh-editor

On Linux the script installs a single static musl binary under ~/.local with no root, and it updates itself with fresh --cmd update, checking both the published checksum and GitHub's release attestation before swapping the binary. Every file it writes outside the install directory is listed in an install receipt, so uninstalling is removing that list. Distro packages (deb, rpm, AUR, Nix, Gentoo GURU, FreeBSD ports), winget, Flatpak, AppImage and npm are all available, and packages are opt-in because they need root and hand updates to the package manager.

Things to know

It checks for updates daily and sends anonymous telemetry alongside the check: version, OS and architecture, and terminal type. That is on by default. --no-upgrade-check or check_for_updates: false turns off both. On macOS the documentation recommends terminal configuration changes for the keybindings to work as expected, which is the usual cost of non-modal shortcuts inside a terminal that claims some of those keys.

Of the editors that shell out to $EDITOR in editor-as-ui, Fresh is the kind that wants to be the whole environment rather than the widget.

GPL-2.0, 8,865★, 332 forks, created December 2024 and pushed to on the day of ingest. Single named author, but widely packaged and in active development, so not on the watchlist. Repo: https://github.com/sinelaw/fresh