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

The code editor built for the AI era

Tiny native binary (~13 MB bare, ~4.7 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. New in v0.1.129: the built-in Password Generator gains an SSH key page beside passwords and passphrases — Ed25519 / ECDSA / RSA, an optional passphrase-encrypted private key, a SHA256 fingerprint, and a save that sets 0600 before it writes — and diagrams are drawn flat, with light palettes, groups, notes, legends and dashed edges. 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 · Password Generator. No plugins to hunt for. Works on first launch.

~13 MB
Bare Binary
238
File Types
82
Language Lexers
2 GB
Max File Size
79
Regression Suites
0
Electron
Download v0.1.129
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.129 →
🔒

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.129 →

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.7 MB .tar.gz

.tar.gz
🐧

Linux ARM64

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

.tar.gz
🍎

macOS Apple Silicon

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

.dmg
🪟

Windows x64

37.8 MB zip · 43.9 MB MSI · 33.0 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.
🔒

Password Generator — passwords, passphrases, SSH keys NEW IN v0.1.129

One tab, three pages on a left rail — Password, Passphrase, SSH key (Alt+1 / Alt+2 / Alt+3). Passwords draw from a shell-safe symbol set; passphrases from a 2,048-word list compiled into the binary (11 bits a word). SSH key makes a real OpenSSH pair — Ed25519, ECDSA P-256 / P-384, RSA 3072 / 4096 — with an optional passphrase encrypted the way ssh-keygen does it, an empty comment by default (no user@host leak), the private key hidden until you ask, and Save that sets 0600 before writing and never overwrites. The bits readout is a real count, not a score. Every draw comes from the OS random source through the Rust core; nothing is stored, sent to an AI backend, or visible to MCP. Offline, in every build including Lite.

🔌

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

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)

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)

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

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)

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, now mapping -.-> and subgraph. Drawn flat, like an engineering diagram: no gradients, no drop shadows, a 1.5 px border and the app’s own font. Two light palettes (paper, slate) join the dark ones, and the new default palette auto follows the app theme. 5 shapes, ~55 hand-drawn icons, labelled + bidirectional arrows, dashed edges (a -.-> b) for the async or best-effort hop, direction LR for a left-to-right layout, group "Label" : a b containers, note cards and a legend box. 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

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

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.

***

Password Generator

Random characters or a passphrase from a built-in 2,048-word list, drawn from the operating system CSPRNG. The bits readout counts how many values your settings can produce, so it drops when you require one character from each set.

Why Notepatra
How Notepatra compares
Editor Size AI Built-in JSON Fixer Diagrams Notes 2 GB Files Linux Windows Mac Free
Notepatra ~13 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.129 LATEST
2026-08-22 · ssh-keygen puts your username and machine name in every key it makes. This one leaves the comment blank. The Password Generator grows a left rail and an SSH key page, every draw now comes from the OS random source, and .npd diagrams are drawn flat, with light palettes, groups, notes, legends and dashed edges. · Lite (default, bare) + Full · Linux · macOS (incl. Apple Silicon) · Windows
New — SSH keys, behind a rail
  • A left rail replaces the two radio buttons — Password, Passphrase and SSH key, each its own page, reachable with Alt+1 / Alt+2 / Alt+3. The menu entry is now Tools → Password Generator — Passwords / Passphrases / SSH keys.
  • Key types — Ed25519 (recommended and the default), ECDSA P-256 and P-384, RSA 3072 and 4096, and RSA 2048 marked legacy. Each entry says in its tooltip when it is the right pick; the honest answer is Ed25519 unless something forces your hand.
  • The comment field is empty by default, and that is the point. ssh-keygen defaults the comment to user@host, which copies your username and your machine's name into every authorized_keys file the key is ever pasted into. Type a label if you want one — work-laptop — but nothing is put there for you.
  • An optional passphrase encrypts the private key with aes256-ctr and bcrypt-pbkdf (16 rounds) — the same construction ssh-keygen writes, so ssh-add and OpenSSH read it directly.
  • The public line and its SHA256 fingerprint are shown immediately; the private key is not. It stays off-screen until you tick Show private key. Copy private key arms the 30-second clipboard wipe; copying the public line does not, because a public key is not a secret.
  • Save private key… creates the file, sets it to 0600, and only then writes the bytes, so the key is never briefly world-readable. It refuses to overwrite an existing file, and writes the .pub companion (0644) beside it.
  • Generation runs off the GUI thread — RSA-4096 measured between 1.6 and 5.9 seconds on the test machine, and the window stays responsive throughout. Ed25519 is effectively instant.
  • Checked against OpenSSH itself. The test suite runs the system ssh-keygen over the generated keys: -y reproduces the same public line, -lf the same fingerprint, and -y -P opens the encrypted key and rejects the wrong passphrase.
