Download v0.1.127 ↓
v0.1.127 · Now Available · MCP server for AI assistants · Linux · Windows · macOS

The code editor built for the AI era

Tiny native binary (~12 MB bare, ~4.4 MB compressed on Linux). C++ and Rust. 238 file types · 82 language lexers. JSON / HTML / SQL fixers — regex first, local AI as fallback. Local AI by default; cloud LLMs opt-in. Or pick the Local AI build for a binary that physically refuses to talk to public endpoints. MCP: the MCP server ships a prebuilt signed Windows sidecar and a one-click Claude Desktop bundle — its 49 tools (Git, read-only SQL, saved-connection queries, charts, Noter notes) connect Claude, Codex, or any MCP client straight to your editor.

$ curl -fsSL https://notepatra.org/install.sh | sh
$ curl -fsSL https://notepatra.org/install.sh | sh
PS> irm https://notepatra.org/install.ps1 | iex
Download Binaries MCP for AI assistants View on GitHub
Notepatra Welcome tab — Dark theme
Welcome tab — 10-icon toolbar, hero card, recent-files placeholder
Notepatra editor — C++ source with 9-hue canonical syntax highlighting
Editor — C++ source, 9-hue canonical palette

Designed for people who write code.

9-hue canonical color palette across 82 lexers. Native Qt5 widgets. No Electron, no telemetry.

Memory-mapped at every scale.

Rust memory-mapped loading avoids a double read on open; the file is then held in the editor buffer (peaks at roughly 3x file size in RAM during load (~1-2x once loaded)). Files up to ~1.86 GB load fully; larger files open truncated and read-only. 82 language lexers, 238 file types. Native execution — not Electron.

🛡

Private by design.

Local-first AI. Default backends are Ollama / llama.cpp on your own machine. No telemetry, no analytics, no mandatory API key. Cloud LLMs (OpenAI / OpenRouter / Anthropic-via-proxy / Gemini-via-OpenRouter) are opt-in via the OpenAI-compatible backend — pick your runner in Preferences → AI. Your code stays on your machine unless you opt into a cloud backend or click "git push".

Built-in tools.

AI · Compare with word-level diff · Git · Terminal · JSON/HTML/SQL formatters · REST client · Macros. No plugins to hunt for. Works on first launch.

~12 MB
Bare Binary
238
File Types
82
Language Lexers
2 GB
Max File Size
76
Regression Suites
0
Electron
Download v0.1.127
One-command install or direct download
Auto-detecting installer scripts, or pick your platform from GitHub Releases. No telemetry. No tracking. Just a binary.
🌐

Notepatra

DEFAULT

Local AI out of the box · cloud LLMs opt-in. Talk to Ollama or llama.cpp locally by default, or any OpenAI-compatible server via the llama.cpp entry's user-configured URL. Paste an OpenAI / Anthropic / OpenRouter / Mistral / Azure URL in Settings if you want cloud — fully optional, no key required for local use.

Pick this if you want maximum flexibility — local first, with cloud available when you need a flagship model on a hard problem. Most users.

.tar.gz .deb .rpm .AppImage .dmg .msi .exe .zip
Get Notepatra v0.1.127 →
🔒

Notepatra Local AI

CLOUD-FREE

Physically cannot talk to any public LLM endpoint. api.openai.com · api.anthropic.com · openrouter.ai · api.mistral.ai · api.groq.com · everything else — refused at the network layer. Ollama / llama.cpp / LAN-hosted LLMs continue to work.

For regulated industries (finance, healthcare, legal, gov), data-sovereignty regions (EU GDPR, India RBI, China), air-gapped engineering networks. Built via -DNOTEPATRA_NO_CLOUD=ON — auditable, no setting to flip.

notepatra-local-ai_*_amd64.deb notepatra-local-ai_*_arm64.deb notepatra-local-ai-*.msi
Get Notepatra Local AI v0.1.127 →

Both flavors are local-first by default. The regular build adds optional cloud LLM URLs you paste in Settings; the Local AI build refuses them at the network layer for auditable compliance. notepatra --version tells you which flavor you have installed.

