Preview

Logs, inside the editor

Project logs · Logs page

Everything a project prints while you develop, in one live, filtered view: log files, dev servers and other commands, Docker containers and Compose services.

  • Sources per projectFiles and globs such as logs/*.log, followed through truncation and rotation; commands such as pnpm dev, started, stopped and restarted from the page; docker logs and docker compose logs. Sources are saved per project.
  • Suggestions to start fromFor a project without sources: package.json dev scripts, cargo run, manage.py runserver, Compose services and *.log files in the usual folders. One click adds and starts one.
  • Levels, colours and JSONLevels detected from common formats, ANSI colours rendered, stack traces kept with their error, and JSON lines from pino, bunyan, tracing or zap shown as level and message with every field in a details pane.
  • Filter, search and followLevel toggles, Errors only (⌘E), text or regex search with highlighted matches, and a tail that pauses when you scroll up, with Jump to latest.

CI, inside the editor

GitHub Actions · CI page

Check on CI without a browser tab. The CI page reads the GitHub repository of the project you have open and shows its Actions runs next to your code.

  • Runs for the open projectGitHub Actions runs for the repository you have open, with their status, branch and duration, and the jobs and steps of each run.
  • Live logs, in colourFollow a job's log while it runs, with ANSI colours rendered instead of escape codes.
  • Run a workflowStart a workflow_dispatch workflow from a form built from its inputs, without leaving the editor.
  • Pull request checksOpen pull requests with the status of their checks, next to the code they change.

What Ferrum Editor does

The buffer, cursors and commands are covered by unit tests, and the app by headless tests that type real keystrokes through the keymap.

  • The Atom layout

    Tree view, tabs with a dirty dot, split panes, a fuzzy file finder (⌘P), a command palette (⇧⌘P) with every command and its keys, and go to line.

  • Multi-cursor editing

    ⌘-click to add carets, ⌘D for the next occurrence, select all occurrences, split a selection into lines, add cursors above and below, Alt-drag for columns.

  • Find, here and everywhere

    Find and replace in the file with case, whole word and regex with $1 groups, and find in files that respects .gitignore.

  • Tree-sitter highlighting

    Rust, JavaScript, TypeScript, JSON, TOML, YAML, Markdown, Python, Go, HTML, CSS and Bash, parsed in the background.

  • Hackable in plain text

    config.toml, keymap.toml, theme.toml and snippets.toml in ~/.ferrum/editor, opened from the palette and applied the moment you save.

  • Language servers

    Completions as you type, problems underlined with counts in the status bar, and go to definition with F12 or ⌘-click. rust-analyzer, gopls, TypeScript and the others install themselves the first time you open a file.

  • Its own editor core

    Rope buffer, undo, multi-cursor, rendering and input are written from scratch on GPUI, not forked from another editor.

Status: Alpha

Ferrum Editor is in alpha, a first vertical slice. It is tested automatically, but the window is new and its visual polish is unverified.

Works today

  • Rope buffer that keeps line endings and BOM, atomic saves, binary files refused
  • Multi-cursor typing, paste and delete as single undo steps
  • Auto-close brackets, auto-indent, toggle comment, move and duplicate lines
  • Find and replace, find in files, fuzzy finder and command palette
  • Git line marks and branch, Markdown preview, reload on change, session restore
  • Snippets with tab stops; ferrumeditor path:line:col
  • Terminal panel from the status bar (⌃`), with tabs that keep running when hidden
  • Theme picker with live preview; TOML themes and VS Code theme import
  • File icons in the tree, tabs and finder; loadable icon themes
  • Autocomplete from language servers, or from words in the file without one
  • Language servers install themselves (rust-analyzer, gopls, TypeScript and more)
  • Build tasks with ⌘B and their errors as problems; Git panel and Git view
  • Problems underlined, listed (⌃⇧M) and stepped through with F8
  • Go to definition (F12 or ⌘-click), with back and forward
  • Logs page: files, commands and containers of a project tailed in one filtered view
  • CI page: GitHub Actions runs, live logs, workflow dispatch and pull request checks

Not built yet

  • Packages and plugins (the seam is there)
  • Rename, find references and code actions from language servers
  • Code folding and a minimap
  • Multiple windows and project-wide replace
  • Encodings other than UTF-8, and files over 64 MB

Requirements & built with

Install
Ferrum Launcher (free, see Download)
Network
None, except the CI page, which talks to GitHub with your own token
Builds
macOS (Apple Silicon and Intel), Linux x86_64 and Windows
Built with
Rust, GPUI, ropey, tree-sitter
Tested on
macOS (automated tests)

Key bindings are designed for macOS; on Linux and Windows ⌘ becomes Ctrl.