curt-openwith
Double-click a .curt file on Windows, macOS, or Linux and it opens in
the offline Curt Viewer — a browser page that renders the conversation
locally. No server, no network; installs only under your user account.
- Repo: github.com/JordanNewell/curt-openwith
- Install: Scoop (Windows), Homebrew (macOS/Linux), or a GitHub release zip — see below. Not an npm package.
- Role: read only (file association; the viewer never rewrites)
Install
# Windows (Scoop, self-owned bucket)
scoop bucket add jordannewell https://github.com/JordanNewell/bucket
scoop install curt-openwith
# then run install.cmd from the package folder to register the handler
# macOS / Linux (Homebrew, self-owned tap)
brew tap JordanNewell/tap https://github.com/JordanNewell/homebrew-tap
brew install curt-openwith
bash "$(brew --prefix curt-openwith)/libexec/mac/install.sh" # macOS
bash "$(brew --prefix curt-openwith)/libexec/linux/install.sh" # Linux
Manual installs come from
GitHub Releases.
Every installer registers the .curt handler for the current user only —
no admin, no sudo, nothing machine-wide; uninstall.cmd /
mac/uninstall.sh / linux/uninstall.sh remove it cleanly.
How it works
The generator reads the .curt file (BOM-aware: UTF-8, UTF-16LE/BE),
copies the bundled offline viewer next to your file as view-<name>.html,
injects the JSON body, and opens it in your default browser. The viewer
runs the injected body through the same validate-then-render path as a
file dropped on the page — a corrupt or non-.curt file gets a clean
"Could not read this file" error, never a half-rendered transcript. All
rendered content goes in via textContent; nothing in a viewed file can
execute, and the injected block is escaped so smuggled </script> markup
cannot break out.
One note from the repo's own security section: the generated view-*.html
contains a plain-text copy of the conversation on your disk. Deleting it
erases the copy; the viewer itself is fully offline and ships no
analytics.
Where to go deeper
Packaging internals (the reproducible CurtViewer.exe, the mac/Linux
generator, the CI QA matrix that runs real install/uninstall on mac and
Ubuntu runners) and the provenance note on how viewer/ syncs from the
dot_curt site live in the repo README:
github.com/JordanNewell/curt-openwith.