🐧

Linux x64

Binary · 4.4 MB .tar.gz

.tar.gz
🐧

Linux ARM64

aarch64 · Raspberry Pi 5 · 4.1 MB .tar.gz

.tar.gz
🍎

macOS Apple Silicon

M1 / M2 / M3 / M4 · 27.7 MB .dmg

.dmg
🪟

Windows x64

37.4 MB zip · 43.0 MB MSI · 32.8 MB setup.exe

.zip / .msi / .exe
💼 Portable .zip = most-downloaded format. Extract anywhere — USB stick, locked-down work laptop, cloud sync folder. Zero registry, zero admin. Ships with two one-click helpers: register-associations.bat adds Notepatra to Windows "Open with" for 27 file extensions (.txt .md .json .py .cpp .js .rs .go .sql .html .css and more), unregister-associations.bat undoes it. HKCU-only — never asks for admin.
See it in action
Welcome → editor → search.

Welcome screen · C++ source with full syntax highlighting · Project Search streaming results incrementally. Captured from running Notepatra on Linux + Windows.

Notepatra tour — Welcome screen, then editor.cpp source with syntax highlighting, then Project Search with live streaming results
Real capture — not a mockup. More on GitHub →
Your AI. Your machine. Your choice.

Notepatra's AI runs locally by default — pick Ollama, llama.cpp (loads any GGUF), or any OpenAI-compatible server (any OpenAI-compatible server). When you'd rather use a frontier model, four cloud backends are wired in too: Ollama Cloud, OpenRouter, OpenAI, Azure OpenAI — six total backends in the dropdown alongside the local Ollama + llama.cpp entries. No mandatory API key. No subscription. No telemetry.

When the regex fixer can't repair your broken JSON — the AI can. Hybrid approach: speed of regex, intelligence of AI.