Where the randomness comes from — changed
  • Every draw now goes through the OS random source (getrandom on Linux, the platform equivalent elsewhere) via the Rust core. That covers SSH keys and every password and passphrase; QRandomGenerator::system() is now the fallback, not the source.
  • This is a correction, not a boast. Before v0.1.129 the source was Qt's generator, and on x86-64 that means the CPU's RDRAND instruction first — measured at ~7 million draws with zero getrandom syscalls. A reader who assumed "the OS CSPRNG" was reading something else. Now it is what it says. Rejection sampling and the draw-again set guarantee are unchanged, so the bits figure means exactly what it meant before.
  • Cost: about 0.6 MB of binary for the pure-Rust crypto (RustCrypto ssh-key). No new runtime dependency, no download, no network — the SSH page works with the machine offline.
Diagrams (.npd) — flat, lighter, and able to say more
  • Flat rendering. No gradients, no drop shadows: a 1.5 px border, the application's own font, and a tighter grid. It reads like something drawn for a design doc rather than a slide.
  • Light palettes. paper and slate join the existing dark ones, and palette auto is the new default — it follows the app theme, using paper in a light theme and the dark default in a dark one. A per-node colour now renders as a tint on a light ground (soft wash, full-strength border, normal dark text) instead of a solid fill.
  • New grammar: direction LR (or TB, the default) · dashed edges a -.-> b and a <.-> b for the async, optional or best-effort hop · group "Edge tier" : cdn api draws a labelled container behind those nodes · note api "Rate-limited to 100 rps" pins a card beside one · legend dashed "async" and legend #cc785c "hot path" build a legend box, which appears only when you write at least one legend line.
  • Mermaid import now maps -.-> to a dashed edge and subgraph … end to a group.
Regressions and known issues — read before upgrading
  • Existing .npd files without a palette line will look different. They now resolve to palette auto, so on a light theme they render light instead of dark. Pin the old look by adding an explicit palette default (or any named dark palette) to the file.
  • group, note, legend, direction and layout are now reserved words. A file that used one of them as a node id needs that id renamed.
  • Windows does not get the 0600 permission. The chmod is a POSIX call and is skipped there; check and tighten the file's ACL yourself after saving a private key.
  • RSA-4096 can take several seconds (1.6–5.9 s measured). The button shows Generating… and the UI stays responsive, but it is not instant. Ed25519 is.
  • The clipboard caveat still applies. The 30-second wipe removes the value only if the clipboard still holds it — it cannot reach into a clipboard-history tool, a manager that has already stored the entry, or another machine's shared clipboard.
  • Notes are placed to the right of their node (below it when direction LR), and a long note widens that row. Keep note text short, or expect the layout to spread.
  • Mermaid bare ids inside a subgraph are not grouped yet — a node that appears in the block only as a naked id, with no shape and no edge, is imported but left outside the group.
  • RUSTSEC-2023-0071 stands against rsa 0.9.10, which ssh-key 0.6.7 pulls in for the RSA key types. It is a timing sidechannel in RSA private-key operations — decryption and signing — with no fixed crate release to move to. Key generation is all Notepatra asks of it, and Ed25519 and ECDSA use different crates entirely, so it is carried as a documented ignore in rust-core/.cargo/audit.toml. One more reason the default is Ed25519.
Verification
  • test_passwordgen 67 · test_passwordgen_panel 99 · test_npd_parser 117 · test_mermaid_import 44 · test_diagram_view 19 · 175 Rust tests. Full offscreen ctest is 79/79 green.
v0.1.128
2026-08-20 · Most password meters score how complicated the result looks. This one reports how many values it could have produced. The built-in Password Generator arrives — random characters or a 2,048-word passphrase, offline, in every build including Lite. · 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. ~13 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.129: 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 ~13 MB (13.4 MB on Linux x64) across every platform. v0.1.129 download sizes: 4.7 MB Linux x64 tar.gz · 4.7 MB Linux ARM64 tar.gz · 28.0 MB macOS DMG · 43.9 MB Windows MSI / 33.0 MB NSIS / 37.8 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 (~13 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.129 — 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, ~13 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 (~13 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