OrPAD is a local-first workspace for editing and previewing text-based artifacts. It brings Markdown, structured data, diagrams, configuration, source code, logs, and plain text into one desktop or browser workspace.
Document parsing, editing, conversion, validation, and preview rendering happen on the device. OrPAD does not require an account and does not send documents to a content-processing service.
Open OrPAD Web. Chromium-based browsers provide the fullest experience through the File System Access API, including folder browsing and read/write handles for the current page. Browser folder handles are not claimed as persistent across reloads: reopen the folder when the browser asks. Firefox and Safari can open individual files and save through browser downloads; folder-only actions show a support message instead of silently failing.
The web app is installable as a PWA and its application shell is cached for offline launch. A file can also be opened from an explicit HTTPS source:
https://sillytoolvalley.github.io/OrPAD/?github=nodejs/node/blob/main/README.md
https://sillytoolvalley.github.io/OrPAD/?gist=<gist_id>
https://sillytoolvalley.github.io/OrPAD/?src=https://example.com/document.md
URL imports are opt-in network actions, available from Home as Open from URL…. Known raw-content hosts can be opened directly and other initial hosts require confirmation. An untrusted cross-origin redirect response is rejected (the browser may already have followed the redirect as part of its fetch). Imports use a 20-second timeout and a 10 MiB limit; Gists are also capped at 20 files and 10 MiB aggregate content. Imported content opens as an unsaved local tab. The Share action can instead put a compressed snapshot in the URL fragment, which is not sent to the server in an HTTP request.
Download the current installer from GitHub Releases.
The desktop app adds native file and folder pickers, OS file associations, workspace file watching, recovery snapshots, reveal-in-file-manager actions, an integrated terminal, and signed update installation.
- Windows: Windows 10/11 x64; use the NSIS
.exeinstaller. - macOS: macOS 11 or newer; use the universal
.dmg.
The macOS build is not currently signed with an Apple Developer ID. If Gatekeeper blocks the first launch, approve it with System Settings > Privacy & Security > Open Anyway. Advanced users may clear quarantine from a trusted download:
xattr -cr /Applications/OrPAD.app
open /Applications/OrPAD.appOrPAD keeps source text editable while providing format-aware tools and previews. Unknown non-binary text files fall back to the code/text editor. Desktop text artifacts are limited to 64 MiB so a mistaken binary or oversized file cannot exhaust the main process.
| Artifact | Editing and preview support |
|---|---|
Markdown (.md, .markdown, .mkd, .mdx) |
Split preview, GitHub Flavored Markdown, KaTeX math, Mermaid blocks, syntax-highlighted code, wiki links, and sanitized preview rendering |
Mermaid (.mmd) |
Live diagram preview alongside source |
| JSON | Editable tree, source view, JSONPath, schema validation, diff, repair, and conversion |
| JSON Lines / NDJSON | Read-only record grid plus source editing; invalid or blank interior records pause structure view without rewriting source |
| YAML | Read-only structured preview, source editing, reformatting, key sorting, and JSON conversion |
| TOML | Read-only structured preview with source editing |
| CSV / TSV | Spreadsheet grid, sorting, filtering, column operations, and source editing |
| XML | Tree inspection, XPath search, and source editing |
| HTML | Sandboxed, sanitized preview with remote subresources blocked, outline, source editing, and Markdown export |
INI / conf / properties / .env |
Key-value or structured inspection with source editing |
| Logs and plain text | Searchable source editor and text tools |
| Source code and stylesheets | CodeMirror editing with language-aware highlighting and folding |
Common source extensions include JavaScript/TypeScript, CSS preprocessors, Python, Java, C/C++, C#, Go, Rust, PHP, Ruby, Swift, Kotlin, Dart, shell and PowerShell scripts, SQL, Lua, R, Perl, Vue, Svelte, Protocol Buffers, and diff or patch files.
- Multi-tab editing with reorder, pin, middle-click close, and tab cycling
- Per-tab Source, Split, and Preview layouts, limited to modes the format actually supports
- Desktop workspace session restore for clean tabs, pinning, order, selection, scrolling, expanded folders, and view modes
- Recent desktop workspaces and artifacts with main-owned reopen authority
- Bidirectional editor/preview scroll synchronization where supported
- Preview search with live highlighting, case matching, counts, navigation, and searchable sandboxed HTML
- Per-format toolbars for formatting, queries, validation, conversion, and export
- Workspace file tree with collision-safe create and rename, protected root operations, Trash-aware delete, and external-change refresh
- Guarded saves that detect stale disk revisions before overwriting external changes
- Cross-file text search with regex, case, and extension filters
- Table of contents for headings, structured keys, elements, and columns
- Markdown wiki-link completion, resolution, and backlinks
- Clipboard image paste into a sibling
assets/directory - Bounded desktop recovery snapshots that never turn stored paths into filesystem authority
- Drag-and-drop opening and Markdown document templates
- 15 built-in themes, custom themes, UI scaling, and 30 complete interface locale packs guarded by parity checks
- CodeMirror commands for Vim mode, a minimap, Zen mode, multiple cursors, line movement, comment toggling, and folding
The desktop terminal is a general-purpose, user-operated tool. It provides an interactive shell and a command runner; OrPAD does not prepare or start commands on its own. Starting outside the approved workspace requires a one-time confirmation. A terminal has the same effective authority as the user, so review commands before running them.
For a Git workspace, OrPAD can show the current branch, working-tree badges, and
editor gutter changes. User-invoked commands can refresh status, switch a local
branch, inspect a diff against HEAD, or revert the current file. Commit, push,
pull, fetch, credentials, and conflict resolution are not provided.
New from Template creates local Markdown documents for product requirements, release checklists, package submissions, UX reviews, handovers, specification sheets, task lists, architecture decisions, session logs, and verification evidence. TEMPLATE_CATALOG.md records the maintained user-facing set.
Use Cmd instead of Ctrl on macOS where the platform normally does so.
| Shortcut | Action |
|---|---|
| Ctrl+N | New file |
| Ctrl+O | Open file |
| Ctrl+S | Save |
| Ctrl+Shift+S | Save As |
| Ctrl+W | Close tab |
| Ctrl+Tab / Ctrl+Shift+Tab | Next / previous tab |
| Ctrl+B / Ctrl+I | Bold / italic in Markdown |
| Ctrl+K | Insert a Markdown link |
| Ctrl+K, Z | Toggle Zen Mode |
| Alt+Up / Alt+Down | Move line up / down |
| Shift+Alt+Up / Shift+Alt+Down | Copy line up / down |
| Ctrl+/ | Toggle line comment |
| Ctrl+Shift+/ | Toggle block comment |
| Ctrl+Alt+Up / Ctrl+Alt+Down | Add cursor above / below |
| Ctrl+D | Select next occurrence |
| Ctrl+Shift+L | Select all matching occurrences |
| Ctrl+Shift+[ / Ctrl+Shift+] | Fold / unfold current block |
| Ctrl+T | Toggle table of contents |
| Ctrl+Shift+E | Open the Files sidebar |
| Ctrl+Shift+F | Search the workspace |
| Ctrl+Shift+P | Open the command palette |
Normal file editing and preview generation are local-only. Network access is limited to actions or build configurations with a clear network purpose:
- an explicit HTTPS document, schema, or Gist import in the web app;
- opening a web link in the system browser;
- a desktop update check or user-approved installer download;
- optional Plausible usage analytics when a build supplies a domain; and
- optional crash reporting when a build supplies a Sentry DSN.
Analytics and renderer crash reporting can be disabled with the local preferences documented in SECURITY.md. Main-process crash reporting is controlled by the desktop build configuration. Reports are not intended to attach file contents, filenames, or document paths.
Requires Node.js 20 or newer.
npm install
npm start # build the renderer and start Electron
npm run build:renderer
npm run build:web:min # write the deployable web app to docs/
npm run test:electron
npm run test:web
npm run size
npm run dist:win
npm run dist:mac # run on macOSdocs/, dist/, and release/ are generated output. See
tests/README.md for focused Playwright commands.
Electron, CodeMirror 6, marked, highlight.js, KaTeX, Mermaid, Papa Parse, js-yaml, smol-toml, Ajv, DOMPurify, jsonrepair, Turndown, isomorphic-git, and esbuild.
See SECURITY.md for the desktop sandbox, filesystem authority, URL handling, terminal and Git boundaries, telemetry, and updater verification.
MIT