Explain Code Find Bugs Refactor Write Tests Fix JSON Fix HTML Fix Brackets Add Comments Generate Docs Optimize Translate Py↔JS
Supported backends — 6 in the dropdown, plus OpenAI-compat
🏠 Local (no account, no key)
Ollama
localhost:11434 · default
llama.cpp (GGUF)
localhost:8080 · llama-server
Cloud (API key)
100+ models — Claude, GPT, Gemini, Llama, Mistral, DeepSeek, Qwen, Grok, Kimi
gpt-oss:120b · qwen3-coder:480b · deepseek-v3.1:671b
OpenAI
ChatGPT API · GPT-4o, GPT-5, o-series
enterprise Azure resource + deployment
Plus any OpenAI-compatible server — point the llama.cpp entry at any URL/port via Settings → Preferences → AI. Notepatra speaks the standard OpenAI /v1/chat/completions protocol.
// Broken JSON input
{users: [{'id': 1, name: 'Alice',}

// Notepatra fixes it instantly:
// ✓ single quotes → double quotes
// ✓ unquoted keys quoted
// ✓ trailing commas removed
// ✓ missing braces added

{
  "users": [
    {
      "id": 1,
      "name": "Alice"
    }
  ]
}|
Features
Everything you need. Nothing you don't.
Built on QScintilla — a battle-tested Scintilla-based editor engine. Hot-path file I/O and search use Rust for memory safety on untrusted input.
🔌

MCP — your editor, readable by your AI 49 TOOLS · v0.1.127

A built-in Model Context Protocol server (notepatra-mcp) connects the assistants you already use — Claude Desktop, Claude Code, OpenAI Codex, the OpenAI Agents SDK, and any spec-compliant MCP client — to the running editor. 49 tools in three tiers: read (tabs, selection, search, Noter notes, reminders, read-only Git and SQL, diagram source, saved-connection list/query/tables), act (open, compare, format, navigate, select range, open notes, create diagram, open Noter panel, open Data Analyst, render chart), and write (edit, save, create/append notes, set reminders, replace diagram source, export diagrams, export query results, export chart) — where every write shows an Approve / Deny card inside the editor and does nothing until you click Approve (auto-deny after 120 s, no headless bypass). Local socket + stdio only — nothing leaves your machine. Read the MCP docs →

🤖

AI Assistant (Ctrl+Shift+A) NEW

Local-first AI. Two local dropdown backends: Ollama and llama.cpp (any GGUF). The llama.cpp entry accepts a user-configured URL, so it can reach anything that speaks OpenAI's /v1/chat/completions — any OpenAI-compatible server (those are separate programs you install, not bundled). Explain · Find Bugs · Refactor · Write Tests · Fix JSON · Add Comments · Optimize · Translate. No mandatory API key, no telemetry. Default is local — your code stays on your machine. Cloud LLMs (OpenAI, OpenRouter, Ollama Cloud, Azure OpenAI) are opt-in from the dropdown.

🔎

Project Search (Ctrl+Shift+G) NEW

Recursive search across file names AND file contents, project-wide. Streams line by line so memory use stays flat regardless of file size — tested on 2 GB logs. Exact line:col coordinates, double-click a match to jump the caret to the exact character. Any text-based language. Skips binary files with a NUL-byte heuristic.

🗒️

Noter — meeting notes NEW

A local-first, two-pane notes workspace — notes list on the left, editor on the right. No accounts, no bots; notes live in plain files under ~/Documents/Notepatra/Noter/. AI Extract (Ctrl+Alt+E) pulls a summary plus action items, decisions, questions, and risks. Set reminders on any note — or straight from Extract — and they're all collected in a central Reminders list (Overdue · Today · This week · Later) with desktop notifications at the due time while Notepatra is running.

📐

Diagram tool (.npd) NEW

Flow charts, ER diagrams and system designs from a tiny text DSL — the .npd source is the truth, the canvas is a live projection. Describe it in plain English and a local model writes it (review before it touches the canvas), start from a template, or type it yourself — Import Mermaid too. 5 shapes, ~55 hand-drawn icons, labelled + bidirectional arrows, 4 palettes (+ a default fallback), infinite pan/zoom. Export to PNG / JPEG / PDF on every build (plus SVG / HTML / WebP where your Qt supports them). Opens from the toolbar next to Noter. Renders natively in the default binary — every platform, no WebEngine.

🔍

AI Interaction Log NEW

Audit exactly what your AI did — transparency, not just a promise. Every request and response to any backend — local (Ollama / llama.cpp) or cloud (OpenRouter / OpenAI / Azure / Ollama Cloud), including Noter's Extract — is recorded to a local SQLite log you can open and read: timestamp, backend, model, full prompt + response, tokens, latency. Entries auto-prune after 7 days; a credential scrubber masks API keys / tokens / PEM keys before writing. The viewer has filters, Export JSON, and Prune-now. On by default with one-click opt-out in Settings. Zero network egress — purely local. Open from Features → AI Interaction Log…

Rust-Powered Core

Memory-mapped file I/O. Aho-Corasick search. Myers diff. Tested on 2 GB files. The heavy lifting runs in compiled Rust — no garbage collector, no runtime.

🔄

Safe auto-update NEW

Click Download in the in-app "update available" dialog and the right artifact for your OS + architecture is fetched, SHA-256 verified against the release's SHA256SUMS, and handed to the native installer (MSI on Windows, DMG in Finder on macOS, file manager on Linux). Your current install is never touched by the updater — the OS installer does the swap under its own transactional rollback. Checksum mismatch, cancelled download, network drop, disk full — any failure leaves the running app exactly as it was.

📅

Insert Date / Time

Edit → Insert, or Ctrl+F5. Five formats: 2026-04-20 13:45, 2026-04-20, April 20, 2026, 13:45:09, ISO-8601. Saves keystrokes in logs, changelogs, meeting notes.

🖱

Clickable status bar

Click Language, Encoding, or EOL indicators in the status bar to pop the matching change-menu right where you clicked.

📂

Clean menu organization

Three clear menus — Tools (everything built-in: AI, Terminal, Compare, JSON/HTML/SQL, Git, REST, Bracket), Plugins (third-party extensions YOU add), Utilities (Hash, Measurement). No more guessing where a feature lives.

🔀

Compare with word-level diff

Side-by-side Scintilla diff. Green for added, red for deleted, amber for changed — with LCS-based word-level intra-line highlighting so you see the exact tokens that changed. Dark mode aware. Prev/Next navigation. Ignore whitespace, case, empty lines.

📁

Session Persistence

Close Notepatra, reopen tomorrow — same files, same cursors, same window size. Crash recovery saves unsaved work every 5 seconds by default (interval configurable).

👁

File Change Detection

Someone edits your file externally? Notepatra asks: reload or keep yours. Git gutter shows changed lines in green/yellow/red.

🎙

Macro Recording

Record keystrokes (Ctrl+Shift+M), playback (Ctrl+Shift+P), run multiple times, save to .macro files, replay tomorrow.

📑

238 File Types

82 language lexers — Python, Rust, Go, C/C++, Java, JS/TS, SQL, HTML, CSS, JSON, YAML, Markdown, Bash, Fortran, Verilog, MATLAB, LaTeX and more.

🎨

3 Themes + Color Tags

Light, Dark, Monokai. Color-tag any tab (7 colors + custom). Pastel green current line, double-click word highlight in orange.

🧩

Plugin System

Drop a .so/.dll/.dylib in the plugins folder. Simple C API — export 2 functions to create a plugin. JSON, HTML, SQL, Bracket tools all built in.

🔭

Find & Replace

In-document find / replace / extended mode (\n, \t, \xNN) / regex. Ctrl+F to find, Ctrl+H to replace. For searching across multiple files, use Project Search (Ctrl+Shift+G) at the top of this grid instead.

Built-in Plugins
Batteries included
Each plugin opens in its own tab. Format, Fix + Format, or AI Fix. All with Ollama status indicator.
{ }

JSON Tools

Format, Minify, Fix+Format, AI Fix. Handles missing braces, trailing commas, unquoted keys, single quotes.

+ AI Fix
</>

HTML Tools

Format with proper indentation. Fix unclosed tags. Minify. AI repair for broken nesting.

+ AI Fix
( )

Bracket Tools

Check all brackets with line numbers. Auto-fix missing ), ], }. Detects begin/end mismatches.

