Dnote is a free, open-source, single-binary command line notebook for developers who want their notes kept as plain files they own rather than inside a proprietary hosted service.
What it is
Dnote is a notebook that lives in the terminal. It is written in Go and ships as a single binary with no dependencies, and it has been maintained under the Apache-2.0 licence since 2017. Notes are organised into "books" — a book is simply a named collection such as linux — and the whole notebook is stored in one SQLite file that is portable, searchable, and completely under the user's control. An optional self-hosted server adds synchronisation between devices and exposes REST API access to the same notes.
The problem it solves is the split between quick terminal note-taking and durable, portable storage. Taking a note while working in a shell usually means leaving the shell, pasting into a hosted note app, or dropping text into a scratch file that is never searchable again. Dnote occupies the ecosystem of developer tools and personal knowledge bases as the piece that replaces ad-hoc text files and closed, account-bound note services. Rather than a hosted product, it provides a local notebook in one SQLite file plus an optional server the user runs, so the notes remain readable without any vendor and the sync service is a choice rather than a requirement.
Key capabilities
- Add notes from the shell with
dnote add linux -c "Check disk usage with df -h", or omit -c to launch the editor instead.
- Read a book with
dnote view linux, listing the notes collected under that book.
- Run full-text search across notes with
dnote find "disk usage".
- Synchronise between devices with
dnote sync, backed by an optional self-hosted server.
- Store everything in one SQLite file that is portable and searchable, with no external database.
- Install and run as a single binary with no dependencies on Linux, macOS, FreeBSD, and Windows.
- Run the optional server as a binary with SQLite embedded, requiring no database setup, or as the
dnote/dnote:latest container image, which also provides REST API access.
Who uses it and how
- Individual developers on Linux, macOS, FreeBSD, or Windows who install through the shell script, Homebrew, or a downloaded release binary and keep notes beside their work.
- Developers who keep separate books for separate subjects — a
linux book alongside others — and retrieve entries by browsing a book or by full-text search.
- Self-hosters who want notes on more than one machine and therefore run the optional server themselves.
- Operators deploying the sync server as a container with
dnote/dnote:latest on port 3001, mounting ./dnote_data:/data so the SQLite data survives restarts.
- Users who need programmatic access to their notes and use the server's REST API rather than the CLI alone.
Getting started
Install on Linux, macOS, FreeBSD, or Windows with curl -s https://www.getdnote.com/install | sh, or on macOS with brew install dnote, or by downloading a binary from the releases page. The optional sync server runs from a compose.yml using the dnote/dnote:latest image with docker-compose up -d, or from a manual binary installation described in the documentation.
How it compares
No comparable tools are named in the facts supplied here, and no list of paid products it replaces is provided, so Dnote stands alone in this registry. Its position is defined by its own terms: Apache-2.0 licensing, a local SQLite file the user controls, and an optional self-hosted server instead of a hosted account.
When to use it — and when not to
Choose Dnote if a terminal-first notebook in a single portable SQLite file fits how you work, and if you are willing to operate the optional sync server yourself when you need notes on several devices. The server needs to be run and its data volume managed, though it embeds SQLite and requires no separate database, and nothing in the supplied documentation describes encryption of the notes file at rest. Users who do not want to run any server, or who need a graphical or non-CLI interface, should look elsewhere, since the project as documented here is a command line tool with notes held in one file.
project readme (upstream, from github) — read inline


Dnote is a simple command line notebook. Single binary, no dependencies. Since 2017.
Your notes are stored in one SQLite file - portable, searchable, and completely under your control. Optional sync between devices via a self-hosted server with REST API access.
# Add a note (or omit -c to launch your editor)
dnote add linux -c "Check disk usage with df -h"
# View notes in a book
dnote view linux
# Full-text search
dnote find "disk usage"
# Sync notes
dnote sync
Installation
# Linux, macOS, FreeBSD, Windows
curl -s https://www.getdnote.com/install | sh
# macOS with Homebrew
brew install dnote
Or download binary.
Server (Optional)
Server is a binary with SQLite embedded. No database setup is required.
If using docker, create a compose.yml:
services:
dnote:
image: dnote/dnote:latest
container_name: dnote
ports:
- 3001:3001
volumes:
- ./dnote_data:/data
restart: unless-stopped
Then run:
docker-compose up -d
Or see the guide for binary installation.
Documentation
See the Dnote doc.