DEV Community

Tobias weissmann
Tobias weissmann

Posted on

Fresh: The Terminal Editor that Opens 2GB Logs in ~600ms with <40MB RAM

If you’ve ever cracked open a multi-gigabyte log only to watch your editor choke, this’ll feel like cheating.

Fresh is a new terminal-based editor written in Rust that behaves like a modern GUI editor — command palette, mouse support, LSP, multi-cursor — yet stays tiny and fast enough to open a 2GB ANSI-colored log in about 600ms while sipping ~36MB RAM (author’s benchmark). It’s open-source and solo-built.

Rust Production Cheatsheet: https://tobiweissmann.gumroad.com/l/pvaqvy

Why Fresh exists (and why it’s interesting)
Most terminal editors trade power for a steep learning curve or for plugin sprawl. Fresh aims for a different triangle: discoverable UX, modern extensibility, and zero-latency feel — inside the terminal.

Discoverable UX. Menus, a Command Palette (Ctrl+P), familiar keybindings, mouse & scrollbars. If you can use VS Code, you can use Fresh.
Batteries included. Built-in LSP client, multi-cursor, and syntax highlighting out of the box.
Extensible with TypeScript. Write plugins in TS; they run in a sandboxed Deno environment. Today there are examples like Git Log navigation and a Git Blame inspector.
Built for huge files. Fresh was engineered to lazy-load and display even multi-GB files quickly — including rendering ANSI colors properly so your log retains meaning.
The headline number: 2GB in ~600ms
In an early comparison on a 2GB ANSI-heavy log:

Fresh: ~600ms load, ~36MB RAM, ANSI colors shown
Neovim: ~6.5s, ~2GB RAM, ANSI as raw control codes
Emacs: ~10s, ~2GB RAM, ANSI as raw control codes
VS Code: ~20s, OOM-killed on a ~4.3GB-RAM machine
These are author-run, early benchmarks (configs and plugins can change results; e.g., specialized Emacs packages for large files may alter the picture). Still: Fresh’s lazy approach to big files is the point. Try reproducing locally (recipe below).

Quickstart (pick one)
macOS (Homebrew)

brew tap sinelaw/fresh
brew install fresh-editor
Debian/Ubuntu (.deb)

download from Releases

sudo dpkg -i fresh-editor_*.deb
Fedora/RHEL/openSUSE (.rpm)

download from Releases

sudo rpm -i fresh-editor-*.rpm
Arch (AUR)

yay -S fresh-editor
Rust users (crates.io)

cargo install fresh-editor
Just try it (Node)

npx @fresh-editor/fresh-editor
Releases & instructions are on the project’s README.
Enter fullscreen mode Exit fullscreen mode

60-second tour
Ctrl+P: Command Palette for everything.
Mouse + Scrollbars: Select, resize splits, navigate — no modal gymnastics.
Multi-cursor: Hold your breath and edit 30 lines at once.
LSP: Go to definition, references, rename, code actions, diagnostics — works with the language servers you already use.
Extensibility that feels modern
Fresh’s plugin API uses TypeScript running in Deno. That means up-to-date tooling, a rich JS ecosystem, and a sandbox designed for stability. If you’ve ever wanted to script a terminal editor without learning a niche DSL, this is your on-ramp.

Ideas to build next:

“Triage Log” plugin: colorize severity, jump between error frames, extract request IDs.
“Git Time Machine”: blame + inline history slider.
“Code Navigation++”: cross-file symbol search powered by ripgrep + LSP.
Reproduce the big-file demo yourself
Create a synthetic 2GB log with ANSI colors, then time your editor:

# make a 2GB file with colored lines
python - <<'PY'
import os, sys
line = "\x1b[32mINFO\x1b[0m something happened id=1234\n"
target = 2 * 1024 * 1024 * 1024
written = 0
with open("huge.log","w") as f:
    while written < target:
        f.write(line)
        written += len(line)
Enter fullscreen mode Exit fullscreen mode

try Fresh

/usr/bin/time -v fresh huge.log

try your usual editor for comparison

/usr/bin/time -v nvim huge.log
(Performance will vary by disk, cache warmth, and terminal.)

Where Fresh fits today
Log triage & prod incidents. Open gargantuan logs instantly with colors intact, jump via Command Palette, and keep memory overhead tiny.
SSH & containers. A capable editor that doesn’t need a windowing system; npx makes it trivial to try in throwaway environments.
Roadmap vibes (my take)
Fresh already ships with documentation (User Guide, Plugin Development, Architecture) and regular releases under GPL-2.0. It’s early, but momentum looks real.

The bottom line
Fresh treats the terminal like a first-class editing surface: discoverable UI, modern language smarts, real extensibility, and the kind of big-file performance you usually get from bespoke viewers — not editors. If your week involves tailing logs, wrangling monorepos over SSH, or just craving snappy tools, give it a try.

Optimal setup for massive-log workflows (practical recipe)
If your goal is “open, search, annotate, and keep following a huge changing log” with minimal RAM:

Install Fresh using your platform’s method (above).

Enable auto-revert/auto-reload in Fresh so the file view updates as logs append (feature is listed in the README).

Combine with ripgrep for jumps:

rg -n "ERROR|WARN" huge.log > hits.txt && fresh hits.txt huge.log
Use the Command Palette to hop between matches.

Add a tiny TS plugin that:

Highlights \b(ERROR|WARN|FATAL)\b
Adds a “Next Error (Alt+E)” command
Extracts fields like request_id= into a side panel
(Plugin scaffolding is documented under “Plugin Development”.)
Keep memory flat. Avoid piping stdin to editors that buffer; work on the file directly so Fresh can lazily map/scan it.

This combo gives you instant open, colored log semantics, jump-to-signal navigation, and low memory.

Quick adoption playbook (for you, the author)
Ship reproducible benchmarks. Add a repo script that creates the synthetic 2GB ANSI log and records /usr/bin/time -v for Fresh and a few editors (with configs disclosed). Publish a “Benchmarks” page and version it with each release.

One-minute demo video + GIFs. Show (1) 2GB open, (2) Command Palette, (3) multi-cursor, (4) LSP. Link from README & website.
Extension gallery. Curate 5–8 “killer” plugins (Log Triage, Blame, TODOs, Color Highlighter, Merge Conflicts) and a template repo for new plugins.
Package everywhere. You already have Homebrew, AUR, .deb, .rpm, crates, and npx — great coverage. Add Scoop/winget for Windows terminals and a static MUSL build for Alpine.

Keymap packs. Offer VS Code / Sublime / Emacs-like keymaps so switching is painless. (Your README already lists keymap support — double down.)
Try Fresh, file an issue, or star the repo to nudge development forward. The project site and README have everything you need to get started.

Note: I would like to express my sincere gratitude to Noam Lewis, the maintainer of the Fresh Git repository, for his valuable work.

GithubLink : https://sinelaw.github.io/fresh/

Rust Production Cheatsheet: https://tobiweissmann.gumroad.com/l/pvaqvy

Top comments (0)