+ AI Fix
SQL

SQL Formatter

UPPERCASE or lowercase keywords. Configurable indentation. T-SQL, PL/SQL, MySQL, PostgreSQL.

Compare / Diff

Side-by-side Scintilla editors. +/- markers. Navigate between diffs. Ignore whitespace/case.

Git Integration

Changed files panel. Branch display. Push/Pull. Git gutter margins. Open on GitHub.

▸_

Built-in Terminal

Real bash/zsh/cmd as a tab. cd works. Run any command without leaving the editor.

🌐

REST Client

Send HTTP requests, see responses with pretty JSON, all in an editor tab — no external client needed for quick checks.

0xFF

Hex Editor

Color-coded hex dump. Offset, hex bytes, ASCII columns. View any binary file.

Why Notepatra
How Notepatra compares
Editor Size AI Built-in JSON Fixer Diagrams Notes 2 GB Files Linux Windows Mac Free
Notepatra ~12 MB
Notepad++ 9 MB Plugin
VS Code 300 MB Extension Extension Extension Extension
Sublime Text 30 MB $99
Kate 40 MB
Vim 3 MB Plugin

Notepad++ also opens large files; the ✗ marks "out-of-the-box, no plugins."

Security
Verifiable. Local. Hands off your data.
No analytics, no telemetry. Network traffic only on explicit actions — AI request, git push/pull, REST client, update check. Every release is checksummed and cryptographically signed. Verify before you run.
🔐

SHA-256 checksums

Every release ships a SHA256SUMS file. install.sh and install.ps1 verify it automatically and refuse to install on mismatch. Latest checksums →

✍️

Cosign signatures (Sigstore)

