Skip to content

Repository files navigation

Ferrite

WebsiteLatest ReleaseLicenseGitHub StarsGitHub IssuesTranslation Status

getferrite.dev — Official website with downloads, features, and documentation

A fast, lightweight text editor for Markdown, JSON, YAML, and TOML files. Built with Rust and egui for a native, responsive experience.

⚠️Platform Note: Ferrite is developed and tested on Windows and Linux. macOS support is experimental. If you encounter issues, please report them.

🛡️ Code Signing & Antivirus

Starting with v0.2.6.1, all Windows releases are digitally signed with a certificate from SignPath Foundation. This means:

  • Windows SmartScreen recognizes the publisher — no more "Unknown publisher" warnings
  • Antivirus false positives are significantly reduced thanks to the trusted code signature
  • Integrity verification — you can verify that the binary hasn't been tampered with

Previous False Positives

Older unsigned builds may still trigger antivirus detections. This was caused by:

  • Live Pipeline feature: Uses cmd.exe /C on Windows for shell commands, which ML-based detection can misidentify
  • Rust compilation patterns: Rust binaries can trigger heuristic detections due to unique characteristics

We've addressed this through code signing, build profile adjustments (disabled symbol stripping, speed optimization), and reporting to Microsoft's Security Intelligence portal.

If You're Still Affected

If Windows Defender quarantines Ferrite:

  1. Upgrade: Download the latest signed release from GitHub Releases
  2. Verify the signature: Right-click ferrite.exe → Properties → Digital Signatures → should show "SignPath Foundation"
  3. Check VirusTotal: Upload the file to VirusTotal — signed builds should show clean results

Ferrite does NOT access passwords, browser data, or make network connections. The application is fully offline and only accesses files you explicitly open.

🤖 AI-Assisted Development

This project is 100% AI-generated code. All Rust code, documentation, and configuration was written by Claude (Anthropic) via Cursor with MCP tools.

About the AI workflow

My Role

  • Product direction — Deciding what to build and why
  • Testing — Running the app, finding bugs, verifying features
  • Review — Reading generated code, understanding what it does
  • Orchestration — Managing the AI workflow effectively

The Workflow

  1. Idea refinement — Discuss concepts with multiple AIs (Claude, Perplexity, Gemini Pro)
  2. PRD creation — Generate requirements using Task Master
  3. Task execution — Claude Opus handles implementation (preferring larger tasks over many subtasks)
  4. Session handover — Structured prompts maintain context between sessions
  5. Human review — Every handover is reviewed; direction adjustments made as needed

📖 Full details:AI Development Workflow

Open Process

The actual prompts and documents used to build Ferrite are public:

DocumentPurpose
current-handover-prompt.mdActive session context
ai-workflow/Full workflow docs, PRDs, historical handovers
handover/Reusable handover templates

This transparency is intentional — I want others to learn from (and improve upon) this approach.

Screenshots

Ferrite Demo

Raw EditorSplit ViewZen Mode
Raw EditorSplit ViewZen Mode

v0.2.6.1 Released: First code-signed release! Integrated Terminal Workspace with tiling, splitting, and layout persistence. Productivity Hub panel. Major app.rs refactoring into ~15 modules. 8+ bug fixes including duplicate line, smart paste, and drag-drop positioning. CJK memory optimization (-80MB). See CHANGELOG.md for full details.

📦 v0.2.6 Highlights: New Custom Editor Engine with virtual scrolling (80MB file uses ~80MB RAM), Multi-Cursor Editing, Code Folding, IME/CJK input improvements.

Features

Core Editing

  • WYSIWYG Markdown Editing - Edit markdown with live preview, click-to-edit formatting, and syntax highlighting
  • Multi-Format Support - Native support for Markdown, JSON, CSV, YAML, and TOML files
  • Multi-Encoding Support - Auto-detect and preserve file encodings (UTF-8, Latin-1, Shift-JIS, Windows-1252, GBK, and more)
  • Tree Viewer - Hierarchical view for JSON/YAML/TOML with inline editing, expand/collapse, and path copying
  • Find & Replace - Search with regex support and match highlighting
  • Go to Line (Ctrl+G) - Quick navigation to specific line number
  • Undo/Redo - Full undo/redo support per tab

View Modes

  • Split View - Side-by-side raw editor and rendered preview with resizable divider; both panes are fully editable
  • Zen Mode - Distraction-free writing with centered text column

