A notes and snippets manager for developers, on the desktop. Write a snippet once, find it by tag or by full text, and paste it into any application from a global shortcut.
Search it, narrow it by tag, open it — and from any application, Ctrl+Alt+P brings up the
palette, where Enter copies and the window steps aside:
Everything stays on your machine, encrypted with a passphrase you choose and type once at launch. Nothing is uploaded, there is no account, and the application works with the network off.
| Feature | What it gives you |
|---|---|
| Quick paste | Ctrl+Alt+P from any application: search a snippet, Enter copies it and the window steps aside |
{{fields}} |
psql -h {{host}} -p {{port=5432}} asks for its values before landing in the clipboard |
| Keyboard canvas | arrows to move, Enter to open, C to copy, P to pin, X to select, Del to trash |
| Todo lists | a second kind of note: an ordered, tickable list instead of a body |
| Trash | deleting is undoable, and reversible for 30 days |
| Bulk actions | select several notes, then move, tag, export or trash them in one go |
| Tag management | rename, merge or drop a tag across the whole library |
| Attachments | drop a file on the editor or paste an image; open it, save it elsewhere, preview it inline |
| Import / export | a .devnotes archive both ways, attachments included — everything, one space, or the selection |
| Copy as Markdown | the selection rendered for a pull request, a ticket or a chat message |
| Encrypted at rest | one passphrase at launch; notes and attachments sealed on disk, exports optionally too |
Syntax highlighting covers eighteen languages, the interface is available in French and English, and it ships with a light and a dark theme.
DevNotes asks for a passphrase the first time it runs, and once at every launch after that. It is what opens the library, and it is never stored anywhere — not in a keychain, not behind a "remember me". While the application runs the key lives in memory and nowhere else.
What is sealed on disk: note titles, bodies and sources, checklist items, space names,
{{field}} values, attachment file names, and the attachment files themselves.
| What | How |
|---|---|
| Key derivation | Argon2id, 64 MiB and 3 passes, over a random salt kept beside the database. The passphrase seals the library key rather than being it, so you can change it from Preferences → Security without re-encrypting anything |
| Encryption | AES-256-GCM, a fresh nonce per write; the authentication tag refuses a tampered value rather than decrypting it into nonsense |
| Not sealed | tags, dates, ids and the links between rows — what the database filters, sorts and joins on. Sealing them would mean loading the whole library to answer a query, and tag names are the visible cost of that trade |
An export is the one file meant to leave the machine, so it is offered a key of its own: give it a passphrase and it travels sealed, attachments included, or write it in the clear for a file any DevNotes can read. The application asks which, every time, and says which one it wrote.
Two files, and they only mean anything together — the database is sealed, and the key file is what opens it:
| Windows | %APPDATA%\com.devnotes.app\ |
| Linux | ~/.local/share/com.devnotes.app/ |
In it: devnotes.sqlite3, vault.json, attachments/, and preferences.json.
DevNotes takes a rolling copy at launch, at most one a day, and keeps the last three in
backups/. Each one is a full library — database and key file together — so restoring is
copying a folder back. It is written with VACUUM INTO rather than by copying the file,
because under WAL the database on its own is not a consistent snapshot. Turn it off in
Preferences → Security if you would rather it did not.
DevNotes also checks the database is still sound every time it opens one. If it is not, it
says so rather than starting on it, and offers to set it aside: the database, its
attachments and whatever could still be rescued from it move into damaged/, and the next
unlock starts on a fresh library. Your passphrase does not change — so what was set aside,
like the copies in backups/, still opens with the one you already have.
DevNotes runs on Windows and Linux. There is no macOS build: it cannot be tested here, and Gatekeeper wants a paid Apple Developer account with no free way around it on recent versions — shipping for a platform that can be neither tested nor distributed would be a promise nobody can keep.
Download from the latest release.
Windows
| File | Pick it if |
|---|---|
devnotes_<version>_x64-setup.exe |
You just want DevNotes installed. This is the one to take. |
devnotes_<version>_x64_en-US.msi |
You deploy software through group policy or a management tool. |
devnotes-<version>-windows.exe |
You want no installer at all — run it from where it lands. |
Linux
| File | Pick it if |
|---|---|
devnotes_<version>_amd64.AppImage |
Any distribution, nothing to install. |
devnotes_<version>_amd64.deb |
Debian, Ubuntu and derivatives. |
devnotes-<version>-1.x86_64.rpm |
Fedora, RHEL and derivatives. |
devnotes-<version>-linux |
The bare executable, no packaging. |
chmod +x devnotes_*_amd64.AppImage # make the AppImage runnable, then launch it
sudo apt install ./devnotes_*_amd64.deb # Debian and Ubuntu — pulls in what it needs
sudo dnf install ./devnotes-*.x86_64.rpm # Fedora and RHELOn Windows, the installer and the MSI are opened by double-clicking them; the standalone
.exe needs nothing at all.
Updates are offered inside the application, so you only download by hand once.
Windows shows a SmartScreen warning the first time — choose More info, then Run
anyway. It is about the identity of the publisher, not about the file: DevNotes has no
code-signing certificate, while its updates are signed with minisign and verified before
they install. Every release also publishes SHA256SUMS.txt.
You need Node.js 24 — the version .nvmrc pins, and what CI installs — Rust through rustup, and
Tauri's system dependencies for your OS.
npm install
npm run tauri devFront-end changes hot-reload; Rust changes trigger a slower automatic recompile. CONTRIBUTING.md has the rest: the full script list, what CI checks, and the conventions that are load-bearing.
- Contributing — how to build and test, what CI checks, and the handful of conventions the compiler cannot enforce. Read it before your first change.
- Architecture — front-end structure, state and data-access patterns, i18n, theming, the Angular ↔ Rust boundary, and testing conventions.
- Releasing — how a version gets cut, and how release notes are sorted.
- Changelog — what changed, and when.
docs/scratch-mockup-v2.html— the static UI mockup used as the visual reference. Not code to run or import.
Angular 22 on the front — standalone components, signals, zoneless change detection — and Rust with Tauri v2 as the native shell, persisting to an embedded SQLite database through Diesel. The two halves are filed by subject rather than by technical nature, and the IPC surface between them is generated from the Rust signatures.
DevNotes is free software under the GNU General Public License v3.0. You may use, study, share and modify it; a distributed fork has to stay under the same terms and ship its source.
Contributions are accepted under that same license: opening a pull request means you agree to have your work distributed under the GPL-3.0.