Every artifact is signed via keyless OIDC signing tied to the official GitHub Actions workflow. The cert is recorded in the public Rekor transparency log — no trust in any single key.

📜

SLSA build provenance

Every binary carries a cryptographic attestation linking it to the exact git commit + workflow file + runner environment that built it. Verify with gh attestation verify.

🦀

Rust safety + cargo audit

Hot-path file I/O and search are written in Rust for memory safety on untrusted input; QScintilla (C++) handles lexers and editor rendering. CI runs cargo audit on every build to flag vulnerable dependencies.

🚫

Zero telemetry

No analytics, no error reporting, no phone-home. The only outbound connections are: localhost Ollama (when you use AI), git push/pull (when you click), and HTTP requests you explicitly send via the REST tab. Verifiable with strace.

📬

Responsible disclosure

Found a vulnerability? Use private vulnerability reporting. Full policy in SECURITY.md and /.well-known/security.txt.

Version History
Releases
Every release of Notepatra, from the very first one — transparent, append-only, no surprises. Note: v0.1.4 / v0.1.6 / v0.1.11 tags exist in git but were never published as GitHub Releases — their content was rolled forward into v0.1.5, v0.1.7, and v0.1.12 respectively to reduce release churn.
v0.1.127 LATEST
2026-08-07 · Five doors refused a private key. The sixth handed it over in chunks. Retesting v0.1.126 found select_range + get_selection reading credential files — the third release running with the same defect shape. This one stops adding guards to a hand-maintained list. · Lite (default, bare) + Full · Linux · macOS (incl. Apple Silicon) · Windows
Security — the sixth door, and why there kept being another
  • select_range + get_selection returned credential-file contents that open_file, read_tab, find_in_tab, search_project and resources/read all correctly refused — so a private key was readable one selection at a time. get_selection had been exempted on the reasoning that a selection is human-made, so reading it back implies consent. select_range lets the client choose the range, which makes that reasoning false. apply_edit was a quieter form of the same thing: it reads the buffer as a match oracle, so "no match" versus a card naming the match reports what a file contains, one probe at a time, without returning any text.
  • The fix is structural, not a sixth guard. v0.1.125 unified two hand-maintained copies of the deny list; v0.1.126 added the check to four verbs; the retest found a fifth and sixth. Every fix was correct and none converged, because what kept going stale was the enumeration — every new verb had to remember to ask, and the point of a guard is that it does not depend on remembering. Buffer text now leaves the editor through exactly one accessor that refuses before returning, select_range will not even stage a selection over a credential file, and a test lints the bridge source and fails the build on any direct buffer read that bypasses the accessor.
Fixed — a marker that lied and a schema that lied
  • The truncation marker claimed a 5 MB cap whatever cap applied. Ask read_tab for max_bytes: 100 and the text still ended [truncated at 5 MB] — a constant from before the argument existed. It reads [truncated: showing 100 of 2688894 characters] now. The v0.1.126 notes also said read_tab "always reports truncated and total_chars"; that holds for the editor-to-sidecar wire and not for the tool result, which is plain text. The docs are corrected and the old entry left as shipped.
  • select_range advertised tab_id in its schema and then rejected it with -32602, so a client generating calls from the published contract failed — one verb out of thirteen slipped the v0.1.126 sweep, the one written across multiple lines. A test now walks the whole tool list and asserts every advertised tab_id is genuinely accepted. list_open_tabs also published the field as id while every verb takes tab_id; both names ship for one release.
Verification
  • 98 C++ suites and 66 sidecar protocol tests, across both Cargo feature sets.
  • Every fix red-state verified by restoring the pre-fix code. The two security tests were confirmed to fail independently — the source lint flags a raw buffer read even when nobody has thought to test the verb it appears in, which is the property that makes it worth having.