Editor Features

  • Syntax Highlighting - Full-file syntax highlighting for 100+ languages (Rust, Python, JavaScript, Go, TypeScript, PowerShell, and more)
  • Code Folding - Fold/unfold regions with gutter indicators (▶/▼) for headings, code blocks, and lists; collapsed content is hidden
  • Semantic Minimap - Navigation panel with clickable header labels, content type indicators, and text density bars (switchable to VS Code-style pixel view)
  • Multi-Cursor Editing - Ctrl+Click to add multiple cursors; type, delete, and navigate at all positions simultaneously
  • Bracket Matching - Highlight matching brackets ()[]{}<> and emphasis pairs **__
  • Auto-close Brackets & Quotes - Type (, [, {, ", or ' to get matching pair; selection wrapping supported
  • Duplicate Line (Ctrl+Shift+D) - Duplicate current line or selection
  • Move Line Up/Down (Alt+↑/↓) - Rearrange lines without cut/paste
  • Smart Paste for Links - Select text then paste URL to create [text](url) markdown link
  • Drag & Drop Images - Drop images into editor to auto-save to ./assets/ and insert markdown link
  • Table of Contents - Generate/update TOC from headings with <!-- TOC --> block (Ctrl+Shift+U)
  • Snippets - Text expansions like ;date → current date, ;time → current time, plus custom snippets
  • Auto-Save - Configurable auto-save with temp-file safety
  • Line Numbers - Optional line number gutter
  • Configurable Line Width - Limit text width for readability (80/100/120 or custom)
  • Custom Font Selection - Choose preferred fonts for editor and UI; important for CJK regional glyph preferences
  • Keyboard Shortcut Customization - Rebind shortcuts via settings panel

MermaidJS Diagrams

Native rendering of 11 diagram types directly in the preview:

  • Flowchart, Sequence, Pie, State, Mindmap
  • Class, ER, Git Graph, Gantt, Timeline, User Journey

v0.2.5 Mermaid Update: Native Mermaid rendering now supports YAML frontmatter, parallel edges (A --> B & C), classDef/linkStyle styling, improved subgraphs, and more. Complex diagrams may still have rendering differences from mermaid.js. See ROADMAP.md for planned improvements.

CSV/TSV Viewer

  • Native Table View - View CSV and TSV files in a formatted table with fixed-width column alignment
  • Rainbow Column Coloring - Alternating column colors for improved readability
  • Delimiter Detection - Auto-detect comma, tab, semicolon, and pipe separators
  • Header Row Detection - Intelligent detection and highlighting of header rows

Workspace Features

  • Workspace Mode - Open folders with file tree, quick switcher (Ctrl+P), and search-in-files (Ctrl+Shift+F)
  • Git Integration - Visual status indicators (modified, added, untracked, ignored) with auto-refresh on save, focus, and file changes
  • Session Persistence - Restore open tabs, cursor positions, and scroll offsets on restart

Terminal Workspace

  • Integrated Terminal - Multiple instances with shell selection (PowerShell, CMD, WSL, bash)
  • Tiling & Splitting - Create complex 2D grids with horizontal and vertical splits
  • Smart Maximize - Temporarily maximize any pane to focus on work (Ctrl+Shift+M)
  • Layout Persistence - Save and load your favorite terminal arrangements to JSON files
  • Theming & Transparency - Custom color schemes (Dracula, etc.) and background opacity
  • Drag-and-Drop Tabs - Reorder terminals with visual feedback
  • AI-Ready - Visual "breathing" indicator when terminal is waiting for input (perfect for AI agents)

Additional Features

  • Light & Dark Themes - Beautiful themes with runtime switching
  • Document Outline & Statistics - Navigate with outline panel; tabbed statistics showing word count, reading time, heading/link/image counts
  • Export Options - Export to HTML with themed styling, or copy as HTML
  • Formatting Toolbar - Quick access to bold, italic, headings, lists, links, and more
  • Live Pipeline - Pipe JSON/YAML content through shell commands (for developers)
  • Custom Window - Borderless window with custom title bar and resize handles
  • Recent Files & Folders - Click filename in status bar to access recently opened files and workspace folders
  • CJK Paragraph Indentation - First-line indentation options for Chinese (2 chars) and Japanese (1 char) writing conventions

Installation

Pre-built Binaries

Download the latest release for your platform from GitHub Releases.

PlatformDownloadNotes
Windowsferrite-windows-x64.msiRecommended - full installer with Start Menu
Windowsferrite-portable-windows-x64.zipPortable - extract anywhere, run from USB
Linux (Debian/Ubuntu)ferrite-editor_amd64.debFor Debian, Ubuntu, Mint, Pop!_OS
Linux (Fedora/RHEL)ferrite-editor.x86_64.rpmFor Fedora, RHEL, CentOS, Rocky
Linuxferrite-linux-x64.tar.gzUniversal - works on any distro
macOS (Apple Silicon)ferrite-macos-arm64.tar.gzFor M1/M2/M3 Macs
macOS (Intel)ferrite-macos-x64.tar.gzFor Intel Macs
Windows Installation

MSI Installer (Recommended)

Download ferrite-windows-x64.msi and run it. This will:

  • Install Ferrite to C:\Program Files\Ferrite
  • Add Start Menu shortcut with icon
  • Enable easy uninstall via Windows Settings
  • Store settings in %APPDATA%\ferrite\

Portable (ZIP)

Download ferrite-portable-windows-x64.zip and extract anywhere. The zip includes:

  • ferrite.exe - the application
  • portable/ - folder for all your settings
  • README.txt - quick start guide

True portable mode: All configuration, sessions, and data are stored in the portable folder next to the executable. Nothing is written to %APPDATA% or the Windows registry. Perfect for USB drives or trying Ferrite without installation.

Linux Installation

Debian/Ubuntu/Mint (.deb)

# Download the .deb file, then install with:
sudo apt install ./ferrite-editor_amd64.deb
# Or using dpkg:
sudo dpkg -i ferrite-editor_amd64.deb

Fedora/RHEL/CentOS (.rpm)

# Download the .rpm file, then install with:
sudo dnf install ./ferrite-editor.x86_64.rpm
# Or using rpm:
sudo rpm -i ferrite-editor.x86_64.rpm

Both .deb and .rpm packages will:

  • Install Ferrite to /usr/bin/ferrite
  • Add desktop entry (appears in your app menu)
  • Register file associations for .md, .json, .yaml, .toml files
  • Install icons for the system

Arch Linux (AUR)

Ferrite on AURFerrite-bin on AUR

Ferrite is available on the AUR:

# Release packageyay -Sy ferrite
# Binary packageyay -Sy ferrite-bin

Other Linux (tar.gz)

tar -xzf ferrite-linux-x64.tar.gz
./ferrite
Build from Source

Prerequisites

  • Rust 1.70+ - Install from rustup.rs
  • Platform-specific dependencies:

Windows:

  • Visual Studio Build Tools 2019+ with C++ workload

Linux:

# Ubuntu/Debian
sudo apt install build-essential pkg-config libgtk-3-dev libxcb-shape0-dev libxcb-xfixes0-dev
# Fedora
sudo dnf install gcc pkg-config gtk3-devel libxcb-devel
# Arch
sudo pacman -S base-devel pkg-config gtk3 libxcb

macOS:

xcode-select --install

Build

# Clone the repository
git clone https://github.com/OlaProeis/Ferrite.git
cd Ferrite
# Build release version (optimized)
cargo build --release
# The binary will be at:# Windows: target/release/ferrite.exe# Linux/macOS: target/release/ferrite# macOS: Create .app bundle (optional)
cargo install cargo-bundle
cargo bundle --release
# Bundle will be at: target/release/bundle/osx/Ferrite.app

macOS "Open With" Limitation: The app bundle includes file type associations, so Ferrite appears in Finder's "Open With" menu. However, opening files this way (or by dragging files onto the app icon) is not yet supported due to eframe/winit limitations. Workaround: Open files via Terminal: open -a Ferrite path/to/file.md or use File > Open within the app.

Development Builds: Building from the main branch gives you the latest features before they're officially released. These builds are untested and may contain bugs. For stable versions, download from GitHub Releases.

Usage

# Open a file
ferrite path/to/file.md
# Open a folder as workspace
ferrite path/to/folder/
More CLI options
# Run from source
cargo run --release
# Or run the binary directly
./target/release/ferrite
# Open multiple files as tabs
./target/release/ferrite file1.md file2.md
# Show version
./target/release/ferrite --version
# Show help
./target/release/ferrite --help

See docs/cli.md for full CLI documentation.

View Modes

Ferrite supports three view modes for Markdown files:

  • Raw - Plain text editing with syntax highlighting
  • Rendered - WYSIWYG editing with rendered markdown
  • Split - Side-by-side raw editor and live preview

Toggle between modes using the toolbar buttons or keyboard shortcuts.

Keyboard Shortcuts

ShortcutAction
Ctrl+NNew file
Ctrl+OOpen file
Ctrl+SSave file
Ctrl+WClose tab
Ctrl+PQuick file switcher
Ctrl+FFind
Ctrl+GGo to line
Ctrl+,Open settings
All Keyboard Shortcuts

File Operations

ShortcutAction
Ctrl+NNew file
Ctrl+OOpen file
Ctrl+SSave file
Ctrl+Shift+SSave as
Ctrl+WClose tab

Navigation

ShortcutAction
Ctrl+TabNext tab
Ctrl+Shift+TabPrevious tab
Ctrl+PQuick file switcher (workspace)
Ctrl+Shift+FSearch in files (workspace)

Editing

ShortcutAction
Ctrl+ZUndo
Ctrl+Y / Ctrl+Shift+ZRedo
Ctrl+FFind
Ctrl+HFind and replace
Ctrl+GGo to line
Ctrl+Shift+DDuplicate line
Alt+↑Move line up
Alt+↓Move line down
Ctrl+BBold
Ctrl+IItalic
Ctrl+KInsert link

View

ShortcutAction
F11Toggle fullscreen
Ctrl+,Open settings
Ctrl+Shift+[Fold all
Ctrl+Shift+]Unfold all

Terminal Workspace

Terminal shortcuts are context-aware; they work when the terminal panel is focused.

ShortcutAction
Ctrl+Tab / Ctrl+Shift+TabCycle through terminal tabs
Ctrl+1-9Switch to specific terminal tab
Ctrl+Arrow KeysMove focus between split panes
Ctrl+Shift+MToggle Maximize Pane (Zoom)
Ctrl+LClear terminal screen
Ctrl+Shift+CCopy selection / screen
Ctrl+Shift+VPaste to terminal
Ctrl+W / Ctrl+F4Close focused pane (auto-collapses splits)
Double-click TabRename terminal

Configuration

Access settings via Ctrl+, or the gear icon. Configure appearance, editor behavior, and file handling.

Configuration details

Settings are stored in platform-specific locations:

  • Windows:%APPDATA%\ferrite\
  • Windows Portable:portable\ folder next to ferrite.exe
  • Linux:~/.config/ferrite/
  • macOS:~/Library/Application Support/ferrite/

Portable Mode (Windows): If a portable folder exists next to the executable, Ferrite automatically uses it for all configuration instead of %APPDATA%. This makes Ferrite fully self-contained - perfect for USB drives.

Workspace settings are stored in .ferrite/ within the workspace folder.

Settings Panel

  • Appearance: Theme, font family, font size, default view mode
  • Editor: Word wrap, line numbers, minimap, bracket matching, code folding, syntax highlighting, auto-close brackets, line width
  • Files: Auto-save, recent files history

Roadmap

See ROADMAP.md for planned features and known issues.

Contributing

Contributions are welcome! Please see CONTRIBUTING.md for guidelines.

Help Translate

Ferrite is being translated into multiple languages with help from the community.

Translation Status

Help translate Ferrite on Weblate - no coding required!

Quick Start for Contributors
# Fork and clone
git clone https://github.com/YOUR_USERNAME/Ferrite.git
cd Ferrite
# Create a feature branch
git checkout -b feature/your-feature
# Make changes, then verify
cargo fmt
cargo clippy
cargo test
cargo build
# Commit and push
git commit -m "feat: your feature description"
git push origin feature/your-feature

Tech Stack

Built with Rust 1.70+, egui/eframe for GUI, comrak for Markdown parsing, ropey for rope-based text editing, and syntect for syntax highlighting.

Full tech stack
ComponentTechnology
LanguageRust 1.70+
GUI Frameworkegui 0.28 + eframe 0.28
Text Bufferropey 1.6 (rope data structure)
Markdown Parsercomrak 0.22
Syntax Highlightingsyntect 5.1 + two-face 0.5
Git Integrationgit2 0.19
Terminal PTYportable-pty 0.8
Terminal ANSI Parservte 0.13
Encoding Detectionencoding_rs 0.8 + chardetng 0.1
Internationalizationrust-i18n 3 + sys-locale 0.3
CLI Parsingclap 4
File Dialogsrfd 0.14
Clipboardarboard 3
File Watchingnotify 6
Fuzzy Matchingfuzzy-matcher 0.3
HTTP Clientureq 2 (update checker)
Hashingblake3 1.5 (Mermaid caching)
Date/Timechrono 0.4
CSV Parsingcsv 1.3
Color Palettepalette 0.7
Font Enumerationfont-kit 0.14
Allocator (Windows)mimalloc 0.1
Allocator (Unix)tikv-jemallocator 0.6

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

Libraries & Tools

Libraries

Development Tools

  • Claude (Anthropic) - AI assistant that wrote the code
  • Cursor - AI-powered code editor
  • Task Master - AI task management for development workflows

Contributors

Sponsors

SignPath Free code signing on Windows provided by SignPath.io, certificate by SignPath Foundation

If you find Ferrite useful, consider supporting its development.

About

A fast, lightweight text editor for Markdown, JSON, YAML, and TOML files. Built with Rust and egui for a native, responsive experience.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages