NEO ships two tagged releases in one day, plus a rolling tag the README never mentions
A novel-writing tool created by a novelist.
At a glance
- What is it?
- NEO is an Electron word processor for novelists that keeps every book as a folder of HTML chapters and JSON metadata on your own disk. The writing features are the point: three Enters for paragraph, section break and chapter, a Darlings shelf for cut passages, and an EPUB export built to KDP guidelines. The edges are in the packaging, the default library path on Windows, and an optional cover feature that sends your text to OpenAI.
- Who is it for?
- NEO fits an author who wants a manuscript on disk rather than in an account, and who will accept an Electron app with no sync and no subscription. Three things to decide before you start a novel in it.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository received new commits within the last day.
- What is it written in?
- Mainly JavaScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 3, 2026, and from our analysis. They are not legal advice.
Editorial analysis
Two tagged releases on one day, and a third tag that is not a version
The release history is denser than a hobby project usually looks. v1.2.7 was tagged on 2026-10-02 at 14:02 and v1.2.9 at 17:49 the same day, with no 1.2.8 appearing among the recent tags, so two releases landed inside four hours. A third tag from the previous day is named `pocket-latest` and is labelled as the latest Pocket build. That is a rolling channel name rather than a version, which is what a separately distributed build deserves, and the repository holds a `pocket/` directory at the top level to match. The download section of the page says nothing about Pocket at all, and describes only the macOS dmg and zip, the Windows installer and portable executable, and the Linux AppImage. So a build channel is shipping under a tag that the instructions do not mention, which is the kind of gap worth asking about before you rely on it.
Turning on cover art is what sends your manuscript to OpenAI
Every new book starts with a seeded abstract cover, drawn from six art styles and six type templates using typefaces bundled with the app, so nothing is required to get going. The optional route is different. You get an OpenAI API key and paste it into a Cover Art dialog, and once a story passes 1,000 words the app can read it and paint an abstract cover from the text, generated in the background for roughly a penny a picture. That is the trade: the manuscript leaves your machine for a third party the moment you enable it. Two details are handled sensibly. The key is stored encrypted in the app's own settings and never in the library folder, and the title and author are always set in real type over the top, so the lettering is not left to a generated image. A re-roll control re-draws the type and colours or paints again, and you can switch back to the seeded look at any time.
On Windows the default library path lands wherever OneDrive is already watching
The library is a plain folder, and its default location is Documents. On Windows that is written as `Documents\NEO Library`, and the page points out the consequence immediately: if OneDrive backs up your Documents folder, your books are in OneDrive too. That is helpful for people who want it and a surprise for people who do not, and it happens before any setting is touched. A menu entry moves the library anywhere. A second Windows wrinkle is documented next to it. With Controlled folder access switched on in Windows Security, the system will not let the app write into Documents at all; the app says so when it starts, and you either allow it there or choose another folder. So the failure mode on Windows is a startup message rather than a silent save failure, which is the better of the two.
The backup ring is two weeks of daily zips and nothing longer
Saving is continuous, and there is a second line of defence underneath it: daily zip backups kept for two weeks. Everything is stored as plain files, one folder per book, chapters as readable HTML and metadata as JSON, so a text editor is a valid client. Two weeks is the whole retention story. For a manuscript that took a year, that is enough to survive a bad afternoon and not enough to survive a bad month, so the page points at putting the library folder on iCloud for extra safety. There is also a one-keystroke route out: a shortcut emails copies of your work in progress to yourself, and a separate feature emails a timestamped PDF snapshot with a SHA-256 fingerprint of the text in the body, described with a shrug as something that might come in handy someday.
The build list in the README skips one of the four packaging targets in the manifest
Building installers is described in one sentence: install `electron-builder` into dev dependencies yourself, then run `npm run package` for macOS, or the mac, win or all variants. The manifest has a fifth spelling the page does not name. Alongside `package`, `package:mac`, `package:win` and `package:all`, there is `package:linux` wired to `electron-builder --linux`, and `package` is defined as an alias for `package:mac` rather than for every platform. Output lands in `dist/`. Running from source is four commands and needs only Node.
git clone https://github.com/hughhowey/neo.git
cd neo
npm install
npm startNote that `electron-builder` is not a declared dependency in the manifest shown here, which is why the page tells you to add it first. A contributor who follows the page exactly gets a macOS build by default and has to know the Linux spelling to get the AppImage.
macOS builds are notarized and hardened; the Windows target has no arm64 build
The build configuration is worth reading for what it leaves out. On macOS, hardened runtime is on, notarization is on, and one entitlements file at `build/entitlements.mac.plist` is used both for the app and for inherited child processes. Gatekeeper assessment is off, which is the setting that lets a notarized app run without the user approving an unidentified developer prompt. Two targets are produced for two architectures, dmg and zip, each for arm64 and x64. Windows is configured differently: an NSIS installer and a portable executable, and both are x64 only. There is no arm64 target for Windows in the configuration, so a Windows on ARM machine is not covered by the published installers even though the mac side is covered on both architectures.
Two of the named tests guard exactly the typography the page promises
The manifest carries five test entry points and a coverage variant, run on the built-in Node test runner. Two of them are named after features rather than internals: `test:dashes` and `test:spellcheck`. The dashes test lines up with a specific claim on the page, that em dashes, true ellipses and curly quotes sort themselves out as you type. Spellcheck has its own pair of top-level files, one script and one worker, which matches the promise that spellcheck runs only when you invoke it rather than marking the page as you write. There is also an end-to-end script that runs under Electron rather than plain Node, which is the only test in the list that needs the app window. Linting is oxlint with a configuration file at the root. Two entries at the top level are less usual: a directory called Claude outputs, and an AGENTS.md file.
Binding a shelf into one book is what makes the EPUB export worth having
Export offers EPUB 3 with a table of contents built to KDP guidelines, Word, PDF with page numbers and bookmarks, HTML, markdown and plain text. The interesting control is one level up. Right-clicking a shelf offers a bind into one book action, for an omnibus, a trilogy or a collection. Hovering the bound shelf shows faint versions of the pages a published book carries, in their proper places: copyright, dedication, epigraph, prologue, epilogue, acknowledgments and about the author. A small plus before each title opens a Part. Click any of those pages and type it as it will print, and a prologue or epilogue opens in the editor like any other story. The bound result exports as one file with a single cover and one table of contents, and chapters can number straight through, and unbind is offered at any time.
Editorial conclusion
NEO fits an author who wants a manuscript on disk rather than in an account, and who will accept an Electron app with no sync and no subscription. Three things to decide before you start a novel in it. Enabling cover art sends the story text to OpenAI, and the seeded covers are the free alternative, so decide that on day one rather than at export. The Windows default library path sits under Documents, which means OneDrive may already be syncing your books. And the backup ring is two weeks of daily zips, so put the library somewhere you back up yourself. Import is described by its author as still rough, so migrate early rather than the week you need the file.
Frequently asked questions
Where does NEO keep my manuscripts?
In a library folder on your own disk, one folder per book, with chapters stored as readable HTML and metadata as JSON. The default is a NEO Library folder inside Documents, and File, then Library Folder, moves it anywhere you like.
Does NEO need an account or a subscription?
No. The app runs locally, there are no accounts or subscriptions, and it is free. Work in progress is saved as plain files on your disk.
Does NEO use AI to write or check my text?
Only for cover art, and only if you enable it. You paste an OpenAI API key into a Cover Art dialog and the app can paint an abstract cover from a story once it passes 1,000 words, for about a penny a picture. New books get a seeded abstract cover with no key at all.
What import formats does NEO accept?
Existing .docx, .txt and .md manuscripts, with chapters and scene breaks detected automatically. The page calls the import still a bit rough and expecting to need tweaking, and says it tries to lift the title out of the body text.
How do I get NEO on Linux?
Download the .AppImage, make it executable with `chmod +x`, and run it. On Ubuntu 24.04 and newer it may complain about a sandbox, in which case run it with `--no-sandbox`. The library defaults to a folder under Documents there too.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/hughhowey-neo)