v0.1.126
2026-08-07 · v0.1.126 taught search_project to skip credential files. It never told open_file or read_tab. A deep retest confirmed all four v0.1.126 Windows fixes on real hardware and found nine more defects underneath. No new editor features; every change is a fix to the MCP surface. · Lite (default, bare) + Full · Linux · macOS (incl. Apple Silicon) · Windows
v0.1.125
2026-08-07 · A one-word MCP search could return the contents of your SSH private key. Fixed, along with three other defects found by testing the MCP server on Windows — and the Windows binary finally reports its real version after 124 releases claiming 0.1.0. No new editor features; every change is a fix. · Lite (default, bare) + Full · Linux · macOS (incl. Apple Silicon) · Windows
v0.1.124
2026-07-28 · Invisible characters are now visible — 527 of them, where Notepad++ draws 113. A file containing a zero-width space used to look exactly like a file without one. View → Show Symbol is rebuilt to Notepad++'s eight-item structure, plus a toggle for the 414 codepoints its tables don't cover. Two Find/Replace bugs that were quietly destroying text are fixed. · Lite (default, bare) + Full · Linux · macOS (incl. Apple Silicon) · Windows
🎉 100 releases
v0.1.100 — one hundred shipped iterations, each one local-first, no telemetry, no account. Thank you for being here.
See every release on GitHub
Full version history from v0.1.0 onwards — release notes, signed artifacts, SHA-256 checksums, cosign signatures, SLSA build provenance.
github.com/singhpratech/notepatra/releases →

v0.2.0 — next milestone

LSP support · Plugin ecosystem · More outreach · Community feedback cycle

FAQ
Frequently asked questions
Quick answers. For deeper docs see the README and SECURITY.md.

What is Notepatra?

Notepatra is a native Qt5 + QScintilla code editor with an original C++17/Rust core for hot paths (memory-mapped I/O, Aho-Corasick search, Myers diff, formatters). Runs on Linux x64 / ARM64, macOS Apple Silicon, and Windows x64 from a single codebase. ~12 MB bare executable, no Electron runtime, no telemetry, no mandatory account. Local-first AI is built in: pick from Ollama, llama.cpp, OpenRouter, OpenAI, Azure OpenAI, or Ollama Cloud. As of v0.1.127: 238 file types · 82 language lexers, a Data Analyst mode that works out of the box on CSV files and an in-memory SQLite engine (the Full download bundles the DuckDB v1.1.3 engine on every platform), agentic Coding Mode with read / list / search / write / apply_diff tools, Cursor-style Composer + Ctrl+I inline edit, multi-cursor, AI-driven git tools (read-only: status / diff / log / branch / show).

Is it really free? What's the catch?

No catch. GPL-3.0, no telemetry, no analytics, no API key, no enterprise tier, no subscription. Source on GitHub. The "catch" is that it's a one-person open-source project — no SLA, no warranty, no support contract. See the disclaimer in the footer.

Can I install Notepatra at my company?

Yes — same license posture as Notepad++, GIMP, vim, and Linux (all GPL). Notepatra is a standalone end-user editor: under the GPL, using Notepatra as an editor does not place obligations on the files you edit (see the FSF GPL FAQ), and it doesn't phone home. For IT, legal, or procurement teams reviewing the install: see the For Enterprise page — plain-English explainer, supply-chain provenance (SHA-256 + cosign + SLSA), and a copy-paste block for your software-acceptance request.

How big is the binary?

The bare executable is ~12 MB (12.6 MB on Linux x64) across every platform. v0.1.127 download sizes: 4.4 MB Linux x64 tar.gz · 4.1 MB Linux ARM64 tar.gz · 27.7 MB macOS DMG · 43.0 MB Windows MSI / 32.8 MB NSIS / 37.4 MB portable zip. Installed on Windows the on-disk footprint grows to ~75-85 MB because the MSI extracts bundled Qt5 + QScintilla DLLs out of the compressed payload — normal for every Qt-based installer. Linux stays tiny (~12 MB on disk) because Qt is a system package; macOS and Windows bundle Qt + QScintilla DLLs for portability.

Does my code go to the cloud?

By default no — Notepatra is local-first. Pick a local AI backend (Ollama on localhost:11434 or llama.cpp's llama-server on localhost:8080) and nothing leaves your machine. The llama.cpp entry also accepts a user-configured URL, so you can route it to any OpenAI-compatible server you've installed (any OpenAI-compatible server — those are separate programs you install and license). Cloud backends (OpenRouter, OpenAI, Azure OpenAI, Ollama Cloud) are opt-in from the AI dock dropdown. Even when you opt in, the v0.1.55 credential scrubber strips API keys / tokens / private-key blocks from any code or chat content before it leaves the machine, and the privacy "Share file with AI" toggle (default OFF) controls whether the active editor file is even visible to the model. Verifiable with strace.

What languages does Notepatra highlight?

238 file types via 82 language lexers as of v0.1.127 — Python, JavaScript, TypeScript, C, C++, C#, Java, Kotlin, Rust, Go, Dart, Solidity, Zig, Vala, Hack, Julia, R, Protobuf, F#, HCL/Terraform, Thrift, GraphQL, GDScript, Nim, Cython, Mojo, Crystal, Elixir, Scala, Groovy, Apex, HTML, CSS, SQL (6 dialect presets), JSON, JSON5, YAML, TOML, Markdown, Bash, Fish, Nushell, Ruby, Perl, Lua, Fortran, Verilog, VHDL, MATLAB, LaTeX, BibTeX, Jinja, Liquid, Twig, Dockerfile, DotEnv, Gitignore, Pascal, CMake, Makefile, and more. Each lexer ships with comment / uncomment / block-comment syntax (Ctrl+Q / Ctrl+Shift+Q) and proper file-extension routing.

What file encodings are supported?

UTF-8 (with or without BOM), UTF-16 LE/BE, and UTF-32 LE/BE are auto-detected — including BOM-less UTF-16 from PowerShell and SQL Server exports, sniffed via null-byte patterns — with Latin-1 / Windows-1252 as the legacy fallback. BOMs survive a save round-trip, and the Encoding menu can reinterpret bytes or convert the save format.

How do I verify a download is genuine?

Every release ships with SHA-256 checksums, cosign signatures (Sigstore + Rekor), and SLSA build provenance. The install scripts verify SHA-256 automatically and refuse to install on mismatch. Full guide in SECURITY.md.

Will it open big files?

Yes — large files load fully. The Rust core uses memory-mapped loading (mmap2), which avoids a double read on open; the file is then held in the editor buffer (peaks at roughly 3x file size in RAM during load (~1-2x once loaded)). Files up to ~1.86 GB load fully; larger files open truncated and read-only. Files from 50 MB up to ~1.86 GB automatically disable lexer/syntax highlighting, auto-complete, word wrap, and indent guides to keep things snappy, but stay fully editable.

Can I write plugins?

Yes. Drop a .so/.dylib/.dll in ~/.config/notepatra/plugins/. The plugin C API is two functions: notepatra_plugin_name() and notepatra_plugin_run(text, len). Example in the README.

Who built it and why?

Built by Prateek Singh, constructed with Claude. The short version: Linux and macOS deserved a first-class native code editor, and 2026 deserved one with AI built in — local-first by default, cross-platform from one codebase, ~12 MB bare.

The Story

I'm Prateek Singh. A developer who spent years on Linux wanting a small, fast, free native code editor — and finding only Wine hacks or bloated Electron editors eating 500 MB of RAM to show a text file.

Every text editor told me to pick two of three: fast, powerful, native. Vim is fast and native but cryptic. Modern Electron editors are powerful but heavy. The truly tiny native ones either don't have AI or don't run cross-platform.

So I built Notepatra. Not a port. Not a wrapper. Something new — for everyone. I asked: what would a small native code editor look like if it was built today, in 2026, when AI is part of every developer's workflow, and ran natively on Linux + macOS + Windows from one codebase?

The answer: a tiny native binary (~12 MB bare) with a Rust-powered core, Scintilla editing engine, and local-first AI integration (cloud backends optional). No telemetry. No subscription. No mandatory API key — on Linux, macOS, and Windows.

Ready to try?

One command. No installer. No bloat. Just an editor that works.

Get Notepatra Star on GitHub